Analoginio garso sintezė jūsų kompiuteryje: 10 žingsnių (su paveikslėliais)
Analoginio garso sintezė jūsų kompiuteryje: 10 žingsnių (su paveikslėliais)
Anonim

Patinka tų senų analoginių sintezatorių garsas? Norite žaisti su vienu savo laiku, savo vietoje, tiek laiko, kiek norite, NEMOKAMAI? Čia išsipildo jūsų drąsiausios „Moog“svajonės. Galite tapti elektroninių įrašų atlikėju arba tiesiog išgirsti šaunių, keistų garsų, kuriuos galite klausytis savo mp3 grotuve. Viskas, ko jums reikia, yra kompiuteris! Visa tai daroma per nemokamo grandinės simuliatoriaus, vadinamo „LTSpice“, magiją. Dabar žinau, kad jūs tikriausiai sakote: „Gee Willikers, Tyler, aš nieko nežinau apie grandinės simuliatoriaus veikimą- tai skamba sunkiai!“. Nesijaudink, Bunky! Tai lengva, ir aš duosiu jums keletą šablonų, kuriuos pradėsite ir pakeisite, kad padarytumėte bet kokius keistus triukšmus. Nežinote, ar tai verta pastangų? Čia yra nuoroda į paruoštą leisti garso failą (jis pagamintas iš „compos_1.asc“šio „ible“7 veiksme), kurį galite išbandyti. Aš konvertavau jį iš.wav į mp3, kad sutrumpinčiau atsisiuntimo laiką. https://www.rehorst.com/mrehorst/instructables/composition_1.mp3Garsas yra žemas, todėl klausykitės ausinių ar gerų garsiakalbių. Jei jums patinka tai, ką matote, balsuokite už mane! Pastaba: pridėjau scheminius „LTSpice“failus, kuriuos galite paleisti savo kompiuteryje, tačiau dėl kokių nors priežasčių, kai bandote juos atsisiųsti, pasikeičia pavadinimai ir plėtiniai. Failų turinys atrodo gerai, todėl atsisiųsdami failus tiesiog pakeiskite pavadinimus ir plėtinius ir jie turėtų veikti. Teisingi pavadinimai ir plėtiniai rodomi piktogramose, kurias spustelėję atsisiųsite.

1 žingsnis: Pirmiausia

„LTSpice“yra „Windows“programa, tačiau nenusiminkite. Jis gerai veikia „Wine“sistemoje „Linux“. Įtariu, kad naudojant „VMWare“klientą, „VirtualBox“ar kitus virtualizavimo įrankius naudojant „Linux“ir „Mac“taip pat nėra problemų. Atsisiųskite „LTSpice for Windows“kopiją (ugh!) Čia: https://www.linear.com/ designtools/software/ltspice.jsp Įdiekite. Kas yra „LTSpice“? Tai laiko domeno grandinės simuliatorius, kurį turėtų žinoti kiekvienas elektronikos mėgėjas. Aš nesiruošiu pateikti išsamios pamokos apie tai, kaip tai veikia, bet paaiškinsiu kelis dalykus, kuriuos turėsite žinoti eidami kartu. Vienas įspėjimo žodis- nesunkiai galima gaminti per žemus dažnius arba per aukštai girdėti. Jei tai padarysite ir vairuosite brangius garsiakalbius su galingu stiprintuvu, galite tiesiog susprogdinti garsiakalbius/stiprintuvus. VISADA pažiūrėkite į bangų formas prieš jas atkurdami ir būkite atsargūs, kad pirmą kartą atkurdami failą apribotumėte garsumą, kad būtumėte saugūs. Prieš bandant garsiakalbius, visada gera idėja paleisti failus per pigias ausines mažu garsumu.

2 veiksmas: įvestis

