» Muziekinstrumenten »Vierstemmige synthesizer op Arduino Uno

Vierstemmige synthesizer op Arduino Uno



De auteur van Instructables onder de bijnaam rgco bedacht een vierstemmige 1,5-octaaf synthesizer aan Arduino Uno. Ter vergelijking: de wijdverbreide synthesizers voor kinderen die alleen qua ontwerp van elkaar verschillen en door dezelfde chip zijn gemaakt, zijn driestemmig. Toegegeven, ze kunnen de muziek automatisch met ritme begeleiden, eenstemmige melodieën onthouden en de stemmen van dieren imiteren. Maar dan zelfgemaakt klinkt leuker. Waarom?



Het draait allemaal om de parameters. Bemonsteringsfrequentie 31 kHz, 9 bit, 4 stemmen, FM-synthese met een in tijd variërende sweep, ADSR-envelop, 12 virtuele instrumenten, 18 toetsen van 1,5 octaven.

De master stelt het synthesizercircuit in Fritzing samen:



Daarin simuleert het de locatie van componenten op een breadboard-type breadboard en de verbindingen daartussen:



En verzamelt het schema in het echte leven:



Gewoon 'gieten en gebruiken' is het eenvoudigste wat u kunt doen met het ontwerp. 18 toetsen (van VOORAF het vierde octaaf tot en met FA vijfde) - om te spelen, schakelt de negentiende de virtuele instrumenten in een ring: piano, xylofoon, gitaar, cimbalen, bellen, funky, vibrato, metal, viool, bas, trompet, accordeon. De aard van het geluid wordt beïnvloed door de duur van de toetsaanslagen, maar niet door de inspanning, in tegenstelling tot professionele synthesizers. Maar de ontwikkelaar wil dat u ook probeert uw virtuele tools te programmeren. Elk van hen wordt gegeven door tien parameters. De wizard vertelt u van welke parameter het afhangt.

ldness - volume

Als deze parameter kleiner is dan 64, zijn overbelasting en gerelateerde vervormingen uitgesloten. Maar als u een dergelijk virtueel instrument programmeert dat niet lang op maximaal volume klinkt, kan de waarde van deze parameter 64 overschrijden, aangezien alle vier de stemmen niet vaak tegelijkertijd klinken.

pitch0 - toonhoogteverschuiving

Het bereik komt overeen met het bovenstaande, als u deze parameter instelt op 12. Afname beweegt naar beneden, verhogen - omhoog. Nul komt overeen met een verschuiving van exact één octaaf omlaag, 24 - precies één octaaf omhoog.

ADSR_a - volume zwenksnelheid van nul tot maximum

Hoe kleiner, hoe langzamer.8192 komt bijvoorbeeld overeen met 4 ms, 256 tot 128 ms.

ADSR_d - snelheid om het volume te verlagen van het maximum tot het volume gespecificeerd door de ADSR_s-parameter.

Het principe is hetzelfde.

ADSR_s - de waarde waarnaar het volume afneemt als de toets lang wordt ingedrukt

Bijvoorbeeld 256 - het volume blijft de hele tijd maximaal terwijl de toets ingedrukt wordt gehouden. 192 - het volume daalt tot 80 procent en blijft zo terwijl de toets ingedrukt wordt gehouden. 0 - volume neemt af tot nul, zelfs als de toets ingedrukt wordt gehouden.

ADSR_r - snelheid om het volume tot nul te verlagen na het loslaten van de toets

Het principe is hetzelfde als voor de ADSR_a en ADSR_d parameters.

FM_inc - verhouding van modulatiefrequentie tot toon

Met een waarde van 256 blijkt deze verhouding 1: 1 te zijn, met 512 - 2: 1, met 128 - 1: 2, de rest is naar analogie. Als deze parameter is ingesteld op een veelvoud van 64, is het geluid anharmonisch.

FM_a1 - het bereik van frequentiemodulatie aan het begin van een noot

256 komt overeen met een breed scala aan harmonischen. Bij een afname is de toon schoner, bij een toename van de harmonischen wordt het meer.

FM_a2 - sweep frequentie modulatie aan het einde van een noot

Het principe is hetzelfde. Voor de meeste echte instrumenten vervallen harmonischen sneller dan de grondtoon. Als je het tegenovergestelde doet, krijg je ongebruikelijke geluiden.

FM_dec - overgangssnelheid van het frequentiemodulatiebereik van degene ingesteld door FM_a1 naar degene ingesteld door FM_a2

Het principe is hetzelfde als voor de parameters ADSR_a, ADSR_d en ADSR_r.

Een PWM-frequentie van 31.250 Hz wordt verkregen door de klokfrequentie (16 MHz) te delen door 512. Het programma is zo ontworpen dat gebeurtenissen zonder onderbrekingen aan tijd worden gekoppeld. In plaats daarvan gaat het om een ​​timeroverloopbit. Om ervoor te zorgen dat het programma alles kan doen wat nodig is, worden alleen gehele getallen van 8 en 16 bits gebruikt. De sinusgolf wordt weergegeven in de vorm van een tabel met 8-bits getallen. Nevenbewerkingen - het lezen van belangrijke toestanden, het wijzigen van virtuele instrumenten, het selecteren van stemmen, het berekenen van notenparameters die in de tijd veranderen - worden verdeeld over 15 procedures, die 0,48 ms in beslag nemen. Op dit moment worden sommige bewerkingen uitgevoerd met 32-bits precisie, wat nodig is om twee 16-bits binaire getallen te vermenigvuldigen.

Een simpele sinusgolf klinkt saai omdat er geen harmonischen in zijn spectrum zijn. Met FM-synthese kunt u ze ontvangen en hun spectrum in de loop van de tijd veranderen, waardoor het geluid van echte instrumenten wordt gesimuleerd. Meerdere frequenties geven een anharmonisch geluid dat bijvoorbeeld in klokken voorkomt. Het apparaat bootst goed de verandering in spectrum na die inherent is aan echte instrumenten in de tijd, wanneer sommige harmonischen sneller vervallen dan andere.
10
9.3
8.4

Voeg een opmerking toe

    • lachglimlachtxaxaokweet het nietyahoonea
      baaskrabbendwaasjaja-jaagressiefgeheim
      sorrydansdance2dance3pardonhulpdrankjes
      stopvriendengoedgoedfluitjebezwijmdtong
      rookklappencrayverklarenbeledigenddon-t_mentiondownloaden
      hittebooslach1mdavergaderingmoskingnegatief
      not_ipopcornstraffenlezenschrikschriktzoeken
      bespottendankjewelditto_clueUmnikacuutmee eens
      slechtbeeeblack_eyeblum3: oopscheppenverveling
      gecensureerdbeleefdheidgeheim2bedreigenoverwinningyusun_bespectacled
      shokrespektlolvoorgekomenwelkomkrutoyya_za
      ya_dobryihelperne_huliganne_othodifludverbodsluiten
1 commentaar
kiril_vihrov7892
Een interessant project.
Onlangs zag ik het project "Synthesizer op Arduino" als toetsen, bijna het hele pc-toetsenbord wordt gebruikt
Van de details van alle Arduino, een luidspreker en een computer.
De pc-applicatie doet al het werk, het bestuurt Arduino via de com-poort
herhaald, alles werkt prima. Kijk kan helpen

We raden je aan om te lezen:

Geef het voor de smartphone ...