Inhoudsopgave:

Arduino MIDI Chiptune Synthesizer - Ajarnpa
Arduino MIDI Chiptune Synthesizer - Ajarnpa

Video: Arduino MIDI Chiptune Synthesizer - Ajarnpa

Video: Arduino MIDI Chiptune Synthesizer - Ajarnpa
Video: Obscura, an Arduino-compatible MIDI 8-bit Chiptune Synthesizer 2024, November
Anonim
Arduino MIDI Chiptune Synthesizer
Arduino MIDI Chiptune Synthesizer

Beleef het plezier van oude computergamemuziek opnieuw met een authentieke 8-bits chiptune-synthesizer, die je via MIDI kunt besturen vanuit het comfort van elke moderne DAW-software.

Dit eenvoudige circuit gebruikt een Arduino om een AY-3-8910 programmeerbare geluidsgeneratorchip (of een van de vele klonen) aan te sturen om dat geluid uit de jaren 80 na te bootsen. In tegenstelling tot de vele ontwerpen die gespecialiseerde software nodig hebben om muziek te bewerken, ziet dit eruit als een standaard USB MIDI-apparaat. De synthesizer heeft een slim algoritme dat de meest muzikaal relevante noten probeert te laten spelen; in veel gevallen kun je er niet-bewerkte MIDI-bestanden rechtstreeks naartoe gooien en komt het deuntje er meteen uit. De totale kosten zouden ongeveer € 20 moeten zijn.

Stap 1: Dingen die je nodig hebt

Dingen die je nodig hebt
Dingen die je nodig hebt
Dingen die je nodig hebt
Dingen die je nodig hebt
Dingen die je nodig hebt
Dingen die je nodig hebt

De volledige onderdelenlijst hiervoor, zoals u op de foto's ziet, is als volgt:

  • Sparkfun Pro Micro-kloon (5V, 16MHz-optie). Ik heb deze op Amazon gebruikt.
  • Yamaha YM2149F PSG-chip. Ik heb de mijne van eBay.
  • 2 x 100nF keramische condensatoren
  • 1 elk van 75R, 1K en 100K weerstanden (1/4 watt vermogen is prima).
  • 4.7nF keramische schijfcondensator
  • 1uF elektrolytische condensator (spanning > 5V).
  • 40-pins 0,6" DIP IC-aansluiting
  • 2 x 12-weg 0,1" headers (deze van CPC)
  • Prototyping bord, 3 "bij 2" ong. Ik kocht een bulkverpakking hiervan, opnieuw op Amazon.
  • PCB-montage phono-aansluiting
  • Miniatuur draad met vaste kern (zoals deze).

Je hebt ook een soldeerbout, soldeer, draadknipper, tang en een draadstripper nodig.

Stap 2: alternatieve onderdelen

Alternatieve onderdelen
Alternatieve onderdelen
Alternatieve onderdelen
Alternatieve onderdelen
Alternatieve onderdelen
Alternatieve onderdelen

Alternatieve programmeerbare geluidsgeneratorchips

De YM2149 die ik gebruikte is een kloon van de originele General Instruments AY-3-8910 IC. (Het eerste prototype gebruikte een AY-3-8910 die ik van eBay kocht, maar het bleek dat de witte ruisgenerator niet werkte. Triest gezicht). U kunt beide gebruiken voor dit project zonder enige wijzigingen.

General Instruments maakte ook varianten AY-3-8912 en AY-3-8913, die hetzelfde silicium waren in kleinere pakketten, zonder wat extra I/O-pinnen. Deze pinnen zijn niet nodig voor audiodoeleinden en dit project gebruikt ze niet. U kunt een AY-3-8912 of -8913 gebruiken, volg gewoon de pinouts die hierboven worden weergegeven.

Alternatieve Arduino's

De "Pro Micro" die ik heb gebruikt, is een kopie van het Pro Micro-bord van Sparkfun. Als je niet zeker bent van Arduino-code, kun je dit het beste volhouden; als je het ontwerp wilt aanpassen, heb je de volgende specificaties nodig:

  • ATmega 16u4 of 32u4 apparaat (nodig om te fungeren als een USB MIDI apparaat; de ATmega 168 of 328 kan dit niet).
  • 5V-werking (de AY-3-8910 werkt op 5V) en een kloksnelheid van 16 MHz.
  • Minimaal 13 digitale I/O-lijnen.

    Poortpin PB5 moet aangesloten zijn (deze wordt gebruikt om een kloksignaal van 1 MHz te genereren). Op de Pro Micro wordt dit gebruikt als de D9 I/O-pin

De Arduino Leonardo- en Micro-borden passen beide, hoewel ik ze niet heb geprobeerd.

Overige onderdelen

De weerstanden en condensatoren die hier worden gebruikt zijn niet bijzonder. Alle delen van (ongeveer) de juiste waarde zouden moeten werken.

Stap 3: De printplaat leggen

De printplaat neerleggen
De printplaat neerleggen

Om het circuit te bouwen, is het het beste om te beginnen met het positioneren van de sockets en vervolgens de weerstanden en condensatoren toe te voegen. We zullen deze in de volgende stap samen bekabelen.

Gebruik de bovenstaande afbeelding als richtlijn, plaats de 40-pins IC-socket, draai het bord om en soldeer eerst twee tegenover elkaar liggende hoekpinnen. Als de socket dan niet plat tegen het bord ligt, is deze eenvoudig te repareren door een of andere pin opnieuw te solderen. Als het goed is, soldeert u de rest.

Plaats de twee 12-pins aansluitingen en steek de Arduino erin om ze verticaal en stabiel te houden tijdens het solderen. Nogmaals, door eerst twee pinnen aan elk uiteinde te solderen, kunt u controleren voordat u definitief gaat solderen.

Voor de audio-uitgang heb ik een kleine boor gebruikt om de PCB-gaten te vergroten, omdat de montage-tags vrij groot zijn.

Stap 4: Bedrading

Bedrading
Bedrading
Bedrading
Bedrading

Zodra de belangrijkste componenten zijn geplaatst, kunnen ze worden aangesloten op de achterkant van het bord, volgens het bovenstaande circuit.

De audio-uitgangscomponenten (R2, R3, C2, C3) en ontkoppelingscondensatoren (C1, C4) kunnen worden aangesloten met massieve draad (of afgeknipte componenten van kabels). De massa- en stroomverbindingen van de Arduino naar de PSG-chip (rode en zwarte draden, op de foto) kunnen nu worden gemaakt.

De verschillende uitgangen van de Pro Micro zijn als volgt aangesloten op de AY-3-8910 (zie de aansluitgids voor pintoewijzingen):

Signaal Arduino AY-3-8910 pin

DA0 D2 37 DA1 D3 36 DA2 D4 35 DA3 D5 34 DA4 D6 33 DA5 D7 32 DA6 D8 31 DA7 A0/D18 30 BC1 D10 29 BC2 MOSI/D16 28 BDIR MISO/D14 27 RESET# SCLK/D15 23 CLOCK D9 22 (via R1, 75 ohm)

Stap 5: Programmeren met de Arduino IDE

Programmeren met behulp van de Arduino IDE
Programmeren met behulp van de Arduino IDE

Als Arduino nieuw voor je is, raad ik je ten zeerste aan om een van de vele tutorials over de basis te proberen. De aansluitingsgids van Sparkfun geeft volledige details. U kunt controleren of de basisprogrammering werkt door de tutorial "Blinkies" te volgen. Arduino's kunnen een beetje lastig zijn om in de 'bootloader'-modus te komen (waar je nieuwe schetsen kunt laden), dus een beetje oefenen met een eenvoudig voorbeeld is handig.

