Hang szintetizátor atmega48
Békét minden, elvtársak! Ez megint unom. Ki az elveszett nekem. Örüljetek, barátaim, most itt vagyok, és szeretnék nyújtani a nyilvánosság figyelmét az új kézműves gyártott fényében inspiráció és unalom - szintetizátor ATmega48.
Az egész kezdődött azzal a ténnyel, hogy én alapvetően ihlette „Little fúga” Bach. Aztán jött a hétvége, amely, mint már tudjuk, felzárkózni az én unalom, mint az összes többi nap a héten, így tolódik a gyártás különféle eszközök. És most úgy döntöttem, hogy terjeszteni valamit csinálni egy kis szintetizátor maketke játszó kis fúga. Tehát az üzletet!
Eleinte úgy döntöttem, hogy meghatározza, milyen a jövőbeli eszköz, amely kérte, anyám (Megvan zenész), amely oktáv leggyakrabban a legtöbb dallamok. Kiderült, hogy közülük három - kis, első és második. Persze, a legtöbb az összes érdekelt a mennyiségi jellemzői a zene, ez van. E. frekvenciákat. Szerencsére, egy oldal minden szükséges találták nagyon gyorsan. Azt találtuk, hogy a legmagasabb várható jegyzet - si második oktáv - frekvenciája csak 988 Hz-es (kb), hogy az egész skála sikeresen lehet generálni PWM DAC (Igen, ez nem egy téglalap, mint a legtöbb ilyen szerkezetek, mint az önkényes minta). Ezekből a megfontolásokból kiderül, a következő séma szerint:
A hardver PWM csatorna van kötve egy egyszerű szűrő - integráló RC-lánc, amelynek vágási frekvenciája körülbelül tizenöt kilohertzben (ténylegesen mi volt a keze - amely balra). További megéri a klasszikus push-pull repeater, imbolyogva pyatidesyatiomny hangsugárzó (ő is feküdt a ládákat időtlen idők óta). C4 eltávolítja DC összetevőt, hogy elkerülje a személyi füsttel. LED ragadt hibakeresés céljából, és ez így marad - most jegyzeteket olvasni egy másik megjegyzés.
Nos, most akkor folytassa közvetlenül a generációs hangokat. Mint már említettük, azt választotta WT-szintézist - .. Azaz, használ egy sor minták, alakját meghatározó jel. Elvileg azt tervezi, hogy kivonat egy szerv minta és használni, de abban a szakaszban a hibakeresés, varrtam egy normális sinus.
Egy minta, sok zenével. Hogyan változtassuk meg a pályán? Vannak két klasszikus módszer - részleges válogatás a tömb állandó mintavételi sebesség és resample a következetes mintát. Képekben:
Kiválasztása egy pontot minden második, hogy gyakoriságának növelése két alkalommal:
Növeli a mintavételi sebesség kétszerese, gyakoriságának növelése két alkalommal:
Egyértelmű, hogy változtatni a frekvenciáját egész számú többszöröse az első módszer a legegyszerűbb. De megjegyzi az oktáv aránya nem egész. És mivel a kialakulását skála nincs más választása, hogyan kell alkalmazni a második - a mintavételezési frekvencia időzítővel, és a változás lehet sokkal szabadabb. De közötti mozgáshoz oktáv elég logikus, hogy alkalmazni csak részleges mintavétel a tömb - sőt gyakorisága jegyzetek a szomszédos oktáv megkülönböztető nevet kétszer. Így kell játszani egy adott jegyzet a következő információk szükségesek:
1. Növeli a számláló tömb. Válasszon minden eleme - egy megjegyzés, hogy az eredeti oktáv válassza másodpercenként - megkapjuk az azonos feljegyzés egy oktávval magasabb, minden negyedik - két oktáv magasabb, és így tovább ..
2. Valójában a számát. Megkérdeztem a memória tömb, ahol a számok a jegyzetek rögzített önkioldó vezérlésére a kimeneti érték a DAC.
3. A késleltetés feldolgozása előtt az alábbi megjegyzéseket.
Úgy látszik, hogy a mintát kell venni a legalacsonyabb oktáv tervezett, mert a legegyszerűbb módja, hogy növelje a frekvencia. Ahhoz, hogy engedje egy oktáv, interpoláció van szükség, de ez nem olyan egyszerű.
Önmagában ez szükséges oreintirovatsya oktáv a legmagasabb hangot, és itt miért. Shima frekvencia körülbelül 32 kHz. Ebből következik, hogy ahhoz, hogy a mintavételi frekvencia 16 kHz feletti, általában ez értelmetlen. De változik a mintavételi frekvencia használható közötti átmenet jegyzetek egy oktáv, míg a legmagasabb frekvencia megfelel a legmagasabb hangot. Ez egy korlátozó tényező. Ie mintaként kialakításához szükséges kis oktáv B. Számítás azt mutatja, hogy a maximum 16 kHz mintavételezési frekvenciájú közelébe kell tartalmaznia 64 pont.
Összesen I használt három időzítők: nyolc-T / C0 alkalmazunk PWM generátor, T / C2 üzemelteti (állagában a mintavételi frekvencia), és shestnadtsatibitny T / C1 foglalkozik olvasási kotta és konfigurálása az első a két időzítő, és magát (beállítja növekmény tömb megfelelő minta az oktáv, a kívánt időtartam T / C2 magának). A firmware van írva C AVR-Studio + WinAVR (AVR-GCC).
Mindent a gyűjtemény (a tömítés nem alakult ki)
Octave használom mindhárom, és megjegyzi mindegyik (kivéve korpás és lakások) tizenkét. Ie számozás, és hogy a másik lehet megúszni négy bit, amely lehetővé teszi, hogy gondoskodjon a primitív tömörítés, tele az egészet egyetlen bájtot. De idejére a jegyzeteket adtam becsületes két bájt. így A dallam adott tömb bontották tömb három bájt - a MSnibble növekmény megfelelő oktáv, a junior számát. A következő két bájt - a hosszt a kullancsokat. Marker végén - három nullát.
De nyilvánvaló, hogy a karok lefordítani dallam a fenti formátumban elég nehéz, ezért írtam egy egyszerű elemzőt, amely létrehoz egy sor egyszerűsített sishny latin zene felvétel (konzol alkalmazás Kódblokkok + MinGW). Például az elején egy kis fúga néz ki (itt én is segített anyámnak):
Ie <октава><нота>[Sharp / lapos]<длительность (знаменатель)>[Dot (meghosszabbodnak a felére)]
Források / firmware bináris és az átalakító a kamrában.
Általában a mai. Szeretném kifejezni hálámat anya segítségért zenei kérdésekben.