Inhaltsverzeichnis:

Micro Midi-Synthesizer - Gunook
Micro Midi-Synthesizer - Gunook

Video: Micro Midi-Synthesizer - Gunook

Video: Micro Midi-Synthesizer - Gunook
Video: World's Smallest MIDI synthesizer 2024, Juli
Anonim
Mikro-Midi-Synthesizer
Mikro-Midi-Synthesizer
Mikro-Midi-Synthesizer
Mikro-Midi-Synthesizer
Mikro-Midi-Synthesizer
Mikro-Midi-Synthesizer

Dieses anweisbare zeigt die Verwendung des VLSI VS1053b Audio- und Midi-DSP-Chips in seinem Echtzeit-Midi-Modus. In diesem Modus fungiert er als 64-stimmiger polyphoner GM (General Midi) Midi-Synthesizer. Ein Arduino Uno Standalone-Mikro steuert ein OLED-Display, drei Tasten (Function Select und Up oder Down) und leitet den Midi-Datenstrom an den Audio-DSP weiter. Als Musikboard wurde das Adafruit VS1053 Codec Breakout Board gewählt, aber ein Sparkfun Music Breakout Board wurde ebenfalls erfolgreich getestet: Die Adafruit VS1053b-Bibliotheken wurden anstelle der viel größeren SFEMP3-Bibliothek verwendet (von Sparkfun empfohlen, obwohl sie auch über einen eigenen Satz von Bibliotheken verfügen), da ich den Adafruit-Code leichter verständlich fand.

Der größte Teil des Codes, der zur Steuerung des Audio-/Midi-DSP verwendet wird, wurde mit einem Arduino Uno entwickelt, der über ein Steckbrett mit dem Audio-/Midi-Breakout-Board verbunden ist. Nachdem festgestellt wurde, dass die Funktionen zufriedenstellend funktionieren, wurde der Uno als Programmierer für einen eigenständigen ATmega 328 verwendet, der dann zusammen mit dem 6N139-Opto-Isolator-IC, der auf der Midi-Eingangsbuchse (5-poliger DIN) erforderlich ist, auf ein kleines Veroboard der Größe 30x20 gesteckt wurde.. Ebenfalls angeschlossen war ein kleiner (64x48) OLED-Schild, drei Tasten, eine Midi-Aktivitäts-LED und ein +5-Volt-Barrel-Anschluss für die Stromversorgung und der Audio-Stereo-Ausgangsanschluss. Der Strombedarf ist sehr bescheiden - ca. 20 mA bei 5 Volt.

Schritt 1: Teileliste

ATmega328 Micro 28 Pin DIP + 28 Pin DIP Buchse 6N138 oder 6N139 Optoisolator + 4 Pin DIP BuchseWemos 64x48 I2C OLED Display oder ähnlichAdafruit VS1053b Codec Breakout Board3 Miniaturdrucktaster5 Pin DIN Midi Buchse Leiterplattenmontage bevorzugtKleine LED jede Farbe. Barrel-Typ Steckdose für die 5V VersorgungStereo Audio Buchse zum Anschluss an einen Verstärker oder KopfhörerWiderstände: 7 x 10k, 2 x 470 Ohm, 2 x 220 OhmKondensatoren: 0,1uF 50v Kunststoff, 10uf 25v elektrolytisch, 2 x 27 pF KeramikKleine Veroboard-Stücke (30 Streifen mal 20 Spalten und 4 Streifen mit 16 Spalten), ABS-Kunststoffgehäuse ca. 85x55x25mm, Verkabelung und ein paar Schrauben, Muttern und Unterlegscheiben.

Schritt 2: Konstruktion

Konstruktion
Konstruktion
Konstruktion
Konstruktion
Konstruktion
Konstruktion

Im Deckel des Gehäuses befinden sich das OLED-Display, die drei Tasten, die auf einem weiteren kleinen Stück Veroboard montiert sind, und der Barrel-Stromanschluss. Die Hauptplatine von Vero hat zwei Löcher, um die Musik-Breakout-Platine über dem ATmega328 zu befestigen. Einzelheiten zum Anschluss entnehmen Sie bitte dem Fritzing-Streifenplan.

