Sinteza analogică a sunetului pe computer: 10 pași (cu imagini)
Sinteza analogică a sunetului pe computer: 10 pași (cu imagini)
Anonim

Ca sunetul acelor vechi sintetizatoare analogice? Doriți să vă jucați cu unul singur, la propriul dvs. loc, atât timp cât doriți, GRATUIT? Aici se împlinesc visele tale cele mai sălbatice Moog. Puteți deveni un artist de înregistrări electronice sau pur și simplu puteți scoate niște sunete reci și trippy pentru a le asculta pe playerul dvs. mp3. Tot ce aveți nevoie este un computer! Totul se face prin magia unui simulator de circuit liber numit LTSpice. Acum știu că probabil spui „Gee willikers, Tyler, nu știu nimic despre rularea unui simulator de circuit - care sună HARD!”. Nu-ți face griji, Bunky! Este ușor și vă voi oferi câteva șabloane pentru a începe și a le modifica pentru a face orice zgomote ciudate doriți. Nu sunteți sigur că merită efortul? Iată un link către un fișier de sunet gata de redare (este făcut din „composition_1.asc” la pasul 7 din acest 'ible) pe care îl puteți încerca. L-am convertit din.wav în mp3 pentru a reduce timpul de descărcare. https://www.rehorst.com/mrehorst/instructables/composition_1.mp3 Există niște bas scăzut în sunet, așa că ascultați cu căști sau difuzoare bune. Dacă îți place ceea ce vezi, votează-mă! Notă: Am atașat fișiere schematice pentru LTSpice pe care le puteți rula pe computer, dar dintr-un anumit motiv când încercați să le descărcați, numele și extensiile se schimbă. Conținutul fișierelor arată bine, deci după descărcarea fișierelor, schimbați doar numele și extensiile și acestea ar trebui să funcționeze. Numele și extensiile corecte sunt afișate pe pictogramele pe care faceți clic pentru a le descărca.

Pasul 1: Primele lucruri mai întâi

LTSpice este un program Windows, dar nu lăsați asta să vă dea jos. Funcționează bine sub Wine in Linux. Bănuiesc că nu există probleme cu rularea acestuia în clientul VMWare, VirtualBox sau alte instrumente de virtualizare sub Linux și probabil și pe Mac. Descărcați o copie a LTSpice pentru Windows (ugh!) Aici: https://www.linear.com/ designtools / software / ltspice.jsp Instalați-l. Ce este LTSpice? Este un simulator de circuit în domeniul timpului pe care orice pasionat de electronică ar trebui să știe să îl folosească. Nu voi oferi un tutorial detaliat despre modul în care funcționează aici, dar vă voi explica câteva lucruri pe care va trebui să le cunoașteți pe măsură ce mergem de-a lungul timpului. sau prea sus pentru a auzi. Dacă faceți acest lucru și conduceți difuzoarele dvs. scumpe cu un amplificator de mare putere, puteți să vă aruncați difuzoarele / amplificatorul în biți. Uitați-VĂ întotdeauna la formele de undă înainte de a le reda și aveți grijă să limitați volumul atunci când redați un fișier pentru prima dată doar pentru a fi în siguranță. Este întotdeauna o idee bună să redați fișierele prin căști ieftine la volum mic înainte de a încerca difuzoare.

Pasul 2: Introducere

Intrarea în simulator este sub forma unei diagrame schematice. Selectați componentele, le așezați pe schemă, apoi le conectați împreună. Odată ce circuitul dvs. este complet, îi spuneți simulatorului cum doriți să simuleze circuitul și ce tip de ieșire doriți. Aruncați o privire la schema numită resistors.asc. Veți vedea că există un circuit care include o sursă de tensiune, o pereche de rezistențe, un nod de ieșire etichetat, o masă și o linie de comandă text. Să ne uităm la fiecare. Acum este un moment bun pentru a deschide fișierul de circuit legat mai jos. Teren: Aceasta este componenta CEL MAI CRITIC din schema dvs. TREBUIE să aveți o masă conectată la cel puțin un punct al circuitului dvs. sau veți obține rezultate foarte ciudate din simulările dvs. Sursa de tensiune: Dacă introduceți o tensiune într-un circuit, trebuie să-i spuneți dacă este AC sau DC (sau ceva mai complex), care este tensiunea, „rezistența internă” a sursei etc. Puteți introduce acești parametri făcând clic dreapta cu indicatorul de pe sursă. Tot ce aveți nevoie este rezistența pentru simulări simple. Rezistoare: Rezistoarele sunt destul de ușor de înțeles. Doar faceți clic dreapta pentru a seta valoarea rezistenței. Ignorați orice alți parametri care s-ar putea ascunde acolo. Noduri de intrare și ieșire etichetate: Numele doar pentru nodurile din circuit care sunt ușor de utilizat. spune simulatorului cum doriți să fie simulat circuitul. Acesta este un simulator de domeniu în timp, ceea ce înseamnă că analizează circuitul în diferite momente din timp. Trebuie să-i spuneți care ar trebui să fie pasul de timp maxim și cât timp ar trebui să ruleze simularea în „circuit-timp”, nu în timp real. Dacă spuneți simulatorului să ruleze timp de 10 secunde de timp și setați pasul de timp maxim la 0,001 secunde, acesta va analiza circuitul de cel puțin 10 000 de ori (10 sec / 0,001 sec), apoi se va opri., tensiunea la fiecare nod din circuit și curenții în și din fiecare nod vor fi calculate și salvate la fiecare pas de timp. Toate aceste informații vor fi disponibile pentru a fi reprezentate pe un ecran, cum ar fi un ecran de osciloscop (timpul axei orizontale, tensiunea sau curentul pe axa verticală. Alternativ, puteți trimite și ieșirea către un fișier audio.wav pe care îl puteți reda pe un computer, ardeți pe un CD sau convertiți în mp3 pentru a reda pe playerul dvs. mp3. Mai multe despre asta mai târziu …

Pasul 3: ieșire

Ieșirea poate fi un grafic de tensiune vs timp, tensiune vs tensiune etc. sau un fișier text format dintr-o grămadă de tensiuni sau curenți la fiecare pas de timp sau un fișier audio.wav în care vom folosi foarte mult acest instructable. Descărcați și deschideți fișierul "resistors.asc". Faceți clic pe simbolul omului care rulează (partea din stânga sus a ecranului) și circuitul ar trebui să ruleze. Acum faceți clic pe eticheta „OUT” din circuit. Veți vedea tensiunea etichetată „ieșire” afișată pe ieșirea grafică de-a lungul unei axe orizontale care reprezintă timpul. Aceasta este tensiunea măsurată în raport cu masă (de aceea ai nevoie de cel puțin o masă în fiecare circuit!). Acestea sunt elementele de bază. Încercați să modificați una dintre valorile rezistenței sau tensiunea, apoi rulați din nou simularea și vedeți ce se întâmplă cu tensiunea de ieșire. Acum știi cum să rulezi un simulator de circuit. Ușor, nu-i așa?

Pasul 4: Acum sunet

Deschideți circuitul numit „dizzy.asc”. Acesta este un producător de zgomot ciudat care folosește un modulator și câteva surse de tensiune pentru a produce un fișier audio de calitate CD (16 biți, 44,1 ksps, 2 canale) cu care vă puteți juca. Componenta modulatorului este de fapt un oscilator. Frecvența și amplitudinea sunt ambele reglabile ca un VCO și VCA într-un sintetizator analogic real. Forma de undă este întotdeauna sinusoidală, dar există modalități de a o modifica - mai multe despre asta mai târziu. Limitele de frecvență sunt stabilite de parametrii marcajului și spațiului. Marca este frecvența când tensiunea de intrare FM este 1V, iar spațiul este frecvența când tensiunea de intrare FM este 0V. Frecvența de ieșire este o funcție liniară a tensiunii de intrare FM, astfel încât frecvența va fi la jumătatea distanței dintre frecvențe de marcare și spațiu atunci când tensiunea de intrare FM este de 0,5 V și va fi de 2x frecvența de marcare când tensiunea de intrare FM este de 2 V. modulatorul poate fi, de asemenea, modulat în amplitudine prin pinul de intrare AM. Amplitudinea ieșirii modulatorului (oscilatorului) se va potrivi cu tensiunea aplicată intrării de tensiune AM. Dacă utilizați o sursă de curent continuu cu o tensiune de 1, amplitudinea de ieșire va fi 1V (asta înseamnă că va oscila între -1 și +1 V). Modulatorul are două ieșiri - sinus și cosinus. Formele de undă sunt exact aceleași, cu excepția faptului că sunt defazate la 90 de grade. Acest lucru poate fi distractiv pentru aplicații audio stereo. Există o declarație.tran care spune simulatorului timpul maxim de parcurs și durata simulării. În acest caz, circuit-timp (timpul total de simulare) = timpul fișierului audio. Asta înseamnă că, dacă rulați simularea timp de 10 secunde, veți obține un fișier audio care durează 10 secunde. Instrucțiunea.save este utilizată pentru a minimiza cantitatea de date pe care simulatorul le va salva pe măsură ce rulează simularea. În mod normal, economisește tensiunile la fiecare nod și curenții în și din fiecare componentă. Acest lucru poate adăuga o mulțime de date dacă circuitul dvs. se complică sau rulați o simulare lungă. Când rulați simularea, selectați doar o tensiune sau curent din listă în caseta de dialog și fișierul de date (.raw) va fi mic, iar simularea va rula la viteza maximă. În cele din urmă, instrucțiunea.wave îi spune simulatorului: creați un fișier audio stereo de calitate CD (16 biți pe eșantion, 44,1 ksps, două canale) punând tensiunea la „OUTL” în canalul din stânga și tensiunea la „OUTR” în canalul din dreapta. Fișierul.wav este format din mostre de 16 biți. Ieșirea la scară completă în fișierul.wav (toți cei 16 biți dintr-un eșantion pornit) are loc atunci când tensiunea de ieșire este exact +1 Volt sau -1 Volt. Circuitul sintetizatorului dvs. ar trebui să fie configurat pentru a genera tensiuni nu mai mari de +/- 1V în fiecare canal, altfel ieșirea din fișierul.wav va fi „decupată” ori de câte ori tensiunea depășește +1 sau -1 V. De când realizăm un fișier audio care este eșantionat la 44,1 ksps, avem nevoie de simulator pentru a simula circuitul de cel puțin 44, de 100 de ori pe secundă, deci setăm pasul de timp maxim la 1/44, 100 sec sau aproximativ 20 de microsecunde (noi).

Pasul 5: alte tipuri de surse de tensiune, alte tipuri de sunete

Un sintetizator analog are nevoie de o sursă de zgomot aleatoriu. Puteți genera zgomot folosind o „sursă de tensiune comportamentală” (bv) și o puteți porni și opri folosind un „comutator de tensiune controlat” (sw). Utilizarea componentei bv pentru a genera zgomot implică definirea tensiunii pe baza unei formule. Formula pentru generarea zgomotului arată astfel: V = alb (timp * X) * Y Funcția albă creează o tensiune aleatorie între -0,5 și +0,5 V utilizând valoarea curentă a timpului ca o sămânță. Setarea Y la 2 dă o balansare de +/- 1V. Setarea X între 1, 000 (1e3) și 100, 000 (1e5) afectează spectrul zgomotului și schimbă sunetul. Întrerupătorul controlat de tensiune are nevoie, de asemenea, de câțiva parametri pentru a fi setați într-o instrucțiune.model. Puteți utiliza mai multe comutatoare controlate de tensiune și mai multe instrucțiuni de model pentru a face ca fiecare să se comporte diferit dacă doriți. Trebuie să spuneți simulatorului rezistențele „pornit” și „oprit” și tensiunea de prag la care comută. Vh este „tensiunea de histerezis”. Setați-l la o valoare pozitivă, cum ar fi 0.4V și nu vor apărea sunete de clic când comutatorul se deschide și se închide. sursă - vezi easy_gated_noise.asc, mai jos.

Pasul 6: Clopote, Tobe, Cinele, Corzi smulse

Clopotele, tobe, cinale și corzi smulse sunt toate percutante. Au un timp de creștere relativ rapid și un timp de descompunere exponențială. Acestea sunt ușor de creat folosind surse sinusoidale și de tensiune comportamentală combinate cu câteva circuite simple. Uitați-vă la schema „bell_drum_cymbal_string.asc”. Sursele de tensiune pulsată cu rezistorul, condensatorul și dioda creează formele de undă de creștere rapidă și exponențială lentă necesare. Aceste tensiuni de ieșire modulează ieșirile surselor comportamentale configurate ca surse de zgomot aleatoriu sau de undă sinusoidală. Când tensiunea sursei pulsate crește, acesta încarcă rapid condensatorul. Condensatorul se descarcă apoi prin rezistor. Dioda menține sursa de tensiune de la descărcarea condensatorului atunci când tensiunea sursei este la zero. Valorile mai mari ale rezistorului măresc timpul de descărcare. Puteți specifica timpul de creștere a sursei pulsate - chimbalul este o sursă nise cu un timp de creștere foarte rapid. Tamburul este, de asemenea, o sursă de zgomot care funcționează la o frecvență mai mică și are un timp de creștere mai lent. Clopotul și șirul folosesc surse de undă sinusoidală care sunt modulate și de surse pulsate. Clopotul funcționează la o frecvență mai mare și are un timp de ridicare mai rapid decât șirul. Rulați simularea și ascultați rezultatul. Rețineți că tamburul apare în ambele canale, în timp ce toate celelalte sunete sunt fie canalul drept, fie cel stâng. Cele două rezistențe de la ieșirea tamburului sunt responsabile pentru introducerea sunetului în ambele canale.

Pasul 7: Puneți totul împreună

OK, acum ai văzut cum să faci niște sunete și cum să modelezi plicurile și să le modulezi frecvența. Acum este timpul să puneți câteva surse diferite împreună într-o singură schemă și să generați ceva interesant de ascultat. Cum faceți ca această sursă de zgomot să intre în compoziție la 33 de secunde? Cum porniți acel clopot la 16 secunde, apoi îl opriți, apoi îl porniți din nou la 42 de secunde? O modalitate este de a utiliza o sursă de tensiune comportamentală pentru a produce sunetul dorit, apoi porniți-l și dezactivați-l înmulțind tensiunea generatoare de sunet cu o altă tensiune care activează și dezactivează sunetul, așa cum sa făcut în bell_drum_cymbal_string.asc. Puteți face același fel de lucru pentru a estompa sunetele în interiorul și în afara. Ideea de aici este să configurați sunete repetate, apoi să utilizați surse suplimentare pentru a adăuga acele sunete la compoziția dvs. la momentele dorite, înmulțind tensiunile acestora cu tensiunile sonore. Puteți include cât mai multe tensiuni în ieșirea finală a sunetului doriți, pur și simplu continuați să le multiplicați (la fel ca „și” logice). Prin pornirea sunetelor dintr-o dată, acestea vor rămâne sincronizate perfect pe tot parcursul compoziției, astfel încât să nu fie niciodată timpurii sau târzii în timpul muzicii. Uitați-vă la composition_1.asc. Există două clopote, câte unul în fiecare canal. Tensiunile pulse_bell funcționează pe tot parcursul simulării, dar sunetele apar doar în ieșire atunci când V (bell_r) și V (bell_l) nu sunt egale cu 0.

Pasul 8: Rampa exponențială

Actualizare 7/10 - derulați până jos Iată un circuit care generează o rampă exponențială aplicată unei perechi de surse de zgomot. V1 și V2 generează rampe liniare care încep de la 0 și se ridică la X volți (canalul stâng) și Y volți (canalul drept) în perioadele prd_l și prd_r. B1 și B3 folosesc o formulă pentru a converti rampele liniare în rampe exponențiale cu amplitudini maxime de 1V. B2 și B4 generează zgomot aleatoriu care este modulat în amplitudine de rampele exponențiale și de parametrii amp_l și amp_r (controale simple de nivel). Am atașat un fișier mp3 generat de acest circuit, astfel încât să puteți auzi cum sună. Probabil va trebui să redenumiți fișierul pentru a-l reda. X și Y stabilesc limitele de tensiune ale rampelor liniare. În cele din urmă, ambele rampe ale canalului sunt reduse la 1V, dar prin setarea X și Y puteți controla abruptul rampei exponențiale. Un număr mic ca 1 oferă o rampă aproape liniară, iar un număr mare ca 10 oferă o rampă exponențială foarte abruptă. Perioadele de rampă sunt setate utilizând parametrii prd_l și prd_r. Timpul de creștere a rampei liniare este setat la valoarea prd_l sau prd_r minus 5 ms, iar timpul de cădere este setat la 5 ms. Timpul lung de cădere împiedică apăsarea la sfârșitul fiecărei rampe, deoarece amplitudinea scade înapoi la zero. Rețineți că valoarea zgomotului aleatoriu al canalului drept folosește un „seed” diferit de cel al canalului din stânga. Aceasta menține zgomotul din fiecare canal aleatoriu și diferit de canalul opus. Dacă utilizați aceeași semință, la aceeași valoare de timp veți obține aceeași valoare aleatorie și sunetul va ajunge în centru în loc să fie perceput ca două surse diferite, una în fiecare canal. Acesta ar putea fi un efect interesant cu care să se joace … Actualizare: observați că forma de undă trece de la 0V la o anumită valoare pozitivă. Este mai bine ca tensiunea să se deplaseze între valori pozitive și negative egale. Am refăcut schema pentru a face exact asta, dar a crescut complexitatea ecuației care definește puțin forma de undă. Descărcați exponential_ramp_noise.asc (amintiți-vă că serverul Instructables va schimba numele și extensia când îl salvați).

Pasul 9: Rampa exponențială aplicată unei unde sinusoidale

Această pagină arată cum să utilizați rampa exponențială de la pasul anterior pentru a modula o sursă sinusoidală (de fapt, sinus și cosinus). Sursa de tensiune comportamentală este utilizată pentru a transforma o rampă liniară într-o rampă exponențială care conduce intrarea FM pe o componentă modulate 2. Amplitudinea este modulată atât de o rampă exponențială rapidă, cât și de o undă sinusoidală lentă. Ascultați fișierul eșantion - sună destul de ciudat.

Pasul 10: Sugestii

1) Puteți varia timpul total de simulare - mențineți-l scurt în timp ce jucați cu componente și când obțineți sunetul dorit, apoi setați simulatorul să ruleze 30 de minute (1800 sec) sau oricât de mult doriți. Puteți copia circuite de la o pagină la alta și puteți crea subcircuite, astfel încât să puteți conecta doar module de circuit mici, cum ar fi utilizarea unei plăci de patch-uri pe un sintetizator real. 2) O rată de eșantionare a CD-ului este de 44,1 ksps. Dacă păstrați scăderea maximă a timpului până la 20, veți obține o ieșire „curată”, deoarece simulatorul va avea date disponibile pentru fiecare eșantion nou. Dacă utilizați un pas de timp mai mic, simularea va fi lentă și probabil că nu va avea niciun efect asupra sunetului. Dacă utilizați un pas de timp mai lung, este posibil să auziți unele aliasuri care vă pot plăcea sau nu. 3) utilizați instrucțiunea de dialog. dimensiunea fișierului.raw mic. Dacă nu faceți o selecție, TOATE tensiunile și curenții vor fi salvate, iar fișierul.raw va deveni FOARTE mare. 4) Încercați să utilizați frecvențe foarte mici pentru a modula frecvențe mai mari combinați ieșirile din unele surse de joasă frecvență cu unele surse de înaltă frecvență pentru a face lucrurile interesante.) utilizați expresii matematice pentru a defini ieșirea unei surse de tensiune comportamentală Distrați-vă!