Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Ha 8 Bit-es LCDt használnál, az I2C lcd helyett az is jóval gyorsabb lenne!
Sajnos a grafikához és a hang keltéshez kellenek a gyors hardverek! A hozzászólás módosítva: Júl 27, 2019
A méret nem számít, a sebesség a fontos a loop while ciklusában.
Tehát a sinus(ido, idomax)-al hívom meg, de ő a (sinusfg[ido * 360 / idomax])-t fogja végrehajtani? Köszönöm a segítséget, ha ez így van pont ott gyorsul ahol kell!
Szia.
Itt, a step down kapcsolási rajzán közösnek tűnik a föld. Köszi a többieknek is. ![]() A hozzászólás módosítva: Júl 27, 2019
Így is úgy is kell mellé egy nanot tennem, szerintem az fogja megcsinálni a vezérlést...
A meghívások maradnak, úgy ahogy eredetileg voltak!
Természetesen megnéztem, hogy itt érdemes gyorsítani. Mivel így elmaradnak a függvény hívások és a hozzá tartozó verem műveletet, valamivel gyorsabb lesz.
Köszi, csak úgy hirtelen, hogy nagyjából lehessen érteni miről szól a dolog.
Ez a zene még csak mono, egy csatornás?
Igazából az audio.h 88100-ra állítja a mintavételt, ez stereo*44100. A 100 nem tudom mi mellette, de levettem 50-re, így minha a latency csökkent volna.
Egyébként jól látod a problémát, szerintem én ugyanazt a mono jelet kiszámolom mindkét oldalra, feleslegesen, csak ugye nem kezeltem még ezelőtt buffert, lehet minden második index a jobb és a bal csatorna... (Ha a felvett zenére gondolsz az igen, csak ugye 4 hang szólal meg egyszerre, és azok különböző burkológörbékkel vannak vezérelve, amik ugye hangerőértékek egész számokban, amik változnak, és van megszorozva velük a jel, így sokszor darabosak, de ami tök vicces a pich görbe, a generátortimemaxhoz adódik hozzá, így a frekvencia változik darabosan, ezért olyan érdekes nyöszörgős, tulajdonképpen hiba hiba hátán... ) A hozzászólás módosítva: Júl 27, 2019
Ha még a DUE mellé akarsz rakni arduinot az nagyon bonyolítaná a rendszeredet!
Szerintem jobban járnál egy ilyen rendszerrel: Bővebben: Discovery kit with STM32F407VG MCU Leírás: [PDF]Discovery kit with STM32F407VG MCU - STMicroelectronics 168MHz-es és már rajta van a hangrendszer is: 6.5 On-board audio capability The STM32F407VG microcontroller uses an audio DAC (CS43L22) to output sounds through the audio mini-jack connector. The STM32F407VG microcontroller controls the audio DAC through the I2C interface and processes digital signals through an I2S connection or an analog input signal. • The sound can come independently from different inputs: – ST-MEMS microphone (MP45DT02): digital using PDM protocol or analog when using the low pass filter – USB connector: from external mass storage such as a USB key, USB HDD, and so on – Internal memory of the STM32F407VG microcontroller • The sound can be output in different ways through the audio DAC: – Using I2S protocol – Using DAC to analog input AIN1x of the CS43L22 – Using the microphone output directly via a low-pass filter to analog input AIN4x of the CS43L22 És arduino alól is lehet programozni. A hozzászólás módosítva: Júl 27, 2019
És ez a DAC jobban szól a 2*24Bit-jével:
Bővebben: DAC CS43L22
Eredetileg egy Arduino Nano-Vs1053 párosítással indultam. Ugye a Nano szkennelte a billentyűzetet, vezérelte a kijelzőt és a midi be és kimeneteket. Viszont a vs1053-nak 3hónap próbálkozás után sem sikerült a DAC-jának pufferét közvetlenül elérnem. Mindig úgy kezdődött a dolog, hogy állítsak össze egy wav fájl fejlécet, majd utána küldözgessem az adatokat. Mindez tök jól hangzik, de nem sikerült megoldanom. Természetesen mp3 fájlokat kiválóan lejátszott sd kártyáról, de még a midi hangeszközt is midi fájlfejléc után lehetett elérni, ami kifejezetten nem lett realtime. Ráadásul ott is a 1053-nak kellett volna számolni a dolgokat... Utána szétnéztem, hogy lehetne-e a vs1053-at közvetlenül felprogramozni, és nagyon jó kis ingyenes program van hozzá, nagyon jó példákkal, csak ugye meg kell venned egy fejlesztőeszközt, hogy feltöltsd rá a mikrokódot, vagy egy ilyet:vs1053devboard
És ekkor döntöttem úgy, hogy olyan eszközt keresek, ahol nem kell olyan dolgokkal foglalkoznom, amivel nem akarok, hanem tulajdonképpen közvetlenül elérhető a DAC pufferja. Így választottam a Due-t Az általad javasolt eszközön fogalmam sincs, hogy kezdenék hozzá a fejlesztéshez. Tulajdonképpen már múltkor is rákerestem, de még az árát sem találtam meg... A paraméterei kiválóak egyébként, de félek hasonló problémákba ütköznék mint a legelső esetben...
És mért nem ezt próbáltad?:
Bővebben: VS1053 MP3 Shield Van hozzá bőven arduino támogatás. És jóval olcsóbb. A SPI buszon keresztül rávehető MIDI lejátszásra is, és feltölthetők a Pluginek is. A hozzászólás módosítva: Júl 27, 2019
Ez van. Nem tudom elérni a puffert közvetlenül. Erről írtam. És tulajdonképpen feladtam. Három hónapig azzal vacakoltam, hogy ne mp3-om lejátszó jöjjön ki belőle, de nem sikerült...
A hozzászólás módosítva: Júl 27, 2019
Megcsináltam a #define-t és érezhető a gyorsulás, és ráadásul a sztereó puffer miatt, aminek minden páros illetve páratlan indexei a jobb és a bal csatorna, tulajdonképpen kétszer számoltam ki ugyanazt. Tehát most négyszer annyi oszcillátor szól négy hang polifóniánál, és Audio.begin(88200, 50) beállításnál. Köszönöm nagyon hálás vagyok a segítségért!
Hát nem tudom engedik-e a modik, de rögtönöztem neked egyet, de ugye nem írtam át az előző hangszínt sokat, mert ugye változókban vannak a paraméterek, de ez már sztereó, és több hullám szól egyszerre, jobb és bal oldalt másképp
A hozzászólás módosítva: Júl 27, 2019
Akkor lenne még gyorsítási tippem.
Ezeket a 4 páros vizsgálatot is össze vonhatod:
Ez a zene már sokkal jobb, érződik a streo hatás. A hozzászólás módosítva: Júl 27, 2019
Ezeket ajánlom, ha használható szintit szeretnél, jól szólnak.
Bővebben: Link Bővebben: Link Bővebben: Link Idézet: „Audio.begin(88200, 50)” Ezzel csak a puffer méretet csökkentetted.
Igen, mert van egy kis késés a reakcióban. Szerintem ezzel gyorsabban reagál a midi inputra, mivel kevesebbet számol ki egyszerre. De lehet tévedek, de érzésre olyan, mérni nem mértem meg. Meg ugye látszik, hogy 1024 alá nem is megy... Viszont ha túl kevésre állítom be, akkor szétesik a hang...
Én sinus táblázat méretnek nem 360-at használnék, hanem 2 egész hatványát, azaz 256, 512, 1024... stb méretet. A táblázat kiolvasásához történő frekvenciától függő lépésköznek pedig egy 32 bites fixpontos számot, ahol az egészeket annyi biten tárolnám, ahány bites a táblázat méretem (pl. 256 elemű esetén 8 bit egész + 24 bit tört, 1024 elemű esetén 10 bit egész + 22 bit tört). Így egyetlen összeadás, egy bit shiftelés és egy táblázat olvasás elegendő lenne egy sinus hullám előállításához, ráadásul a frekvencia értékét is sokkal nagyobb pontossággal lehetne megadni.
Köszönöm. Én is úgy láttam, hogy a mintaprogramokon is ilyen tömböket használtak. Próbálom megcsinálni!
Ezt a megoldást láttam már adatlapokban is, de nem értettem a lényegét. Így ezzel a levezetéssel már megvilágosodtam! Köszönöm!
A hozzászólás módosítva: Júl 28, 2019
Nincs rá valami mintád? Nem boldogulok vele.
Már fixpontos típust sem találok, nem hogy mit adjak össze és toljak el... Segítséged köszönöm!
Semmilyen fixpontos típus nem kell hozzá, egész számokkal kell csak dolgozni. Mindössze értelmezés kérdése, hogy a lenti példán a 10. bit után teszed képzeletben a kettedes pontot:
A hozzászólás módosítva: Júl 29, 2019
Bocsi! De ezt a gondolatmenetet nem igazán értem!
Mi értelme van bonyolítani és a felső 10 Biten dolgozni: [sinewave1ptr >> 22]; ? Egyszerűbb lenne az index növelést eltolni jobbra: uint32_t sinewave1freq = 0x40000000 >> 22; // f = fmintavétel / 4 De ezt sem értem, hogyan jött ki ez a szám?: sinewave1freq = 0x40000000 Túl nagynak találom.
Pedig van értelme.
1. Nem kell foglalkozni a sinewave1ptr túlcsordulásával 2. Így lehet a legnagyobb felbontással a frekvenciát megadni Ez a szám pedig úgy jött ki, hogy minden negyedik összeadás után ki fog nullázódni a sinewave1ptr és így a sinus táblázat elejére fog visszatérni.
A dolog működik, kezd alakulni, bár még egy kis szépséghibája van...
A frekvencia tényleg sokkal finomabban állítható, mint az én megoldásomon. Csak azok a tüskék ne lennének ![]() ui: Most nézem azok a max és a min helyek... A hozzászólás módosítva: Júl 30, 2019
Kicsit túl nagyok az értékek kiszaladtunk az int16-ból. Most már jó. Köszönöm!!!!
Kalibrálhatom újra az egészet ![]() A hozzászólás módosítva: Júl 30, 2019
|
Bejelentkezés
Hirdetés |