Der programmierte ATmega328 (Code siehe nächster Abschnitt) wird dann in seinen Sockel gefolgt vom 6N139 gesteckt und alles angeschlossen.

Die LED dient als Midi-Aktivitätsanzeige und wurde an der Vorderseite des Gehäuses angebracht. Er ist über einen 470 Ohm Widerstand mit dem D2-Ausgang des ATmega328 verbunden.

Das OLED-Display verwendet den 3,3-Volt-Ausgang des Adafruit-Boards zur Stromversorgung - es benötigt weniger als 20 mA.

Versuchen Sie, die beiden Midi-Din-Anschlüsse zu vertauschen, wenn Sie bei der ersten Verwendung des Synthesizers keinen Ton hören.

Schritt 3: Software

Details der Skizze, die auf den ATmega328 hochgeladen werden soll, finden Sie in MidA.ino. Es stehen sieben Funktionen zur Verfügung:

Option P: Programm ändern - Ändern Sie das GM-Midi-Instrument von 1 auf 128 (ich habe 0 bis 127), z. B. einen Piano- oder Synth-Sound. Option B: Ändern Sie die Instrumentenbank zwischen Melodic (Bank 0) und Percussion (Bank 1). Option V: Stellen Sie die Lautstärke von 1 bis 10 ein. Option C: Ändern Sie den Midi-Kanal, auf den der Synth reagiert. Zur Auswahl stehen Kanal 0, Kanal 1, Kanal 9 (Percussion), Kanal 0 und 9 sowie Kanal 1 und 9. Option R: Ein- oder Ausschalten des Reverb-Effekts. Option S: Speichern der aktuellen Parameter im Eeprom-Speicher (Up) oder Lesen (nach unten) aus dem Eeprom-Speicher. Dies liegt daran, dass die Einstellungen sonst beim Herunterfahren nicht gespeichert werden. Option X: Senden Sie eine All Notes Off-Nachricht (Midi Reset).

Eine achte Option ist noch nicht implementiert - diese umgeht den ATmega als Midi-Filter und verbindet den Ausgang des Optoisolators direkt mit dem Rx-Pin des DSP-Boards.

Beachten Sie, dass der VS1053b in einem Echtzeit-Midi-Modus bootet, indem er während des Bootens einen komprimierten Patch mit 1039 Byte lädt - dies erhöht auch die Größe des Midi-Puffers und filtert systemexklusive Midi-Datenbytes. Details zu diesem Patch finden Sie auf der VLSI-Website.

Für die 64x48 Pixel Auflösung des OLED-Displays wurde eine leicht modifizierte Version der Adafruit Graphics Library verwendet - siehe die Links am Ende für Herrn Mcauser. Eine Liste der benötigten Bibliotheken ist im Sketch-Code enthalten.

Wenn die Skizze zum ersten Mal auf dem ATmega328 ausgeführt wird, egal ob auf einem Uno oder Standalone, lädt der Code Parametervoreinstellungen aus dem ATmega328 Eeprom, die möglicherweise nicht gültig sind. In diesem Fall können Sie entweder alle Nullen in das Eeprom schreiben, indem Sie die Option X mit der Abwärtstaste verwenden, oder die Zeile in der void setup-Funktion auskommentieren, die beim ersten Start Werte aus dem Eeprom lädt, Ihre Instrumente usw nach Belieben und speichern Sie dann Ihre Voreinstellungen mit der S-Option Up-Taste.

Alle genannten Personen und Entitäten werden für ihren Code und ihre Bibliotheken gutgeschrieben.

Schritt 4: Links

VLSI:

Adafruit:

Github VS1053b:

Github-Grafik:

Oled:

Sparkfun:

Schritt 5: Verwenden des Sparkfun-Boards mit den Adafruit-Bibliotheken

Verwenden des Sparkfun-Boards mit den Adafruit-Bibliotheken
Verwenden des Sparkfun-Boards mit den Adafruit-Bibliotheken

Die Tabelle im Bild erklärt, wie Sie entweder das Adafruit- oder das Sparkfun-Musikboard anschließen, um eine andere Bibliothek zu verwenden.

Empfohlen: