Inhaltsverzeichnis:
- Schritt 1: !! Achtung - Haftungsausschluss
- Schritt 2: Engineering der Hardware
- Schritt 3: Komponentenliste
- Schritt 4: Anschlüsse/Schaltpläne
- Schritt 5: Die Software
- Schritt 6: Fehlerbehebung
- Schritt 7: Nützliche Links
Video: Eine weitere MIDI-zu-CV-Box - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:16
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
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
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
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:
So stellen Sie eine Node.js-App auf Heroku bereit: 3 Schritte
So stellen Sie eine Node.js-App auf Heroku bereit: So habe ich meine NodeJS-App auf Heroku mit einem kostenlosen Konto bereitgestellt. Klicken Sie einfach auf die Links, um die erforderliche Software herunterzuladen: Verwendete Software: VSCode (oder ein Texteditor Ihrer Wahl) HerokuCLIGit
So erstellen Sie eine einfache Nintendo LABO-Zielübung – wikiHow
So erstellen Sie eine einfache Nintendo LABO-Zielübung: Meine Schwester und ich haben kürzlich einen Nintendo Switch gekauft. Natürlich haben wir auch ein paar Spiele dazu. Und einer davon war das Nintendo LABO Variety Kit. Dann bin ich schließlich über die Toy-Con-Garage gestolpert. Ich habe einiges ausprobiert und da habe ich
Erhalten Sie eine Benachrichtigungs-E-Mail, wenn ein Kanal auf ThingSpeak eine Weile nicht aktualisiert wurde – wikiHow
Erhalten Sie eine Benachrichtigungs-E-Mail, wenn ein Kanal auf ThingSpeak eine Weile nicht aktualisiert wurde: HintergrundgeschichteIch habe sechs automatisierte Gewächshäuser, die über Dublin, Irland, verteilt sind. Durch die Verwendung einer maßgeschneiderten Handy-App kann ich die automatisierten Funktionen in jedem Gewächshaus aus der Ferne überwachen und mit ihnen interagieren. Ich kann den Win manuell öffnen / schließen
So erstellen Sie eine Website (eine Schritt-für-Schritt-Anleitung): 4 Schritte
So erstellen Sie eine Website (eine Schritt-für-Schritt-Anleitung): In dieser Anleitung zeige ich Ihnen, wie die meisten Webentwickler ihre Websites erstellen und wie Sie teure Website-Builder vermeiden können, die für eine größere Website oft zu begrenzt sind helfen Ihnen, einige Fehler zu vermeiden, die ich am Anfang gemacht habe
So erstellen Sie eine MIDI-Map für den BCD3000 in Traktor Pro: 6 Schritte
So erstellen Sie eine MIDI-Map für den BCD3000 in Traktor Pro: Dies führt Sie Schritt für Schritt durch die Erstellung Ihrer eigenen benutzerdefinierten tsi-MIDI-Maps in Traktor Pro für Behringer's DEEJAY BCD3000