Forfatteren af Instructables under kaldenavnet rgco kom med en firestemmes 1,5-oktavssynteser på Arduino Uno. Til sammenligning er de udbredte børnesynteser, der kun adskiller sig fra hinanden i design og fremstillet af den samme chip, tre-stemmer. Det er sandt, at de automatisk kan ledsage musikken med rytme, huske melodier med én stemme og efterligne dyrs stemmer. Men så hjemmelavet produkt lyder pænere. Hvorfor?
Det handler om parametrene. Samplingsfrekvens 31 kHz, 9 bit, 4 stemmer, FM-syntese med en tidsvarierende sweep, ADSR-konvolut, 12 virtuelle instrumenter, 18 taster, der spænder over 1,5 oktaver.
Master komponerer synthesizerkredsløbet i Fritzing:
I den simulerer den placeringen af komponenter på en brødbræt af brødpladetypen og forbindelserne mellem dem:
Og indsamler ordningen i det virkelige liv:
Bare "hæld og brug" er den enkleste ting, du kan gøre med designet. 18 taster (fra FØR den fjerde oktav til FA femte) - til at spille, skifter det nittende de virtuelle instrumenter i en ring: klaver, xylofon, guitar, cymbaler, klokker, funky, vibrato, metal, violin, bas, trompet, harmonika. Lydens art påvirkes af varetiden af tastetryk, men ikke indsatsen i modsætning til professionelle synthesizere. Men udvikleren ønsker, at du også prøver at programmere dine virtuelle værktøjer. Hver af dem er givet af ti parametre. Guiden fortæller dig, hvilken parameter det afhænger af.
ldness - volumen
Hvis denne parameter er mindre end 64, er overbelastning og relaterede forvrængninger udelukket. Men hvis du programmerer et sådant virtuelt instrument, der ikke lyder ved maksimal lydstyrke længe, kan værdien af denne parameter overstige 64, da alle fire stemmer samtidig lyder sjældent.
pitch0 - pitch shift
Området svarer til ovenstående, hvis du indstiller denne parameter til 12. Fald bevæger sig ned, stigning - op. Nul svarer til et skift nøjagtigt en oktav, 24 - op nøjagtigt en oktav.
ADSR_a - lydstyrkehastighed fra nul til maksimum
Jo mindre, jo langsommere.For eksempel svarer 8192 til 4 ms, 256 til 128 ms.
ADSR_d - hastighed for at reducere lydstyrken fra det maksimale til det, der er specificeret af ADSR_s-parameteren.
Princippet er det samme.
ADSR_s - den værdi, som lydstyrken falder til, når der trykkes på tasten i lang tid
For eksempel 256 - lydstyrken forbliver maksimal hele tiden, mens tasten holdes nede. 192 - lydstyrken falder til 80 procent og forbliver det, mens nøglen holdes nede. 0 - lydstyrken falder til nul, selvom tasten holdes nede.
ADSR_r - hastighed for at sænke lydstyrken til nul efter frigivelse af tasten
Princippet er det samme som for ADSR_a- og ADSR_d-parametrene.
FM_inc - forhold mellem modulationsfrekvens og tone
Med en værdi på 256 er dette forhold 1: 1, med 512 - 2: 1, med 128 - 1: 2, resten er ens. Hvis denne parameter er indstillet til et multiplum af 64, vil lyden være anharmonisk.
FM_a1 - frekvensmoduleringsområdet i begyndelsen af en note
256 svarer til en lang række harmonier. Med et fald er tonen renere, med en stigning i harmoniske bliver den mere.
FM_a2 - fejfrekvensmodulation i slutningen af en note
Princippet er det samme. For de fleste virkelige instrumenter forfalder harmoniske hurtigere end den grundlæggende tone. Hvis du gør det modsatte, får du usædvanlige lyde.
FM_dec - overgangshastighed for frekvensmoduleringsområdet fra det, der er specificeret af FM_a1-parameteren til det, der er specificeret af FM_a2-parameteren
Princippet er det samme som for parametrene ADSR_a, ADSR_d og ADSR_r.
En PWM-frekvens på 31.250 Hz opnås ved at dele urfrekvensen (16 MHz) med 512. Programmet er designet på en sådan måde, at begivenheder er tidsbundne uden afbrydelser. I stedet er en timeroverløbbit involveret. For at programmet kan klare alt, hvad der kræves af det, bruges kun heltal på 8 og 16 bit. Sinusbølgen præsenteres i form af en tabel med 8-bit tal. Hjælpeaktioner - læsning af nøgletilstander, ændring af virtuelle instrumenter, valg af stemmer, beregning af notatparametre, der ændrer sig i tiden - er fordelt på 15 procedurer, som det tager 0,48 ms at gennemføre. På dette tidspunkt udføres nogle operationer med 32-bit præcision, hvilket er nødvendigt for at multiplicere to 16-bit binære tal.
En simpel sinusbølge lyder kedelig, fordi der ikke er nogen harmonikker i dens spektrum. FM-syntese giver dig mulighed for at modtage dem og ændre deres spektrum over tid ved at simulere lyden af rigtige instrumenter. Flere frekvenser giver en anharmonisk lyd, der for eksempel forekommer i klokker. Enheden imiterer godt ændringen i spektrum, der er iboende i virkelige instrumenter over tid, når nogle harmoniske henfalder hurtigere end andre.