Įvestis į simuliatorių yra schemos pavidalo. Jūs pasirenkate komponentus, padedate juos ant schemos, tada sujungiate. Kai jūsų grandinė bus baigta, pasakykite simuliatoriui, kaip norite, kad ji imituotų grandinę ir kokios rūšies išvesties norite. Pažvelkite į schemą, vadinamą rezistoriais. Pamatysite, kad yra grandinė, kurioje yra įtampos šaltinis, pora rezistorių, pažymėtas išvesties mazgas, įžeminimas ir teksto komandų eilutė. Pažvelkime į kiekvieną. Dabar tinkamas laikas atidaryti grandinės failą, susietą žemiau. Įžeminimas: tai yra KRITINIS jūsų schemos komponentas. Jūs turite turėti žemę, prijungtą prie bent vieno jūsų grandinės taško, arba gausite labai keistus savo modeliavimo rezultatus. Įtampos šaltinis: jei įtampą įjungiate į grandinę, turite pasakyti, ar tai kintamosios srovės, ar nuolatinės srovės (ar kažkas sudėtingesnio), kokia yra įtampa, šaltinio „vidinė varža“ir tt Galite įvesti šiuos parametrus dešiniuoju pelės mygtuku spustelėdami šaltinio žymeklį. Viskas, ko jums tikrai reikia, yra atsparumas paprastoms simuliacijoms. Rezistoriai: rezistoriai yra gana lengvai suprantami. Tiesiog nustatykite pasipriešinimo vertę dešiniuoju pelės mygtuku. Nepaisykite jokių kitų parametrų, kurie ten gali būti slepiami. Žymėti įvesties ir išvesties mazgai: tik grandinės mazgų pavadinimai, kurie yra patogūs vartotojui.- naudokite tokius pavadinimus kaip „išvestis“, „įvestis“ir kt. Modeliavimo direktyva:.tran teiginys simuliatoriui nurodo, kaip norite, kad grandinė būtų imituojama. Tai laiko domeno simuliatorius, o tai reiškia, kad jis analizuoja grandinę skirtingais laiko momentais. Turite pasakyti, koks turėtų būti maksimalus laiko žingsnis ir kiek laiko simuliacija turėtų veikti „grandinės laiku“, o ne realiu laiku. Jei liepsite treniruokliui veikti 10 sekundžių grandinės laiko ir nustatysite maksimalų laiko žingsnį į 0,001 sekundės, jis analizuos grandinę bent 10 000 kartų (10 sek./0,001 sek.), Tada sustos. Kai imituojama, įtampa kiekviename grandinės mazge ir srovės į kiekvieną mazgą ir iš jo bus apskaičiuojamos ir išsaugomos kiekvienu žingsniu. Visą šią informaciją bus galima nubraižyti ekrane, pavyzdžiui, osciloskopo ekrane (horizontalios ašies laikas, įtampa ar srovė vertikalioje ašyje. Arba taip pat galite nusiųsti išvestį į.wav garso failą, kurį galite atkurti kompiuterį, įrašykite į kompaktinį diską arba konvertuokite į mp3, kad galėtumėte leisti savo mp3 grotuve. Daugiau apie tai vėliau …

3 žingsnis: išvestis

Išvestis gali būti grafinis įtampos ir laiko grafikas, įtampa ir įtampa ir pan., Arba tekstinis failas, susidedantis iš krūvos įtampos ar srovės kiekvienu žingsniu, arba.wav garso failas, kurį mes daug naudosime tai pamokoma. Atsisiųskite ir atidarykite failą „resistors.asc“. Spustelėkite mažo bėgančio žmogaus simbolį (viršutinėje kairėje ekrano dalyje) ir grandinė turėtų veikti. Dabar grandinėje spustelėkite etiketę „OUT“. Grafinėje išvestyje išilgai horizontalios ašies matysite įtampą, pažymėtą „išėjimas“. Tai yra įtampa, išmatuota žemės atžvilgiu (todėl kiekvienoje grandinėje reikia bent vieno įžeminimo!). Tai yra pagrindai. Pabandykite pakeisti vieną iš rezistoriaus verčių arba įtampą, tada pakartokite modeliavimą ir pažiūrėkite, kas atsitiks su išėjimo įtampa. Dabar jūs žinote, kaip paleisti grandinės simuliatorių. Lengva ar ne?

4 žingsnis: dabar šiek tiek garso

Atidarykite grandinę, pavadintą „dizzy.asc“. Tai yra keistas triukšmo gamintojas, kuris naudoja moduliatorių ir kelis įtampos šaltinius, kad sukurtų CD kokybės (16 bitų, 44,1 ksps, 2 kanalų) garso failą, kurį galite žaisti. Moduliatoriaus komponentas iš tikrųjų yra generatorius. Dažnis ir amplitudė yra reguliuojami kaip VCO ir VCA tikrame analoginiame sintezatoriuje. Bangos forma visada yra sinusinė, tačiau yra būdų ją pakeisti- daugiau apie tai vėliau. Dažnio ribos nustatomos pagal ženklą ir erdvės parametrus. Ženklas yra dažnis, kai FM įėjimo įtampa yra 1 V, o erdvė - dažnis, kai FM įėjimo įtampa yra 0 V. Išėjimo dažnis yra linijinė FM įvesties įtampos funkcija, todėl dažnis bus pusiaukelėje tarp ženklo ir erdvės dažnių, kai FM įėjimo įtampa yra 0,5 V, ir bus 2 kartus didesnis už ženklą, kai FM įėjimo įtampa yra 2 V. moduliatorius taip pat gali būti moduliuojamas per AM įvesties kaištį. Moduliatoriaus (osciliatoriaus) išėjimo amplitudė atitiks įtampą, taikomą AM įtampos įėjimui. Jei naudojate nuolatinės srovės šaltinį, kurio įtampa yra 1, išėjimo amplitudė bus 1 V (tai reiškia, kad ji svyruos tarp -1 ir +1 V). Moduliatorius turi du išėjimus- sinusą ir kosinusą. Bangos formos yra visiškai vienodos, išskyrus tai, kad jos yra 90 laipsnių kampu. Tai gali būti įdomu stereo garso programoms. Yra.tran teiginys, kuris simuliatoriui nurodo maksimalų laiko žingsnį ir modeliavimo trukmę. Šiuo atveju grandinės laikas (bendras modeliavimo laikas) = garso failo laikas. Tai reiškia, kad jei imituosite 10 sekundžių, gausite 10 sekundžių ilgio garso failą. Pareiškimas.save naudojamas siekiant sumažinti duomenų kiekį, kurį simuliatorius išsaugos vykdydamas modeliavimą. Paprastai tai taupo įtampą kiekviename mazge ir sroves į kiekvieną komponentą ir iš jo. Tai gali sudaryti daug duomenų, jei jūsų grandinė tampa sudėtinga arba atliekate ilgą modeliavimą. Kai vykdote modeliavimą, tiesiog pasirinkite vieną įtampą arba srovę iš dialogo lango sąrašo, o duomenų failas (.raw) bus mažas, o modeliavimas bus vykdomas maksimaliu greičiu. Galiausiai sakinys.wave sako, kad simuliatorius sukurkite CD kokybės stereofoninį garso failą (16 bitų kiekvienam mėginiui, 44,1 ksps, du kanalai), įtampą esant „OUTL“kairiajame kanale ir „OUTR“- dešiniajame kanale.. Wav failą sudaro 16 bitų pavyzdžiai. Visos skalės išvestis.wav faile (visi 16 mėginio bitų įjungti) įvyksta, kai išėjimo įtampa yra tiksliai +1 V arba -1 V. Jūsų sintezatoriaus grandinė turi būti nustatyta taip, kad kiekvienam kanalui būtų sukurta ne didesnė kaip +/- 1 V įtampa, kitaip.wav failo išvestis bus „nukirpta“, kai įtampa viršys +1 arba -1 V. garso failą, kurio mėginiai imami 44,1 ksps greičiu, mums reikia, kad simuliatorius imituotų grandinę bent 44, 100 kartų per sekundę, todėl maksimalų laiko žingsnį nustatome iki 1/44, 100 sek arba maždaug 20 mikrosekundžių (mums).

5 veiksmas: kiti įtampos šaltinių tipai, kiti garsų tipai

Analoginiam sintezatoriui reikia atsitiktinio triukšmo šaltinio. Galite kelti triukšmą naudodami „elgesio įtampos šaltinį“(bv), o jį įjungti ir išjungti naudodami „įtampos valdomą jungiklį“(sw). Bv komponento naudojimas triukšmui generuoti apima įtampos apibrėžimą pagal formulę. Triukšmo generavimo formulė atrodo taip: V = balta (laikas*X)*Y Baltoji funkcija sukuria atsitiktinę įtampą nuo -0,5 iki +0,5 V, naudojant pradinę laiko vertę. Nustačius Y į 2, gaunamas +/- 1V svyravimas. Nustačius X nuo 1 000 (1e3) iki 100 000 (1e5), veikiamas triukšmo spektras ir keičiamas garsas. Įtampos valdomam jungikliui taip pat reikia nustatyti kai kuriuos parametrus.model pareiškime. Jei norite, galite naudoti kelis įtampos valdomus jungiklius ir kelis modelio teiginius, kad kiekvienas veiktų skirtingai. Turite pasakyti treniruokliui „įjungimo“ir „išjungimo“pasipriešinimą ir slenkstinę įtampą, kuria jis persijungia. Vh yra „histerezės įtampa“. Nustatykite teigiamą vertę, pvz., 0,4 V, ir kai jungiklis atsidarys ir užsidarys, nebus jokių spragtelėjimų. >>> Atnaujinti: čia yra dar paprastesnis būdas sukurti triukšmo šaltinį- tiesiog padauginkite triukšmo įtampą iš impulsinio šaltinis- žr. easy_gated_noise.asc, žemiau.

6 žingsnis: varpai, būgnai, cimbolai, nuskintos stygos

Varpai, būgnai, cimbolai ir nuskintos stygos - visi mušamieji. Jie turi gana greitą kilimo laiką ir eksponentinį skilimo laiką. Juos lengva sukurti naudojant sinusinius ir elgesio įtampos šaltinius kartu su kai kuriomis paprastomis grandinėmis. Pažvelkite į schemą „bell_drum_cymbal_string.asc“. Impulsiniai įtampos šaltiniai su rezistoriumi, kondensatoriumi ir diodu sukuria reikiamą greitą ir lėtą eksponentinio skilimo bangų formą. Šios išėjimo įtampos moduliuoja elgesio šaltinių išvestis, nustatytas kaip atsitiktinis triukšmas arba sinusinės bangos šaltiniai. Kai impulsinė šaltinio įtampa pakyla, ji greitai įkrauna kondensatorių. Tada kondensatorius išsikrauna per rezistorių. Diodas neleidžia įtampos šaltiniui iškrauti kondensatoriaus, kai šaltinio įtampa yra lygi nuliui. Didesnės rezistorių vertės padidina iškrovos laiką. Galite nurodyti impulsinio šaltinio pakilimo laiką - cimbolas yra labai greitas kilimo laikas. Būgnas taip pat yra triukšmo šaltinis, kuris veikia žemesniu dažniu ir turi lėtesnį pakilimo laiką. Varpas ir styga naudoja sinusinių bangų šaltinius, kuriuos taip pat moduliuoja impulsiniai šaltiniai. Varpas veikia didesniu dažniu ir turi greitesnį pakilimo laiką nei eilutė. Paleiskite simuliaciją ir klausykite rezultato. Atkreipkite dėmesį, kad būgnas rodomas abiejuose kanaluose, o visi kiti garsai yra dešiniojo arba kairiojo kanalo. Du būgno išėjimo rezistoriai yra atsakingi už garso perdavimą į abu kanalus.

7 žingsnis: surinkite viską kartu

Gerai, dabar pamatėte, kaip skleisti kai kuriuos garsus ir kaip suformuoti vokus bei juos moduliuoti. Dabar atėjo laikas sujungti kelis skirtingus šaltinius į vieną schemą ir sukurti kažką įdomaus klausytis. Kaip priversti triukšmo šaltinį į kompoziciją per 33 sekundes? Kaip įjungti tą skambantį skambutį per 16 sekundžių, tada išjungti, tada vėl įjungti po 42 sekundžių? Vienas iš būdų yra naudoti elgsenos įtampos šaltinį norimam garsui skleisti, tada jį įjungti ir išjungti, padauginus garsą generuojančią įtampą iš kitos įtampos, kuri įjungia ir išjungia garsą, kaip buvo padaryta bell_drum_cymbal_string.asc. Galite padaryti tą patį, kad išblukintumėte ir išjungtumėte garsus. Čia yra idėja nustatyti pasikartojančius garsus, tada naudoti papildomą (-us) šaltinį (-ius), kad tuos garsus norimu laiku pridėtumėte prie savo kompozicijos, padauginę jų įtampą iš garso įtampos. Į galutinį garso išvestį galite įtraukti tiek įtampų, kiek norite, tiesiog nuolat jas padauginkite (tas pats, kas logiška „ir“). Paleisdami garsus vienu metu, jie puikiai sinchronizuos visą kompoziciją, todėl jie niekada nebus ankstyvas ar vėlyvas muzikos metu. Yra du varpai, po vieną kiekviename kanale. Impulsinio varpo įtampa veikia visą modeliavimą, tačiau garsai rodomi tik išvestyje, kai V (varpas_r) ir V (varpas_l) nėra lygūs 0.

8 žingsnis: Eksponentinis rampas

Atnaujinti 7/10- slinkite į apačią V1 ir V2 generuoja linijines rampas, kurios prasideda nuo 0 ir pakyla iki X voltų (kairysis kanalas) ir Y voltų (dešinysis kanalas) laikotarpiais prd_l ir prd_r. B1 ir B3 naudoja formulę, kad linijines rampas paverstų eksponentinėmis rampomis, kurių maksimalios amplitudės yra 1 V. B2 ir B4 sukuria atsitiktinį triukšmą, kurį amplitudė moduliuoja eksponentinėmis rampomis ir parametrais amp_l ir amp_r (paprastas lygio valdymas). Pridėjau šios grandinės sukurtą mp3 failą, kad galėtumėte išgirsti, kaip tai skamba. Tikriausiai turėsite pervadinti failą, kad jis būtų paleistas. X ir Y nustato linijinių rampų įtampos ribas. Galų gale abiejų kanalų rampos padidėja iki 1 V, tačiau nustatydami X ir Y galite valdyti eksponentinės nuolydžio statumą. Mažas skaičius, pavyzdžiui, 1, suteikia beveik tiesinę rampą, o didelis skaičius, kaip 10, suteikia labai stačią eksponentinę nuolydį. Rampos periodai nustatomi naudojant parametrus prd_l ir prd_r. Linijinis rampos pakilimo laikas nustatomas į prd_l arba prd_r reikšmę, atėmus 5 ms, o kritimo laikas - 5 ms. Ilgas kritimo laikas neleidžia spustelėti kiekvienos rampos pabaigoje, kai amplitudė nukrenta iki nulio. Out_l ir out_r yra laiko atsitiktinio triukšmo įtampos, eksponentinės rampos įtampos ir parametrų amp_l ir amp_r sandaugos. Atkreipkite dėmesį, kad dešiniojo kanalo atsitiktinio triukšmo vertė naudoja kitą „sėklą“nei kairysis kanalas. Dėl to triukšmas kiekviename kanale yra atsitiktinis ir skiriasi nuo priešingo kanalo. Jei naudosite tą pačią sėklą, tuo pačiu metu gausite tą pačią atsitiktinę vertę ir garsas atsidurs centre, o ne bus suvokiamas kaip du skirtingi šaltiniai, po vieną kiekviename kanale. Tai gali būti įdomus efektas žaisti … Atnaujinimas: atkreipkite dėmesį, kad bangos forma pereina nuo 0 V iki teigiamos vertės. Geriau, kad įtampa svyruotų tarp vienodų teigiamų ir neigiamų verčių. Aš perdariau schemą, kad galėčiau tai padaryti, tačiau tai šiek tiek padidino bangos formą apibrėžiančios lygties sudėtingumą. Atsisiųskite „exponential_ramp_noise.asc“(atminkite, kad „Instructables“serveris pakeis pavadinimą ir plėtinį, kai jį išsaugosite).

9 žingsnis: Eksponentinis rampas, taikomas sinusinei bangai

Šiame puslapyje parodyta, kaip panaudoti ankstesnio žingsnio eksponentinę pakopą sinusiniam šaltiniui (iš tikrųjų sinusui ir kosinusui) moduliuoti. Elgesio įtampos šaltinis naudojamas linijinei rampai paversti eksponentine rampa, kuri valdo FM įvestį modulate2 komponente. Amplitudę moduliuoja greita eksponentinė rampa ir lėta sinusinė banga. Klausykitės failo pavyzdžio- tai skamba gana keistai.

10 žingsnis: pasiūlymai

1) Galite keisti bendrą modeliavimo laiką - laikykite jį trumpą, kol žaidžiate su komponentais ir išgirsite jums patinkantį garsą, tada nustatykite, kad simuliatorius veiktų 30 minučių (1800 sek.) Arba kiek tik norite. Galite kopijuoti grandines iš vieno puslapio į kitą ir sukurti grandines, kad galėtumėte tiesiog sujungti mažus grandinės modulius, pvz., Naudodami tikrojo sintezatoriaus pataisos plokštę. 2) CD imties dažnis yra 44,1 ksps. Jei išlaikysite maksimalų laiko intervalą iki 20 JAV, gausite „švarų“rezultatą, nes simuliatoriuje bus prieinami kiekvieno naujo mėginio duomenys. Jei naudosite mažesnį laiko žingsnį, modeliavimas bus lėtas ir greičiausiai neturės jokios įtakos garsui. Jei naudojate ilgesnį laiko žingsnį, galite išgirsti tam tikrą slapyvardį, kuris jums gali patikti arba nepatikti. 3) Naudokite dialogo lango.save teiginį savo schemoje ir vykdydami modeliavimą pasirinkite tik vieną iš įtampų ar srovių, kad išlaikytumėte „.raw“failo dydis mažas. Jei nepasirinksite pasirinkimo, visos įtampos ir srovės bus išsaugotos, o.raw failas bus LABAI didelis. 4) pabandykite naudoti labai žemus dažnius aukštesniems dažniams moduliuoti sujunkite kai kurių žemo dažnio šaltinių išėjimus su kai kuriais aukšto dažnio šaltiniais, kad viskas būtų įdomu. 7) naudokite impulsinę įtampos šaltinį, kad moduliuotumėte sinusą ar kitą šaltinį, kad užtikrintumėte ritmą. 8) naudokite analogines grandines, kad suformuotumėte įtampos impulsus į tai, ko norite.) naudokite matematines išraiškas elgesio įtampos šaltinio išėjimui apibrėžti