Als je tevreden bent, download dan het chiptunes.ino-bestand dat aan deze pagina is toegevoegd, en bouw en upload het. (Ik heb ontdekt dat het gebruik van het bordtype "Arduino/Genuino Micro" OK is voor deze schets, als je het installeren van de Sparkfun-bordondersteuning wilt overslaan).

Houd er ook rekening mee dat als je een Mac gebruikt, de "Poort"-instelling moet worden gewijzigd zodra je de schets voor de eerste keer hebt geladen. Met een 'lege' Arduino (of met behulp van de Blinky-schets) zal het verschijnen als iets als /dev/cu.usbmodemXXXX, zoals weergegeven in de afbeelding hierboven. Als het USB MIDI-apparaat actief is (zoals gebruikt door de chiptunes.ino-schets), is dit /dev/cu.usbmodemMID1.

Stap 6: De Synthesizer testen en gebruiken

De Synthesizer testen en gebruiken
De Synthesizer testen en gebruiken
De Synthesizer testen en gebruiken
De Synthesizer testen en gebruiken
De Synthesizer testen en gebruiken
De Synthesizer testen en gebruiken

Zodra de Arduino is geprogrammeerd, moet uw werkstation deze automatisch herkennen als een USB MIDI-apparaat. Het zal verschijnen met de naam 'Arduino Micro' - u zou dit moeten kunnen zien in Apparaatbeheer in Windows, of de app "Systeeminformatie" in Mac OS.

Op een Mac kun je de Audio MIDI Setup-app gebruiken om een basistest uit te voeren. Start de app en kies vervolgens Venster -> Toon MIDI Studio. Dit zal het MIDI Studio-venster openen - al je MIDI-interfaces verschijnen in een enigszins willekeurige opstelling - die hopelijk het 'Arduino Micro'-apparaat zal bevatten. Als u op het 'Test Setup'-pictogram in de werkbalk klikt en vervolgens op de pijl-omlaag (zie afbeelding) op het Arduino Micro-apparaat klikt, stuurt de app MIDI-notities naar de synth. (Deze zijn niet bijzonder melodieus!) De synth zou op dit punt wat willekeurige geluiden moeten maken.

U kunt dan 'Arduino Micro' als uitvoerapparaat toevoegen aan de MIDI-setup van uw Digital Audio Workstation en beginnen met spelen!

  • De synth reageert op MIDI-kanalen 1 tot 4. Elk kanaal heeft een ander geluid (nou ja, een andere volume-envelop).
  • MIDI-noten tussen 24 en 96 (C1-C7) worden geaccepteerd; noten buiten dit bereik worden genegeerd.
  • MIDI-kanaal 10 speelt drumgeluiden. Noteer nummers tussen 35 en 50 (zie

    www.midi.org/specifications-old/item/gm-level-1-sound-set) worden geaccepteerd.

  • Er zijn drie spraakkanalen op de AY-3-8910. De synth-firmware probeert de meest recent verzonden noot af te spelen, terwijl de hoogste en laagste momenteel gevraagde noten nog steeds spelen. Andere noten (meestal de middelste noten in een akkoord) worden indien nodig afgesneden.

En daar gaat het om. Veel plezier!

Stap 7: Voetnoten

Over de demomelodie

De demo-melodie - de beroemde Queen Of The Night-aria van Mozart - was redelijk snel gemaakt op basis van een MIDI-bestand dat ik op internet vond (https://www.midiworld.com/mozart.htm). Iemand anders heeft al het harde werk gedaan!

Ik gebruik Presonus Studio One op een Mac en het MIDI-bestand is geïmporteerd naar vier afzonderlijke tracks. Er was een kleine hoeveelheid bewerking nodig waar de begeleidingsnoten hoger zijn dan de hoofdmelodie, en om enkele van de meer aanstootgevende glitches tussen de noten te verwijderen.

De audio die je op de clip hoort, komt rechtstreeks van de synth, met slechts een vleugje EQ en verzadiging om het een beetje een 'arcademachine' low-fi-gevoel te geven.

Aanbevolen: