Analóg hangszintézis a számítógépen: 10 lépés (képekkel)
Analóg hangszintézis a számítógépen: 10 lépés (képekkel)
Anonim

Mint a régi analóg szintetizátorok hangja? Szeretnél játszani egyet a saját idődben, a saját helyeden, ameddig csak akarod, INGYEN? Itt válnak valóra legvadabb Moog -álmaid. Elektronikus felvételi előadóvá válhat, vagy csak hűvös, trükkös hangokat adhat ki az MP3 -lejátszón. Mindössze egy számítógépre van szüksége! Mindezt az LTSpice nevű szabad áramkörű szimulátor varázslatán keresztül végezzük. Most már tudom, hogy valószínűleg azt mondja, hogy "Gee willikers, Tyler, semmit sem tudok a kör szimulátor futtatásáról- ez keményen hangzik!". Ne aggódj, Bunky! Könnyű, és adok neked néhány sablont, amelyekkel kezdheted és módosíthatod, hogy bármilyen furcsa hangot adj. Nem biztos, hogy megéri az erőfeszítést? Itt egy link a lejátszásra kész hangfájlhoz (ez az "ible" 7. lépésében található "compos_1.asc" -ból készült), amelyet kipróbálhat. A letöltési idő csökkentése érdekében.wav fájlból mp3 -ra konvertáltam. https://www.rehorst.com/mrehorst/instructables/composition_1.mp3 Van némi mély basszus, ezért hallgassa meg fejhallgatóval vagy jó hangszóróval. Ha tetszik, amit látsz, szavazz rám! Megjegyzés: Csatoltam az LTSpice sematikus fájljait, amelyeket futtathat a számítógépén, de valamilyen okból, amikor megpróbálja letölteni őket, a nevek és a kiterjesztések megváltoznak. A fájlok tartalma rendben van, így a fájlok letöltése után csak módosítsa a neveket és a kiterjesztéseket, és működnie kell. A megfelelő nevek és kiterjesztések azokon az ikonokon láthatók, amelyekre kattintva letölthetők.

1. lépés: Először az első dolgok

Az LTSpice egy Windows program, de ne hagyd, hogy ez elkeserítsen. Wine alatt jól fut Linux alatt. Gyanítom, hogy nincs probléma a VMWare kliensben, a VirtualBoxban vagy más virtualizációs eszközökben való futtatással linux alatt, és valószínűleg Mac -en is. Töltse le az LTSpice for Windows (ugh!) Példányát itt: https://www.linear.com/ designtools/software/ltspice.jsp Telepítse. Mi az LTSpice? Ez egy időtartományú áramköri szimulátor, amelyet minden elektronikai rajongónak tudnia kell. Nem fogok részletes bemutatót adni arról, hogyan működik itt, de elmagyarázok néhány dolgot, amelyeket tudnia kell, ahogy haladunk. Egy figyelmeztető szó- könnyen lehetséges túl alacsony frekvenciák előállítása vagy túl magas a halláshoz. Ha ezt teszi, és drága hangszóróit nagy teljesítményű erősítővel hajtja, akkor a hangszórókat/erősítőket csak darabokra fújhatja. Mielőtt lejátszaná őket, MINDIG nézze meg a hullámformákat, és ügyeljen arra, hogy korlátozza a hangerőt, amikor először játszik le egy fájlt a biztonság kedvéért. A hangszórók kipróbálása előtt mindig jó ötlet, ha a fájlokat olcsón fejhallgatón keresztül, alacsony hangerővel játssza le.

2. lépés: Bemenet

A szimulátor bemenete sematikus diagram formájában van. Kiválasztja az alkatrészeket, a vázlatra helyezi, majd összeköti. Miután az áramkör befejeződött, mondja el a szimulátornak, hogyan szeretné szimulálni az áramkört, és milyen kimenetet szeretne. Vessen egy pillantást az ellenállások nevű sematikus ábrára. Látni fogja, hogy van egy áramkör, amely tartalmaz egy feszültségforrást, egy pár ellenállást, egy címkézett kimeneti csomópontot, egy földet és egy szöveges parancssort. Nézzük mindegyiket. Itt az ideje, hogy nyissa meg az alábbi linken található áramköri fájlt. KÖTELEZŐ, hogy egy földelés csatlakozik az áramkör legalább egy pontjához, vagy nagyon furcsa eredményeket kap a szimulációkból. Feszültségforrás: Ha feszültséget helyez az áramkörbe, meg kell mondania, hogy AC vagy DC (vagy valami bonyolultabb), mi a feszültség, a forrás "belső ellenállása", stb. Ezeket a paramétereket megadhatja a jobb egérgombbal kattintva a forráson. Valójában csak az egyszerű szimulációk ellenállására van szüksége. Ellenállások: Az ellenállások nagyon könnyen érthetők. Csak kattintson a jobb gombbal az ellenállás értékének beállításához. Hagyja figyelmen kívül az egyéb paramétereket, amelyek ott rejtőzhetnek. Címkézett bemeneti és kimeneti csomópontok: Csak az áramkör csomópontjainak felhasználóbarát nevei.- használjon olyan neveket, mint a "kimenet", "bemenet" stb. A szimulációs irányelv: a.tran utasítás megmondja a szimulátornak, hogyan szeretné az áramkört szimulálni. Ez egy időtartomány-szimulátor, ami azt jelenti, hogy különböző időpontokban elemzi az áramkört. El kell mondania, hogy mennyi lehet a maximális időlépés, és mennyi ideig kell a szimulációnak "áramkör-időben", nem pedig valós időben futnia. Ha azt mondja a szimulátornak, hogy futjon 10 másodperc áramköridő alatt, és a maximális időtartamot 0,001 másodpercre állítja, akkor az áramkört legalább 10 000 alkalommal (10 mp/0,001 sec) elemzi, majd leáll. Amikor a szimuláció fut, a feszültséget az áramkör minden csomópontjánál, valamint az egyes csomópontokba érkező és onnan érkező áramokat minden egyes lépésnél kiszámítják és elmenti. Mindezek az adatok elérhetők lesznek egy oszcilloszkóp -képernyőn megjelenített kijelzőn (a vízszintes tengely ideje, feszültség vagy áram a függőleges tengelyen. Alternatív megoldásként elküldheti a kimenetet egy.wav hangfájlba, amelyet lejátszhat egy számítógépen, írjon CD -re, vagy konvertálja mp3 -ra, hogy lejátszhassa az mp3 -lejátszón. Erről később …

3. lépés: Kimenet

A kimenet lehet a feszültség és az idő grafikus ábrája, a feszültség vs feszültség stb., Vagy egy szöveges fájl, amely minden egyes lépésnél egy csomó feszültségből vagy áramból áll, vagy egy.wav hangfájl, amelyet sokat fogunk használni ez utasítható. Töltse le és nyissa meg az "resistors.asc" fájlt. Kattintson a kis futóember szimbólumra (a képernyő bal felső része), és az áramkörnek futnia kell. Most kattintson az áramkör "OUT" címkéjére. A grafikus kimeneten megjelenik az "output" jelzésű feszültség az időt jelző vízszintes tengely mentén. Ez a földhöz viszonyított feszültség (ezért van szükség legalább egy földre minden áramkörben!). Ezek az alapok. Próbálja meg megváltoztatni az ellenállás egyik értékét vagy a feszültséget, majd futtassa újra a szimulációt, és nézze meg, mi történik a kimeneti feszültséggel. Most már tudja, hogyan kell futtatni egy áramköri szimulátort. Könnyű volt nem?

4. lépés: Most egy kis hang

Nyissa meg a "dizzy.asc" nevű áramkört. Ez egy furcsa zajtermelő, amely modulátort és néhány feszültségforrást használ CD minőségű (16 bit, 44,1 ksps, 2 csatorna) audio fájl létrehozásához, amellyel játszhat. A modulátor komponens valójában oszcillátor. A frekvencia és az amplitúdó egyaránt állítható, mint egy VCO és VCA egy valódi analóg szintetizátorban. A hullámforma mindig szinuszos, de vannak módok annak megváltoztatására- erről később. A frekvenciakorlátokat a jel és a tér paraméterei határozzák meg. A jel az a frekvencia, amikor az FM bemeneti feszültsége 1V, és a tér a frekvencia, amikor az FM bemeneti feszültség 0V. A kimeneti frekvencia az FM bemeneti feszültség lineáris függvénye, így a frekvencia félúton lesz a jel és a térfrekvencia között, ha az FM bemeneti feszültsége 0,5V, és kétszerese lesz a jelfrekvenciának, ha az FM bemeneti feszültség 2V. A modulátor amplitúdó modulálható az AM bemeneti tűn keresztül. A modulátor (oszcillátor) kimeneti amplitúdója megegyezik az AM feszültség bemenetére alkalmazott feszültséggel. Ha 1 -es feszültségű egyenáramú forrást használ, a kimeneti amplitúdó 1V lesz (ez azt jelenti, hogy -1 és +1 V között ingadozik). A modulátornak két kimenete van- szinusz és koszinusz. A hullámformák pontosan ugyanazok, kivéve, ha 90 fokkal kiesnek a fázisból. Ez szórakoztató lehet a sztereó audio alkalmazások számára. Van egy.tran utasítás, amely megmondja a szimulátornak a maximális időtartamot és a szimuláció időtartamát. Ebben az esetben az áramkör ideje (teljes szimulációs idő) = audio fájl ideje. Ez azt jelenti, hogy ha a szimulációt 10 másodpercig futtatja, akkor 10 másodperc hosszúságú hangfájlt kap. A.save utasítással minimálisra csökkenthető a szimulátor által mentett adatmennyiség. Általában minden csomópont feszültségét és az alkatrészekbe és azokból származó áramokat menti. Ez SOK adatot adhat hozzá, ha az áramkör bonyolult lesz, vagy hosszú szimulációt futtat. A szimuláció futtatásakor csak válasszon ki egy feszültséget vagy áramot a párbeszédpanel listájáról, és az adatfájl (.raw) kicsi lesz, és a szimuláció maximális sebességgel fog futni. Végül a.wave utasítás azt mondja a szimulátornak, hogy hozzon létre egy CD minőségű sztereó hangfájlt (16 bit mintánként, 44,1 ksps, két csatorna), és helyezze a feszültséget az "OUTL" értékre a bal csatornában, és az "OUTR" értéket a jobb csatornába. A.wav fájl 16 bites mintákból áll. A.wav fájl teljes skála kimenete (a minta mind a 16 bitje be van kapcsolva) akkor történik, amikor a kimenő feszültség pontosan +1 volt vagy -1 volt. A szintetizátor áramkörét úgy kell beállítani, hogy minden csatornán legfeljebb +/- 1V feszültséget generáljon, ellenkező esetben a.wav fájl kimenete "le lesz vágva", amikor a feszültség meghaladja a +1 vagy -1 V értéket. egy hangfájl, amelynek mintavételezése 44,1 ksps, szükségünk van a szimulátorra, hogy másodpercenként legalább 44, 100 -szor szimulálja az áramkört, ezért a maximális időtartamot 1/44, 100 mp -re vagy körülbelül 20 mikroszekundumra állítjuk be.

5. lépés: Más típusú feszültségforrások, más típusú hangok

Az analóg szintetizátornak véletlenszerű zajforrásra van szüksége. Zajt generálhat a "viselkedési feszültségforrás" (bv) használatával, és be- és kikapcsolhatja a "feszültségvezérelt kapcsoló" (sw) segítségével. A bv komponens használata zaj generálásához magában foglalja a feszültség képlet szerinti meghatározását. A zajképzés képlete a következőképpen néz ki: V = fehér (idő*X)*Y A fehér függvény véletlenszerű feszültséget hoz létre -0,5 és +0,5 V között, az aktuális időértéket magként használva. Ha az Y értéket 2-re állítja, +/- 1V lengést ad. Az X beállítása 1 000 (1e3) és 100 000 (1e5) között befolyásolja a zaj spektrumát és megváltoztatja a hangot. A feszültségvezérelt kapcsolónak néhány paramétert is be kell állítani egy.model utasításban. Több feszültségvezérelt kapcsolót és több modellt használhat, hogy mindegyik másként viselkedjen, ha akarja. Meg kell mondania a szimulátornak az "be" és "kikapcsolt" ellenállásokat, valamint a küszöbfeszültséget, amelyen kapcsol. Vh "hiszterézis feszültség". Állítsa valamilyen pozitív értékre, például 0,4 V-ra, és nem lesz kattanó hang, amikor a kapcsoló kinyílik és bezáródik. >>> Frissítés: itt egy még egyszerűbb módja annak, hogy zárt zajforrást hozzon létre- csak szorozza meg a zajfeszültséget egy impulzussal forrás- lásd alább az easy_gated_noise.asc.

6. lépés: Harangok, dobok, cintányérok, leszedett húrok

A harangok, dobok, cintányérok és pengetős húrok ütősek. Viszonylag gyors emelkedési és exponenciális bomlási idővel rendelkeznek. Ezeket egyszerű létrehozni szinuszos és viselkedési feszültségforrások segítségével, néhány egyszerű áramkörrel kombinálva. Nézze meg a "bell_drum_cymbal_string.asc" sematikus ábrát. Az impulzusos feszültségforrások az ellenállással, a kondenzátorral és a diódával létrehozzák a szükséges gyorsan emelkedő és lassú exponenciális bomlású hullámformákat. Ezek a kimeneti feszültségek modulálják a véletlenszerű zaj vagy szinuszhullám -forrásként beállított viselkedési források kimeneteit. Amikor az impulzusforrás feszültsége emelkedik, gyorsan feltölti a kondenzátort. A kondenzátor ezután az ellenálláson keresztül kisül. A dióda megakadályozza, hogy a feszültségforrás lemerítse a kondenzátort, ha a forrás feszültsége nulla. A nagyobb ellenállásértékek növelik a kisülési időt. Megadhatja az impulzusforrás felfutási idejét - a cintányér nagyon gyors emelkedési idővel rendelkező forrás. A dob is zajforrás, amely alacsonyabb frekvencián működik, és lassabb emelkedési idővel rendelkezik. A harang és a karakterlánc szinuszhullámú forrásokat használ, amelyeket impulzusforrások is modulálnak. A csengő magasabb frekvencián működik, és gyorsabban emelkedik, mint a karakterlánc. Futtassa a szimulációt, és hallgassa meg az eredményt. Vegye figyelembe, hogy a dob mindkét csatornában megjelenik, míg az összes többi hang jobb vagy bal csatorna. A dob kimenetén lévő két ellenállás felelős a hang mindkét csatornába történő bejuttatásáért.

7. lépés: Összerakás

Rendben, most látta, hogyan adhat ki hangokat, és hogyan alakíthatja ki a borítékokat és a frekvenciákat. Most itt az ideje, hogy néhány különböző forrást egyetlen vázlatban összegyűjtsünk, és valami érdekeset hallgassunk. Hogyan lehet elérni, hogy ez a zajforrás 33 másodperc múlva bekerüljön a kompozícióba? Hogyan kapcsolja be ezt a csengőcsengőt 16 másodpercnél, majd kapcsolja ki, majd kapcsolja be újra 42 másodperc múlva? Az egyik módszer egy viselkedéses feszültségforrás használata a kívánt hang létrehozásához, majd be- és kikapcsolása a hangot generáló feszültség megszorzásával egy másik feszültséggel, amely be- és kikapcsolja a hangot, amint azt a bell_drum_cymbal_string.asc. Ugyanezt teheti a hangok be- és kikapcsolásához. Az ötlet az, hogy ismétlődő hangokat állítson be, majd további források használatával hozzáadhatja ezeket a hangokat a kompozícióhoz a kívánt időpontokban, megszorozva azok feszültségét a hangfeszültséggel. Annyi feszültséget vehet fel a végső hangkimenetbe, amennyit csak akar, csak szorozza meg azokat (ugyanúgy, mint a logikai "és") együtt. A hangok egyszerre történő elindításával tökéletes szinkronban maradnak az egész kompozícióban, így soha nem lesznek a zene elején vagy későn. Nézd meg a compos_1.asc. Két csengő van, egy -egy csatorna. Az impulzus -csengő feszültségek a szimuláció során működnek, de a hangok csak akkor jelennek meg a kimeneten, ha V (bell_r) és V (bell_l) nem egyenlő 0 -val.

8. lépés: Exponenciális rámpa

Frissítés 7/10- görgessen lefelé A V1 és V2 lineáris rámpákat hoz létre, amelyek 0 -tól kezdődnek, és X voltra (bal csatorna) és Y voltra (jobb csatorna) emelkednek a prd_l és prd_r időszakokban. A B1 és B3 egy képlet segítségével alakítja át a lineáris rámpákat exponenciális rámpákká, amelyek maximális amplitúdója 1 V. A B2 és B4 véletlenszerű zajt generál, amelyet az exponenciális rámpák, valamint az amp_l és amp_r paraméterek modulálnak (egyszerű szintvezérlők). Csatoltam az áramkör által generált mp3 fájlt, hogy hallhassa, hogyan hangzik. Valószínűleg át kell nevezni a fájlt a lejátszáshoz. X és Y állítják be a lineáris rámpák feszültséghatárait. Végül mindkét csatorna rámpája 1 V -ra lesz méretezve, de az X és Y beállításával szabályozhatja az exponenciális rámpa meredekségét. Egy kis szám, mint az 1, közel lineáris rámpát, a nagy szám, mint a 10, nagyon meredek exponenciális rámpát ad. A rámpa periódusokat a prd_l és prd_r paraméterek segítségével kell beállítani. A lineáris rámpa emelkedési ideje a prd_l vagy prd_r értékre mínusz 5 ms, az esési idő pedig 5 ms. A hosszú esési idő megakadályozza a kattintást minden rámpa végén, mivel az amplitúdó visszaesik nullára. Out_l és out_r az időalapú véletlenszerű zajfeszültségek, az exponenciális rámpafeszültségek és az amp_l és amp_r paraméterek szorzatai. Ne feledje, hogy a jobb csatorna véletlenszerű zajértéke más "magot" használ, mint a bal csatorna. Ez az egyes csatornák zaját véletlenszerűen és eltérően tartja az ellenkező csatornától. Ha ugyanazt a vetőmagot használja, akkor ugyanazt az értéket kapja, ugyanazt a véletlen értéket, és a hang a középpontba kerül, ahelyett, hogy két különböző forrásként érzékelnék, egy -egy csatornánként. Ez érdekes hatás lehet a játékhoz … Frissítés: vegye figyelembe, hogy a hullámforma 0 V -ról pozitív értékre megy. Jobb, ha a feszültség egyenlő pozitív és negatív értékek között ingadozik. Átdolgoztam a sémát, hogy ezt tegyem, de ez kissé megnövelte a hullámformát meghatározó egyenlet összetettségét. Töltse le az exponential_ramp_noise.asc fájlt (ne feledje, hogy az Instructables szerver a mentéskor megváltoztatja a nevet és a kiterjesztést).

9. lépés: Szinuszhullámra alkalmazott exponenciális rámpa

Ez az oldal bemutatja, hogyan lehet az előző lépés exponenciális rámpáját használni szinuszforrás (valójában szinusz és koszinusz) modulálásához. A viselkedési feszültségforrást arra használják, hogy egy lineáris rámpát exponenciális rámpává alakítsanak, amely az FM bemenetet modulált2 komponensre hajtja. Az amplitúdót mind egy gyors exponenciális rámpa, mind egy lassú szinuszhullám modulálja. Hallgassa meg a mintafájlt- elég furcsán hangzik.

10. lépés: Javaslatok

1) Változtathatja a teljes szimulációs időt - tartsa rövidre, amíg komponensekkel játszik, és amikor megkapja a kívánt hangot, majd állítsa a szimulátort 30 perces (1800 mp) vagy tetszés szerinti futásra. Átmásolhatja az áramköröket egyik oldalról a másikra, és létrehozhat alköröket, így csak kis áramköri modulokat csatlakoztathat egymáshoz, például egy patch board használatával egy valódi szintetizátoron. 2) A CD mintavételi sebessége 44,1 ksps. Ha a maximális időt 20-ra csökkenti, akkor "tiszta" kimenetet kap, mert a szimulátor minden új mintára vonatkozóan rendelkezésre áll. Ha kisebb időlépést használ, a szimuláció lassú lesz, és valószínűleg nem lesz hatással a hangra. Ha hosszabb időlépést használ, hallhat némi álnevet, amely tetszhet vagy nem. 3) használja a.save párbeszédpanel utasítását a vázlatán, és amikor futtatja a szimulációt, és válassza ki az egyik feszültséget vagy áramot, hogy megtartsa a.raw fájl mérete kicsi. Ha nem választ, akkor MINDEN feszültség és áram mentésre kerül, és a.raw fájl NAGYON nagy lesz. 4) próbáljon meg nagyon alacsony frekvenciákat használni a magasabb frekvenciák modulálásához egyesítse az alacsony frekvenciájú források kimeneteit néhány nagyfrekvenciás forrással, hogy érdekessé tegye a dolgokat. 7) impulzusos feszültségforrással modulálja a szinuszt vagy más forrást, hogy ritmust biztosítson.) matematikai kifejezések segítségével határozza meg a viselkedési feszültségforrás kimenetét

Ajánlott: