Innehållsförteckning:

Micro Midi Synthesizer: 5 steg (med bilder)
Micro Midi Synthesizer: 5 steg (med bilder)

Video: Micro Midi Synthesizer: 5 steg (med bilder)

Video: Micro Midi Synthesizer: 5 steg (med bilder)
Video: Herman Li Breaks Guitar Onstage 2024, November
Anonim
Micro Midi Synthesizer
Micro Midi Synthesizer
Micro Midi Synthesizer
Micro Midi Synthesizer
Micro Midi Synthesizer
Micro Midi Synthesizer

Detta instruerbara visar användningen av VLSI VS1053b Audio och Midi DSP-chip i sitt realtid Midi-läge. I detta läge fungerar den som en 64 -tals polyfonisk GM (General Midi) Midi -synt. En fristående Arduino Uno -mikro styr en OLED -display, tre knappar (funktionsval och uppåt eller nedåt, och överför Midi -dataströmmen till ljud -DSP. Musikkortet som valdes var Adafruit VS1053 codec breakout -kort, men ett Sparkfun -musikbrytarkort testades också framgångsrikt. Adafruit VS1053b -biblioteken användes istället för det mycket större SFEMP3 -biblioteket (rekommenderat av Sparkfun även om de också har en egen uppsättning bibliotek), eftersom jag tyckte att Adafruit -koden var lättare att förstå.

Det mesta av koden som används för att styra ljud/midi DSP utvecklades med hjälp av en Arduino Uno ansluten till ljud/midi breakout -kortet genom ett brödbräda. Efter att funktionerna befanns fungera tillfredsställande användes Uno som programmerare för en fristående ATmega 328 som sedan sattes på en liten 30x20 storlek Veroboard tillsammans med 6N139 opto-isolator IC som krävs på Midi-ingången (en 5-stifts DIN). En liten (64x48) OLED -skärm, tre knappar, en Midi -aktivitets -LED och en +5 volt fatkontakt för ström och ljudstereo -utgångskontakten tillfogades också. Strömkraven är mycket blygsamma - cirka 20 mA vid 5 volt.

Steg 1: Dellista

ATmega328 Micro 28 -stifts DIP + 28 -stifts DIP -uttag 6N138 eller 6N139 optoisolator + 4 -stifts DIP -uttag Wemos 64x48 I2C OLED Display eller liknandeAdafruit VS1053b Codec breakout board3 miniatyr tryckknappar 5 stift DIN Midi -uttag PCB -fäste föredraget Liten LED vilken färg som helst. uttag för anslutning till en förstärkare eller hörlurar Resistorer: 7 x 10k, 2 x 470 ohm, 2 x 220 ohm Kondensatorer: 0.1uF 50v plast, 10uf 25v elektrolytisk, 2 x 27 pF keramik Små bitar av Veroboard (30 remsor med 20 kolumner och 4 remsor) med 16 kolumner), ABS -plasthölje ca 85x55x25mm, ledningar och några skruvar muttrar och brickor.

Steg 2: Konstruktion

Konstruktion
Konstruktion
Konstruktion
Konstruktion
Konstruktion
Konstruktion

Locket på höljet rymmer OLED -skärmen, de tre knapparna som är monterade på en annan liten bit Veroboard och fatets strömkontakt. Huvudvero -kretskortet har två hål för att fixa musikbrytarkortet ovanför ATmega328. För anslutningsdetaljer, se Fritzing strip board -diagrammet.

Den programmerade ATmega328 (se nästa avsnitt för koden) sätts sedan in i uttaget följt av 6N139 och allt är anslutet.

Lysdioden används som Midi -aktivitetsindikator och monterades på framsidan av höljet. Den är ansluten till D2 -utgången från ATmega328 via ett 470 ohm motstånd.

OLED -skärmen använder 3,3 volt utgång från Adafruit -kortet för ström - det kräver mindre än 20 mA.

Prova att byta ut de två Midi Din -anslutningarna om du inte hör något ljud när du använder synten första gången.

Steg 3: Programvara

Detaljer om skissen som ska laddas upp till ATmega328 finns i MidA.ino. Det finns sju funktioner tillgängliga:

Alternativ P: Ändra program - ändra GM Midi -instrumentet från 1 till 128 (jag använde 0 till 127), till exempel ett piano eller Synth -ljud. Alternativ B: Ändra instrumentbanken mellan Melodic (Bank 0) och Percussion (Bank 1). Alternativ V: Justera volymen från 1 till 10. Alternativ C: Ändra Midi -kanalen som Synth svarar på. Alternativen är Kanal 0, kanal 1, kanal 9 (slagverk), kanal 0 och 9 och kanal 1 och 9. Alternativ R: Slå på eller stänga av reverb -effekten Alternativ S: Spara de aktuella parametrarna i Eeprom -minne (upp) eller Läs (ner) tillbaka från Eeprom -minnet. Detta beror på att inställningar annars inte sparas vid avstängning. Alternativ X: Skicka ett meddelande om alla anteckningar (Midi Reset).

Ett åttonde alternativ är ännu inte implementerat - detta kommer att kringgå ATmega som ett Midi -filter och ansluta optoisolatorns utgång direkt till Rx -stiftet på DSP -kortet.

Observera att VS1053b startar i ett realtid Midi -läge genom att ladda en 1039 byte komprimerad patch under uppstart - detta ökar också storleken på Midi -bufferten och filtrerar systemets exklusiva Midi -databyte. Detaljer om denna patch finns på VLSI: s webbplats.

En något modifierad version av Adafruit Graphics -biblioteket hade använts för att tillgodose 64x48 pixlar upplösningen på OLED -skärmen - se länkarna som gavs i slutet för Mr Mcauser. En lista över de nödvändiga biblioteken finns i skisskoden.

Viktigare när skissen körs för första gången på ATmega328, oavsett om den är på en Uno eller fristående, kommer koden att ladda parameterförinställningar från ATmega328 Eeprom som kanske inte är giltiga. I så fall kan du antingen skriva alla nollor till Eeprom med hjälp av alternativet X med nedknappen, eller kommentera raden i tomrumsinställningsfunktionen som laddar värden från Eeprom när den startas första gången, justera dina instrument etc. till din gilla, och spara sedan dina förinställningar med S -alternativet Upp -knappen.

Kredit ges till alla personer och enheter som nämns för deras kod och bibliotek.

Steg 4: Länkar

VLSI:

Adafruit:

Github VS1053b:

Github-grafik:

Oled:

Sparkfun:

Steg 5: Använda Sparkfun Board med Adafruit Libraries

Använda Sparkfun -styrelsen med Adafruit -biblioteken
Använda Sparkfun -styrelsen med Adafruit -biblioteken

Tabellen i bilden förklarar hur du ansluter antingen Adafruit eller Sparkfun Music Boards för att använda ett annat bibliotek.

Rekommenderad: