Innholdsfortegnelse:

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

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

Video: Micro Midi Synthesizer: 5 trinn (med bilder)
Video: Штукатурка стен - самое полное видео! Переделка хрущевки от А до Я. #5 2024, November
Anonim
Micro Midi Synthesizer
Micro Midi Synthesizer
Micro Midi Synthesizer
Micro Midi Synthesizer
Micro Midi Synthesizer
Micro Midi Synthesizer

Denne instruksen demonstrerer bruken av VLSI VS1053b Audio og Midi DSP-brikken i Midi-modus i sanntid. I denne modusen fungerer den som en 64 -stemme polyfonisk GM (General Midi) Midi -synthesizer. En frittstående Arduino Uno mikro styrer en OLED -skjerm, tre knapper (funksjonsvalg og opp eller ned, og sender Midi -datastrømmen videre til lyd -DSP. Musikkbrettet som ble valgt var Adafruit VS1053 codec breakout board, men et Sparkfun musikk breakout bord ble også testet. Adafruit VS1053b -bibliotekene ble brukt i stedet for det mye større SFEMP3 -biblioteket (anbefalt av Sparkfun, selv om de også har sitt eget sett med biblioteker), fordi jeg fant Adafruit -koden lettere å forstå.

Det meste av koden som ble brukt til å kontrollere audio/midi DSP ble utviklet ved hjelp av en Arduino Uno koblet til audio/midi breakout board gjennom et brødbrett. Etter at funksjonene viste seg å fungere tilfredsstillende, ble Uno brukt som programmerer for en frittstående ATmega 328 som deretter ble satt på en liten 30x20 størrelse Veroboard sammen med 6N139 opto-isolator IC som kreves på Midi-inngangen (en 5-pins DIN). Det var også tilkoblet et lite (64x48) OLED -skjold, tre knapper, en Midi -aktivitets -LED og en +5 volt fatkontakt for strøm og lydstereo -utgangskontakten som er lagt til. Strømkravene er svært beskjedne - ca 20 mA ved 5 volt.

Trinn 1: Deleliste

ATmega328 Micro 28 pin DIP + 28 pin DIP socket6N138 eller 6N139 optoisolator + 4 pin DIP socket Wemos 64x48 I2C OLED Display eller lignendeAdafruit VS1053b Codec breakout board3 miniature trykknapper 5 pin DIN Midi socket PCB mount foretrukket Små LED enhver farge. Lydkontakt Strømuttak for 5 kontakt for å koble til en forsterker eller hodetelefoner Motstander: 7 x 10k, 2 x 470 ohm, 2 x 220 ohm Kondensatorer: 0.1uF 50v plast, 10uf 25v elektrolytisk, 2 x 27 pF keramikk Små stykker Veroboard (30 strimler med 20 kolonner og 4 strimler 16 kolonner), ABS -plastkapsling ca 85x55x25mm, ledninger og noen skruer muttere og skiver.

Trinn 2: Konstruksjon

Konstruksjon
Konstruksjon
Konstruksjon
Konstruksjon
Konstruksjon
Konstruksjon

Lokket på kabinettet inneholder OLED -skjermen, de tre knappene som er montert på et annet lite stykke Veroboard, og fatkontakten. Hovedkortet til Vero har to hull for å fikse musikkbryterbordet over ATmega328. For tilkoblingsdetaljer, se diagrammet for Fritzing strip board.

Den programmerte ATmega328 (se den neste delen for koden) settes deretter inn i kontakten etterfulgt av 6N139 og alt kobles til.

Lysdioden brukes som en Midi aktivitetsindikator og ble montert på forsiden av skapet. Den er koblet til D2 -utgangen til ATmega328 via en 470 ohm motstand.

OLED -skjermen bruker 3,3 volt utgang fra Adafruit -kortet for strøm - den krever mindre enn 20 mA.

Prøv å bytte de to Midi Din -tilkoblingene hvis du ikke hører lyd når du bruker synthen første gang.

Trinn 3: Programvare

Detaljer om skissen som skal lastes opp til ATmega328 er gitt i MidA.ino. Det er syv funksjoner tilgjengelig:

Alternativ P: Endre program - endre GM Midi -instrumentet fra 1 til 128 (jeg brukte 0 til 127), for eksempel et piano eller Synth -lyd. Alternativ B: Endre instrumentbanken mellom Melodic (Bank 0) og Percussion (Bank 1). Alternativ V: Juster volumet fra 1 til 10. Alternativ C: Endre Midi -kanalen som Synth vil svare på. Valgene er Kanal 0, kanal 1, kanal 9 (perkusjon), kanal 0 og 9, og kanal 1 og 9. Alternativ R: Slå Reverb -effekten på eller av Alternativ S: Lagre gjeldende parametere i Eeprom -minne (opp) eller Les (ned) den tilbake fra Eeprom -minnet. Dette er fordi innstillinger ellers ikke blir lagret når du slår av. Alternativ X: Send en melding fra alle notater (Midi Reset).

Et åttende alternativ er ennå ikke implementert - dette vil omgå ATmega som et Midi -filter og koble utgangen til optoisolatoren direkte til Rx -pinnen på DSP -kortet.

Vær oppmerksom på at VS1053b starter i sanntids Midi -modus ved å laste en 1039 byte komprimert oppdatering under oppstart - dette øker også størrelsen på Midi -bufferen og filtrerer systemets eksklusive Midi -databyte. Detaljer om denne oppdateringen finner du på VLSI -nettstedet.

En litt modifisert versjon av Adafruit Graphics -biblioteket hadde blitt brukt for å imøtekomme oppløsningen på 64 x 48 piksler på OLED -skjermen - se koblingene gitt til slutt for Mr Mcauser. En liste over de nødvendige bibliotekene er gitt i skissekoden.

Viktigere når skissen blir utført for første gang på ATmega328, enten den er på en Uno eller frittstående, vil koden laste inn parameter forhåndsinnstillinger fra ATmega328 Eeprom som kanskje ikke er gyldige. I så fall kan du enten skrive alle nuller til Eeprom ved å bruke X -alternativet med nedknappen, eller kommentere linjen i funksjonen for ugyldig oppsett som laster inn verdier fra Eeprom når den først startes, justere instrumentene etc. til din liker, og lagre forhåndsinnstillingene dine med S -alternativet Opp -knappen.

Kreditt gis til alle personene og enhetene som er nevnt for koden og bibliotekene.

Trinn 4: Lenker

VLSI:

Adafruit:

Github VS1053b:

Github-grafikk:

Oled:

Sparkfun:

Trinn 5: Bruke Sparkfun Board sammen med Adafruit Libraries

Bruke Sparkfun -bordet med Adafruit -bibliotekene
Bruke Sparkfun -bordet med Adafruit -bibliotekene

Tabellen på bildet forklarer hvordan du kobler til enten Adafruit eller Sparkfun Music Boards for å bruke et annet bibliotek.

Anbefalt: