Forfatteren av Instructables under kallenavnet rgco kom med en firestemt 1,5-oktavssynteser på Arduino Uno. Til sammenligning er de utbredte barnesyntesene som skiller seg fra hverandre bare i design og laget av samme brikke, tre-stemmer. Det er sant at de automatisk kan akkompagnere musikken med rytme, memorere en-stemmemelodier og imitere dyrenes stemmer. Men da hjemmelaget produkt høres finere ut. Hvorfor?
Det handler om parametrene. Prøvetakingsfrekvens 31 kHz, 9 bit, 4 stemmer, FM-syntese med en tidsvarierende sveip, ADSR-konvolutt, 12 virtuelle instrumenter, 18 taster som spenner over 1,5 oktaver.
Mesteren komponerer synthesizerkretsen i Fritzing:
I den simulerer den plasseringen av komponenter på en brødbrett av brødtype og sammenhengene mellom dem:
Og samler ordningen i det virkelige liv:
Bare "hell og bruk" er det enkleste du kan gjøre med designen. 18 tangenter (fra FØR fjerde oktav til FA femte) - for å spille, bytter det nittende de virtuelle instrumentene i en ring: piano, xylofon, gitar, cymbaler, klokker, funky, vibrato, metall, fiolin, bass, trompet, trekkspill. Artens lyd påvirkes av varigheten av tastetrykkene, men ikke innsatsen, i motsetning til profesjonelle synthesizere. Men utvikleren vil at du skal prøve å programmere de virtuelle verktøyene dine også. Hver av dem er gitt av ti parametere. Veiviseren forteller deg hvilken parameter det avhenger av.
ldness - volum
Hvis denne parameteren er mindre enn 64, er overbelastning og relaterte forvrengning utelukket. Men hvis du programmerer et slikt virtuelt instrument som ikke høres ut på maksimalt volum lenge, kan verdien til denne parameteren overstige 64, siden alle fire stemmene samtidig høres sjelden ut.
tonehøyde0 - toneskift
Området tilsvarer det ovennevnte, hvis du setter denne parameteren til 12. Reduser beveger seg ned, øker - opp. Null tilsvarer et skifte ned nøyaktig en oktav, 24 - opp nøyaktig en oktav.
ADSR_a - volumet av slåttfrekvens fra null til maksimum
Jo mindre, jo saktere.For eksempel tilsvarer 8192 4 ms, 256 til 128 ms.
ADSR_d - hastighet for å redusere volumet fra det maksimale til det som er spesifisert av ADSR_s-parameteren.
Prinsippet er det samme.
ADSR_s - verdien som volumet avtar med et langt trykk på tasten
For eksempel 256 - volumet forblir maksimalt hele tiden mens tasten holdes inne. 192 - volumet synker til 80 prosent og forblir slik mens nøkkelen holdes nede. 0 - volumet synker til null, selv om tasten holdes nede.
ADSR_r - hastighet for å redusere volumet til null etter at du har sluppet tasten
Prinsippet er det samme som for ADSR_a og ADSR_d-parametrene.
FM_inc - forhold mellom modulasjonsfrekvens og tone
Med en verdi på 256 viser dette forholdet seg å være 1: 1, med 512 - 2: 1, med 128 - 1: 2, resten er analogt. Hvis denne parameteren er satt til et multiplum av 64, vil lyden være anharmonisk.
FM_a1 - frekvensmodulasjonsområdet i begynnelsen av en lapp
256 tilsvarer et bredt spekter av harmonikker. Med en nedgang er tonen renere, med en økning i harmoniske blir den mer.
FM_a2 - sveipefrekvensmodulasjon på slutten av et notat
Prinsippet er det samme. For de fleste virkelige instrumenter forfaller harmonikken raskere enn grunntonen. Gjør du det motsatte, får du uvanlige lyder.
FM_dec - overgangshastighet for frekvensmodulasjonsområdet fra det som er satt av FM_a1 til det som er satt av FM_a2
Prinsippet er det samme som for parameterne ADSR_a, ADSR_d og ADSR_r.
En PWM-frekvens på 31 250 Hz oppnås ved å dele klokkefrekvensen (16 MHz) med 512. Programmet er designet på en slik måte at hendelser kobles til tid uten avbrudd. I stedet er en timeroverløpsbits involvert. For at programmet skal klare å gjøre alt som kreves av det, brukes bare heltall på 8 og 16 bit. Sinusbølgen presenteres i form av en tabell med 8-bits tall. Tilleggsoperasjoner - lesing av nøkkeltilstander, endring av virtuelle instrumenter, valg av stemmer, beregning av notatparametere som endres i tid - er fordelt på 15 prosedyrer, som tar 0,48 ms å fullføre. På dette tidspunktet utføres noen operasjoner med 32-bits presisjon, noe som er nødvendig for å multiplisere to 16-biters binære tall.
En enkel sinusbølge høres kjedelig ut fordi det ikke er noen harmonikker i spekteret. FM-syntese lar deg motta dem og endre spekteret deres over tid, ved å simulere lyden til virkelige instrumenter. Flere frekvenser gir en anharmonisk lyd som for eksempel oppstår i bjeller. Enheten imiterer godt endringen i spekteret som ligger i virkelige instrumenter over tid, når noen harmoniske forfaller raskere enn andre.