Inhaltsverzeichnis:

Eine weitere MIDI-zu-CV-Box - Gunook
Eine weitere MIDI-zu-CV-Box - Gunook

Video: Eine weitere MIDI-zu-CV-Box - Gunook

Video: Eine weitere MIDI-zu-CV-Box - Gunook
Video: Midi to CV Converter MBHP CV + analog synth 2024, Juli
Anonim
Eine weitere MIDI-zu-CV-Box
Eine weitere MIDI-zu-CV-Box

Eine andere MIDI-to-CV-Box ist ein Projekt, das ich entwickelt habe, als ein Korg MS10 an meine Tür klopfte und in meinem Studio stattfand. Da sich mein Setup stark auf MIDI bezieht, um alle Instrumente zu automatisieren und zu synchronisieren, war das erste Problem, das ich beim Kauf des MS10 hatte, die Implementierung einer solchen Steuerung.

Korg MS20/10 sind nicht die einfachsten Synthesizer, um MIDI zu implementieren: Erstens verlassen sie sich auf die Hz/V-Steuerung (lineare Korrelation zwischen der Steuerspannung und der Notenfrequenz), anstatt auf Okt/V (1V pro Oktave); Zweitens müssen Sie zum Triggern einer Note ein negatives Gate-Signal senden und den Eingang mit Masse kurzschließen (S-Trig), kein +5-V-Signal (V-Trig).

Es gibt heutzutage diverse kommerzielle Lösungen um solche Instrumente zu steuern (z. B. Arturia Beatstep Pro, Korg SQ-1, Kenton Solo) aber ich bin ein billiger Bastard und selbst 100 Euro sind zu viel für ein "nicht klingendes" Gerät:).

Hier sind wir dann: Lassen Sie mich Ihnen zeigen, wie Sie eine Low-Budget-MIDI-zu-CV-Box bauen, um Tonhöhe, Gate, Velocity und Cutoff-Frequenz eines Pre-MIDI-Synths mit einem externen MIDI-Controller (Keyboard, DAW, Sequenzer oder was auch immer) zu steuern / zu automatisieren..

"Was ist mit dem neuen MS20 mini?"

Wie fast jeder weiß, ist der neue MS20 tatsächlich MIDI ready:IN mit einem 5-poligen MIDI-Anschluss und IN/OUT mit USB-Anschluss.

"Also, wenn ich ein MS20 mini habe, ist dieses Ding nutzlos!"

Nun, nein. MS20 mini erkennt nur Note-On/Off-Meldungen und die Tastatur ist nicht anschlagdynamisch. Mit der MS10/20 Vintage- oder Mini-Tastatur ist dies nicht zu überwinden, aber mit Midi-Box und einer anschlagdynamischen Tastatur sind Sie goldrichtig. Darüber hinaus können Sie mit der MIDI-Box den Filter-Cutoff (oder jeden anderen spannungssteuerbaren Parameter) automatisieren oder durch die eingehende MIDI-Note auf Velocity modulieren lassen. Der einzige MIDI-Kanal, auf den das MS20 mini reagiert, ist wiederum Kanal 1. Mit dieser Box können Sie auch diese Grenze überwinden.

"Was ist, wenn ich einen Oct/V-Synth habe?"

Kein Problem! Der Code, den ich geschrieben habe, ist mit Oct/V-Synthesizern kompatibel (ungetestet, aber ich bin zuversichtlich, dass das sofort funktioniert;)).

Schritt 1: !! Achtung - Haftungsausschluss

Ihre Ausrüstung ist sehr wertvoll und sollte nicht zur Durchführung von Tests verwendet werden.

Das Spielen mit Elektrizität kann Ihre Ausrüstung schwer beschädigen oder sich selbst schaden.

Ich kann nicht für Schäden an Ihrer Ausrüstung / Hardware oder sogar an Ihnen selbst verantwortlich gemacht werden, die aus einer der Software oder Schemata oder Informationen oder Links stammen, die ich in dieser Anleitung gemeldet habe.

Du wurdest gewarnt!

Schritt 2: Engineering der Hardware

Arduino ist praktisch, wenn es um solche Projekte geht. Die Existenz einer großen Community und sehr gute Bibliotheken, die fast alle gängigen Aufgaben abdecken, machen es zur richtigen Wahl. Hier wird das Board so programmiert, dass es eingehende MIDI-Daten liest und dann entsprechende Spannungen an den Antrieb sendet:

- Pitch, indem ein PWM-Ausgang in eine analoge Spannung umgewandelt wird, um den VCO über einen Digital-Analog-Wandler (DAC) anzusteuern

- Geschwindigkeit, durch Filtern eines PWM-Ausgangs, um den VCA mit einem einfachen RC-Filter anzusteuern

- Filtern Sie die Grenzfrequenz, indem Sie einen PWM-Ausgang filtern, um den VCF mit einem einfachen RC-Filter anzusteuern

- Gate, direkt von einem Digitalausgang bei V-Trigger (ein 1Kohm in Reihe mit dem Ausgang schalten, um die Stromaufnahme zu reduzieren) oder durch einen einfachen pnp-Transistorschalter aus dem Digitalausgang (siehe Schaltplan im Schaltplanschritt).

Arduino kann keine konstanten Spannungen direkt ausgeben, sondern 0/+5 V-Impulse mit verschiedenen Perioden (PWM). Wir brauchen Digital-Analog-Wandler (DAC) für die Gießkanne. RC-Filter sind der einfachste DAC, den ich mir vorstellen kann. Ein RC-Filter ist gut genug für den spannungsgesteuerten Verstärker und Filter (VCA und VCF). Die RC-Filter sind auf eine Grenzfrequenz < 20 Hz (niedrigste hörbare Frequenz) zugeschnitten.

Ich habe einige Tests mit nicht polarisierten Kondensatoren mit geringer Kapazität durchgeführt und endete mit einem Kapazitätswert von 0,1 uF, um die beste Passform zu sein. Gut getestet auf einem MS20 MKII.

Leider können wir uns nicht auf ein RC-Filter verlassen, um den spannungsgesteuerten Oszillator (VCO) anzusteuern, da es nicht genau genug wäre (in der Hz/V-Skala unterscheiden sich am unteren Ende zwei gegenüberliegende Halbtöne um weniger als 0,02 V; in V /oct zwei gegenüberliegende Halbtöne unterscheiden sich für 0,083 V); Wir werden dafür einen IC DAC (MPC4725) verwenden.

Bekannte Grenzen

Durch die Begrenzung der Antriebsspannung auf 5 V (die Arduino-Ausgangsspannung) wird der gesamte Bereich von 0 bis 5 V für die Geschwindigkeit abgedeckt; der Cutoff ist halb bedeckt (-5V bis +5V); der VCO-Bereich wird teilweise abgedeckt, da in Hz/V eine Spannung von 8 V erforderlich wäre, um den 440 Hz A4 zu erreichen. Mit einer Ausgangsgrenze von 5 V können wir den Oszillator bis zur D4-Frequenz in Hz/V anheben.

Schritt 3: Komponentenliste

Komponentenliste
Komponentenliste
Komponentenliste
Komponentenliste
Komponentenliste
Komponentenliste

Sie benötigen:

1X Arduino UNO (oder Nano)

1X MPC4725 DAC-Platine

4X 1/8" oder 1/4" Mono-Anschlüsse

1X MIDI-Anschluss

1X 6N138 Optokoppler

1X 1N4148 Diode

1X 220 Ohm 1/4 W Widerstand

1X 470 Ohm 1/4 W Widerstand

1X 10K Ohm 1/4 W Widerstand

4X 1K Ohm 1/4 W Widerstand

2X 0,1 uF Kondensator

1X BC547 pnp-Transistor (bei S-trig)

1X ABS-Box (mind. 55 x 70 x 100 mm)

… und natürlich Steckbrett oder Perfboard, Lötkolben, Lötdraht und Kabel (2 Meter 28 AWG sollten ausreichen).

Beachten Sie, dass in den obigen Bildern mein Prototyp 100-uF-Elektrolytkappen montiert, die jedoch aufgrund der Kapazitätsladezeit zu langsam sind. Eine Kapazität von 0,1uF ist die richtige Wahl.

Ich habe einen zusätzlichen Anschluss verwendet, um mein Arduino mit Strom zu versorgen; Es ist nicht notwendig, den Mikrocontroller direkt über den integrierten Mini-USB-Anschluss zu entsaften.

Schritt 4: Anschlüsse/Schaltpläne

Anschlüsse/Schaltpläne
Anschlüsse/Schaltpläne
Anschlüsse/Schaltpläne
Anschlüsse/Schaltpläne
Anschlüsse/Schaltpläne
Anschlüsse/Schaltpläne

MIDI-EINGANG

Die MIDI-IN-Schaltung ist einfach und im Netz gut beschrieben. Nehmen Sie zum Beispiel diese ausgezeichnete Anleitung auf MIDI und Arduino von Amanda Gassaei. Ich habe trotzdem den n-ten Schaltplan gemacht.

Beachten Sie, dass ich im MIDI-IN-Schema einen Schalter hinzugefügt habe (Schalter 1): Dies ist notwendig, wenn ein neuer Sketch auf Arduino hochgeladen wird, da der Opto die RX-Leitung auch ohne eingehende Midi-Nachrichten stört. Sie müssen den Schalter öffnen, bevor Sie Ihre Skizze hochladen, oder die IDE kann die neue Skizze nicht hochladen.

Sie können die Skizze schließlich ändern, um eine serielle Softwarekommunikation zu verwenden.

DAC, RC-Filter, Synthesizer

Die Anschlüsse für DAC, RC-Filter und Synth (Pitch, Gate und Velocity) sind im Diagramm oben dargestellt. Als Referenz habe ich ein Korg MS20-Patchpanel genommen, aber ich habe auch alles auf einem MS10 getestet. Die direkte Verbindung der Velocity-CV mit dem Patch-Punkt "Initial Gain" des VCA hat keine Auswirkung (ich muss das Ding weiter ausgraben), aber wenn Sie ihn mit dem Patch-Punkt "Total" verbinden und Ihre gesamten externen Potis (MG/T. EXT) hören Sie schöne Klangvariationen in Abhängigkeit von der Noten-Velocity.

Meine Schaltpläne (und auch mein Prototyp) verwenden keinen Strombegrenzungswiderstand am DAC-Ausgang, aber es ist immer eine gute Idee, einen zu platzieren, um eine lange Lebensdauer Ihrer Schaltungen zu gewährleisten. Ein 220 Ohm Widerstand reicht aus.

Beachten Sie, dass in den obigen Schemata 100 uF elektrolytische Kappen angegeben sind, die jedoch aufgrund der Kapazitätsladezeit zu langsam sind. Nicht polarisierte 0,1uF-Kappen sind die richtige Wahl.

Gate aus

Falls Sie einen Synthesizer sequenzieren wollen, der mit V-Trig (Spannungstrigger)-Signalen kompatibel ist, reicht ein 1k Ohm Serienwiderstand aus, um die Stromaufnahme zu reduzieren; Im Falle eines S-Trig (Switch Trigger) Synthesizers können Sie einen einfachen PNP-Schaltkreis verwenden (siehe beigefügtes Schema).

Schritt 5: Die Software

Die Software
Die Software

Ich habe versucht, die Skizze so klar und "lesbar" wie möglich zu halten.

Ich habe an einem einfachen Berechnungsblatt gearbeitet, das ich HIER gefunden habe, um eine Spannung Vs Note #-Kurve abzuleiten und die Gleichung direkt im Mikrocontroller zu verwenden. Die Gleichung wird in der Grafik oben angezeigt. Ich habe C2 als Referenznote verwendet, um eine Arp/Korg-konforme Spannungs-Vs-Noten-Beziehung zu erhalten (C0 - 0,25 V, C1 - 0,5 V, C2 - 1 V, C3 - 2 V, C4 - 4 V, C5 - 8 V usw.).

Ich musste eine Variable definieren, mit der ich spielen konnte, um eine gute Abstimmung zu erhalten… Nehmen Sie sich Zeit, um die richtigen Werte zu finden. Ein Tuner ist notwendig.

Wir werden die PWM-Frequenz eines Timers / Counters erhöhen, um die Welligkeit der Ausgangsspannungen zu reduzieren (so einfach wie eine Codezeile).

Damit der Code auf eingehende Bytes reagiert, ist der Code stark auf Funktionsrückrufe angewiesen.

Sie müssen die Bibliotheken "Adafruit_MCP4725.h" von Sparkfun und "MIDI.h" von Forty Seven Effects/Francois Best kompilieren! (Vielen Dank an diese Personen: ohne ihren Einsatz wäre dieses Projekt nie realisierbar!).

Ich gehe davon aus, dass Sie Arduino IDE in Ihrem PC bereit haben und wissen, wie Sie eine Skizze auf Ihr Arduino-Board laden.

Ich bin im wirklichen Leben kein Programmierer, daher ist es sehr wahrscheinlich, dass der Sketch besser geschrieben werden könnte. Ich bin offen für Vorschläge (ich lerne immer etwas, wenn ich mir Coder's Code anschaue;))

Zusätzliche Hinweise sind im folgenden Code enthalten. Installieren Sie die beiden Bibliotheken, öffnen Sie den angehängten Code in Ihrer IDE, schließen Sie Ihr Board an, wählen Sie den Typ des Boards aus und laden Sie es hoch.

Schritt 6: Fehlerbehebung

Auch wenn das Projekt auf niedrigem Niveau ist, gibt es Unmengen an Dingen, die schief gehen können. Wenn beim Versuch, eine eigene MIDI-zu-CV-Box zu erstellen, Probleme auftreten, gehen Sie folgendermaßen vor:

1. Stellen Sie sicher, dass Arduino MIDI-Nachrichten richtig empfängt

Überprüfen Sie den Ausgangskanal, an den Ihr Keyboard oder Ihre DAW oder Ihr Sequenzer MIDI-Meldungen ausgibt. Arduino hört standardmäßig auf Kanal 1. Laden Sie "TEST_MIDI_IN.ino" hoch, um eine eingehende noteON-Nachricht zu lesen.

2. Überprüfen Sie Ihre Verkabelungen

… oder noch besser: dreifach checken! Nehmen Sie sich dafür Zeit.

3. Überprüfen Sie die DAC-Adresse und den Ausgang

Der DAC könnte so eingestellt werden, dass er Daten an einer anderen Adresse empfängt als der, die ich in der Skizze festgelegt habe. Überprüfen Sie die Adresse, indem Sie "I2C_scanner.ino" ausführen. Wenn ein Fehler "Kein Gerät gefunden" auftritt, überprüfen Sie Ihre DAC-Verkabelung (SDA- und SCL-Eingänge sind auf verschiedenen Arduino-Boards unterschiedlich!). Wenn Sie ein Oszillokop haben (selbst diese 15-Euro-Digitaloszilloskope sind gut genug … und es macht Spaß, damit zu spielen!)

Denken Sie daran, dass Sie keine neue Skizze hochladen können, wenn ein Optokoppler an den RX-Eingang Ihres Arduino-Boards angeschlossen ist !! Platzieren Sie einen Schalter (es könnte ein einfacher Jumper sein) vor dem RX-Pin.

Die meisten dieser Testskizzen stammen nicht von mir oder basieren zumindest auf vorhandenem Online-Material.

Das Ding klingt für mich verstimmt!?

Dies ist kein wirkliches Problem: Die für die Hz/V-Steuerung abgeleitete Gleichung ist "ideal". Eine gewisse Abweichung vom idealen Verhalten kann auftreten, wenn die +5V, die Sie liefern, nicht 5.000V sind, vom DAC und vom Instrument selbst. Um das zu lösen, müssen Sie auf Ihr Synth-Tune / Fine-Tune-Potentiometer einwirken und "voilà" eine perfekt abgestimmte MIDI-Steuerung;)

Schritt 7: Nützliche Links

en.wikipedia.org/wiki/CV/gate

www.instructables.com/id/Send-and-Receive-…

www.songstuff.com/recording/article/midi_me…

pages.mtu.edu/~suits/NoteFreqCalcs.html

espace-lab.org/activites/projets/en-arduin…

learn.sparkfun.com/tutorials/midi-shield-h…

provideyourown.com/2011/analogwrite-conver…

www.midi.org/specifications/item/table-3-c…

arduino-info.wikispaces.com/Arduino-PWM-Fr…

sim.okawa-denshi.jp/en/PWMtool.php

Empfohlen: