Inhaltsverzeichnis:

Arpeggio-Synthesizer (Mosquito I) - Gunook
Arpeggio-Synthesizer (Mosquito I) - Gunook

Video: Arpeggio-Synthesizer (Mosquito I) - Gunook

Video: Arpeggio-Synthesizer (Mosquito I) - Gunook
Video: DIY ARDUINO ARPEGGIATOR - [YMNK's DIY synths adventures] 2024, Juli
Anonim
Arpeggierender Synthesizer (Mosquito I)
Arpeggierender Synthesizer (Mosquito I)

Mosquito I ist ein kleiner Arpeggio-Synthesizer, der einen Arduino Nano und die Mozzi-Soundsynthesebibliothek verwendet. Es kann über zwanzig 8-Step-Sequenzen abspielen, aber Sie können so viele benutzerdefinierte Sequenzen hinzufügen, wie Sie möchten. Es ist relativ einfach einzurichten und erfordert nicht viele Teile.

Lieferungen:

  • Arduino Nano (oder jeder Arduino sollte wirklich funktionieren)
  • 5 Stück Potentiometer (10K Linear)
  • 2 Stück Drucktasten
  • 1 Stück LED
  • 1 Stück Widerstand (330 Ohm)
  • 2 Stück Widerstand (1K)
  • 1 Stück Widerstand (2K)
  • 1 Stück Elektrolytkondensator (100 uF)
  • 1 Stück Keramikkondensator (33 nF)
  • 1 Stück Stereo-Buchse
  • Anschlusskabel
  • Steckbrett

Schritt 1: Einrichten des Arduino

Einrichten des Arduino
Einrichten des Arduino
Einrichten des Arduino
Einrichten des Arduino

Zuerst holen wir uns den Nano auf das Steckbrett und richten unsere Leistung ein:

  1. Legen Sie den Nano auf das Steckbrett. Platzieren Sie wie im Bild oben gezeigt. Es sollte den Mittelkanal des Steckbretts überspannen. Sie möchten, dass es sich an einem Ende des Steckbretts befindet, wobei der USB-Anschluss dieser Seite zugewandt ist. Auf diese Weise wird das Kabel beim Einstecken nicht im Weg sein. Wenn Sie einen größeren Arduino wie den Uno oder Mega verwenden, montieren Sie ihn natürlich nicht auf dem Steckbrett.
  2. Verbinden Sie die Stromschienen mit Arduino. Verbinden Sie eine der positiven (roten) Schienen Ihres Steckbretts mit dem 5V-Pin des Arduino mit Draht- oder Überbrückungsdrähten. Verbinden Sie dann eine der negativen (blauen) Schienen mit einem der GND-Pins des Nano.
  3. Stromschienen miteinander verbinden. Um Strom entlang der Schienen auf beiden Seiten des Steckbretts zu erhalten, verbinden Sie die Schienen auf beiden Seiten des Steckbretts miteinander, indem Sie einen Draht von der positiven Schiene auf der einen Seite zur positiven Schiene auf der anderen Seite führen. Wiederholen Sie dies mit den negativen Schienen.

Schritt 2: Hinzufügen der Steuerelemente

Hinzufügen der Steuerelemente
Hinzufügen der Steuerelemente

Mosquito I verwendet fünf Potentiometer und zwei Knöpfe für die Steuerung.

Potentiometer:

  1. Stellen Sie die Töpfe auf das Steckbrett. Platzieren Sie die Töpfe so, dass sich jeder Stift in einer eigenen Reihe befindet.
  2. Verbinden Sie Töpfe mit Stromschienen. Verbinden Sie den linken Stift jedes Topfes (wenn Sie die Knopfseite betrachten) mit einer der negativen Schienen auf dem Steckbrett. Verbinden Sie den rechten Stift jedes Topfes mit einer der positiven Schienen des Steckbretts.
  3. Verbinden Sie Töpfe mit Arduino. Verbinden Sie den mittleren Pin jedes Topfes mit einem der analogen Pins des Arduino. Der mittlere Pin des ersten Potis ist mit A0 verbunden, der zweite Poti mit A1 und so weiter, wobei der letzte Poti mit A4 verbunden ist.

Drück Knöpfe:

  1. Legen Sie die Knöpfe auf das Steckbrett. Platzieren Sie die beiden Druckknöpfe so auf dem Steckbrett, dass sie den Mittelkanal überspannen.
  2. Verbinden Sie positive Seiten. Verbinden Sie auf einer Seite des Steckbretts einen der Stifte des Druckknopfes mit der positiven Schiene.
  3. Verbinden Sie die negativen Seiten. Platzieren Sie einen der 1K-Widerstände auf dem Steckbrett, so dass ein Ende mit dem unbenutzten Pin des Druckknopfes verbunden ist und die andere Seite des Widerstands mit der negativen Schiene verbunden ist.
  4. Taste mit Arduino verbinden. Führen Sie einen Draht in der Reihe durch, die den Knopf mit der negativen Schiene mit dem D2-Pin verbindet. Machen Sie dasselbe mit der anderen Taste, aber verbinden Sie sie mit D3.

Schritt 3: Ausgänge hinzufügen

Ausgänge hinzufügen
Ausgänge hinzufügen

Wir geben Audio von Pin 9 aus und blinken beim ersten Schritt jeder Sequenz eine LED. Hier erfahren Sie, wie Sie die Hardware dafür einrichten.

LED

  1. Platzieren Sie eine LED in einem leeren Raum auf dem Steckbrett.
  2. Verbinden Sie den negativen (kurzen) Schenkel der LED mit der negativen Schiene.
  3. Strombegrenzungswiderstand platzieren. Verbinden Sie eine Seite eines 330-Ohm-Widerstands mit dem positiven (langen) Bein der LED. Verbinden Sie die andere Seite des Widerstands mit Pin D4 des Arduino.

Audioausgang

  1. Platzieren Sie das RC-Netzwerk. Das Ausgangssignal des Arduino kommt von Pin 9, aber das Signal kann etwas heißer sein, als einige Lautsprecher verarbeiten können. Um es näher auf die Linienebene zu bringen, habe ich ein RC-Netzwerk hinzugefügt (basierend auf einem Design von Notes & Volts). Platzieren Sie die 33nF- und 100uF-Kondensatoren zusammen mit dem 2K-Widerstand wie im Bild / Schema gezeigt. Stellen Sie sicher, dass der elektrolytische 100uF-Kondensator mit der richtigen Polarität verbunden ist (das positive / lange Bein geht an Pin 9 des Arduino und das negative / kurze Bein an die Buchse).
  2. Verbinden Sie die negative Seite der Audiobuchse mit Masse. Die Audiobuchsenverbindungen variieren leicht je nach verwendetem Typ, aber im Allgemeinen funktionieren sie alle gleich. Wir müssen die Hülse der Buchse mit Masse verbinden. Dies ist manchmal mit einem Minuszeichen gekennzeichnet oder als "Sleeve", "Ring" oder "Gnd" gekennzeichnet. Wenn Ihre Audiobuchse keine Etiketten enthält, müssen Sie möglicherweise das Datenblatt konsultieren oder die Buchse genau untersuchen und feststellen, ob Sie feststellen können, welcher Pin mit der Hülse oder dem Außenring der Buchse verbunden ist.
  3. Verbinden Sie die positive Seite der Audiobuchse mit der negativen Seite des 100uF-Kondensators. Unser Audiosignal fließt nun von Pin 9 des Arduino durch das RC-Netzwerk und tritt an der negativen Seite des 100uF-Kondensators aus. Wir verbinden das mit der positiven Seite unserer Audiobuchse. Dies ist normalerweise mit einem Pluszeichen gekennzeichnet oder kann mit "Tipp" beschriftet sein. Auch hier, wenn es nicht beschriftet ist, müssen Sie es möglicherweise überprüfen, um herauszufinden, welcher Pin mit der Spitze der Buchse verbunden wird. Wenn Sie einen Stereo-Klinkenstecker verwenden, kann es auch einen L-Tip- und R-Tip-Anschluss geben. Da wir ein Monosignal ausgeben, können Sie einfach einen der Tip-Anschlüsse anschließen.

Wichtig: Wenn Sie feststellen, dass das Audio zu leise ist, können Sie das RC-Netzwerk in Schritt 1 möglicherweise entfernen und direkt an das Audio von Pin 9 des Arduino anschließen. Dies sollte in Ordnung sein, wenn Sie das Audio mit einem Vorverstärker wie externen Computerlautsprechern mit einem Lautstärkeregler verbinden, aber ich würde es nicht für Dinge wie Kopfhörer, Ohrhörer oder die direkte Verkabelung mit einem Lautsprecher empfehlen. Wenn Sie sich entscheiden, das RC-Netzwerk zu entfernen, schlage ich vor, die Lautstärke Ihrer Lautsprecher ganz herunterzudrehen, bevor Sie den Arduino starten, und dann die Lautstärke allmählich zu erhöhen, um ein Ausblasen Ihrer Lautsprecher zu vermeiden.

Nachdem Sie alles eingerichtet haben, überprüfen Sie, ob alle Verbindungen korrekt aussehen und mit dem Bild und dem Schema oben übereinstimmen

Schritt 4: Hochladen des Codes

Jetzt, da die Hardware vollständig eingerichtet ist, können wir die Softwareseite in Angriff nehmen:

  1. Starten Sie die Arduino-IDE. Starten Sie auf Ihrem Computer die Arduino IDE (wenn Sie sie nicht haben, können Sie sie von https://www.arduino.cc/en/software herunterladen).
  2. Laden Sie die Mozzi-Bibliothek herunter. Die Mozzi-Bibliothek ermöglicht es uns, unseren Arduino als Synthesizer zu verwenden. Um diese Bibliothek in Ihre IDE zu bekommen, gehen Sie auf die Mozzi-Github-Seite https://sensorium.github.io/Mozzi/download/. Klicken Sie auf die grüne Schaltfläche "Code" und wählen Sie ZIP herunterladen.
  3. Installieren Sie die Mozzi-Bibliothek aus der ZIP-Datei. Gehen Sie in der Arduino IDE zu Sketch->Include Library->Add. ZIP Library… Navigieren Sie zu der heruntergeladenen ZIP-Datei, um sie hinzuzufügen. Sie sollten jetzt Mozzi im Abschnitt Sketch->Include Library aufgelistet sehen.
  4. Laden Sie den Arduino-Code von Mosquito I herunter. Sie können dies von meiner Github-Site https://github.com/analogsketchbook/mosquito_one erhalten. (Beachten Sie, dass die Schaltpläne auch dort verfügbar sind, wenn Sie sie als Verdrahtungsreferenz benötigen.
  5. Verbinden Sie das Arduino mit dem Computer und laden Sie den Code hoch.

Schritt 5: Herumspielen

Das ist es. Sie sollten in der Lage sein, Ihre Lautsprecher an die Audiobuchse anzuschließen und den süßen Klang der arpeggierten Synthese von diesem klitzekleinen Nano zu hören! Wenn Sie zunächst nichts hören, versuchen Sie, die Regler an allen Potis zu zentrieren, um sicherzustellen, dass Sie anständige Startwerte erhalten.

Hier ist, was die Steuerelemente tun:

Töpfe:

Rate: Hiermit wird gesteuert, wie schnell der Sequenzer abgespielt wird. Wenn Sie ihn herunterdrehen, werden diskrete Noten nacheinander gespielt. Wenn Sie ihn ganz nach oben drehen, verschmieren Sie die Noten, um völlig neue Wellenformen zu erzeugen.

Legato: Der zweite Pot steuert die Legato- oder Notenlänge. Wenn Sie ihn weiter nach links drehen, werden kurze, sticatto-Noten erzeugt, während eine Drehung nach rechts längere Noten erzeugt.

Pitch: Dies stellt die Grundtonhöhe für die Sequenz ein. Der Tonhöhenregler legt MIDI-Werte fest, also erhöht/verringert er die Tonhöhe in Halbtönen anstatt einer kontinuierlichen Tonhöhenverschiebung.

Phase: Wenn Sie diesen Regler nach rechts drehen, wird ein subtiler Phasing-Effekt erzeugt. Technisch gesehen führt dies dazu, dass die beiden Oszillatoren in Mosquito I leicht verstimmt sind, was die Phasenlage verursacht. Es wird jedoch nicht mit der Tonhöhe verfolgt, sodass der Phasing-Effekt bei Noten mit niedrigerer Tonhöhe wahrscheinlich stärker bemerkbar ist.

Filter: Dieser Regler steuert die Cutoff-Frequenz eines Tiefpassfilters. Drehen nach links schneidet die hohen Frequenzen ab und erzeugt einen gedämpfteren Klang, während eine Drehung nach rechts einen helleren Klang erzeugt.

Tasten:

Mosquito hat über zwanzig verschiedene Sequenzen, die es standardmäßig abspielen kann. Mit den Drucktasten können Sie auswählen, welche Sequenz abgespielt wird. Eine Schaltfläche bewegt Sie in der Liste der Sequenzen nach oben und die andere nach unten.

Schritt 6: Anpassung

Anpassung
Anpassung

Ich habe eine Reihe von Standardsequenzen hinzugefügt, meist unterschiedliche Skalen, aber Sie können den Code ziemlich einfach anpassen, um die Reihenfolge der gespielten Noten zu ändern, neue hinzuzufügen oder die Anzahl der Noten in einer Sequenz zu ändern. Im Folgenden finden Sie die Details, wie dies geschieht, falls Sie es anpassen möchten.

Noten in einer bestehenden Sequenz ändern

Die Sequenzen werden in einem Array von Arrays namens NOTES gespeichert. Jede Note wird als MIDI-Notenwert gespeichert. Wenn Sie also Noten in einer bestimmten Sequenz ändern möchten, ändern Sie einfach die MIDI-Notennummern für diese Sequenz. Die Standardeinstellung ist, 8 Schritte pro Sequenz zu spielen, sodass Sie nur 8 MIDI-Werte in einer Sequenz haben können (siehe unten, wenn Sie unterschiedliche Sequenzlängen haben möchten).

Beachten Sie, dass der Pitch-Regler einen Noten-Offset zu den im NOTES-Array angegebenen MIDI-Werten hinzufügt. Wenn der Regler zentriert ist, spielt er die im Array angezeigten MIDI-Noten, aber wenn Sie den Pitch-Regler drehen, addiert oder subtrahiert er einen Halbton zu den gespielten Noten.

Hinzufügen neuer Sequenzen

Sie können dem NOTES-Array neue Sequenzen hinzufügen, indem Sie einfach ein neues 8-Noten-Array am Ende der Liste hinzufügen. Wenn Sie dies tun, müssen Sie jedoch auch den Wert der Variablen numSequences ändern, damit er der neuen Anzahl von Sequenzen entspricht. Das NOTES-Array hat beispielsweise standardmäßig 21 Sequenzen, sodass die Variable numSequences auf 21 gesetzt ist. Wenn Sie eine neue Sequenz hinzufügen, müssen Sie die Variable numSequences auf 22 ändern.

Sie können beliebig viele neue Sequenzen hinzufügen.

Sequenzlänge ändern

Wenn Sie die Länge Ihrer Sequenzen ändern möchten (wenn Sie beispielsweise eine 4-Step- oder 16-Step-Sequenz wünschen), können Sie dies tun, aber die einzige Einschränkung ist, dass alle Sequenzen die gleiche Länge haben müssen. Sie müssen auch die Variable numNotes so einstellen, dass sie der Länge Ihrer Sequenzen entspricht.

Andere Änderungen

Es gibt eine Reihe anderer Anpassungen, die möglich sind, wie z. B. das Umschalten von Wellenformtypen, Filtereinstellungen/-werten, die den Rahmen dieses Tutorials sprengen würden. Das Herausfinden von Mozzi-Code kann anfangs etwas schwierig sein, aber ich habe versucht, den Code so gut wie möglich zu dokumentieren, um zu zeigen, was die verschiedenen Teile des Codes tun.

Es gibt einige Hauptteile des Codes für Mozzi, die ziemlich spezifische Verwendungen haben, und ich habe sie unten aufgelistet, um Ihnen eine Vorstellung davon zu geben, wofür sie verwendet werden:

  • setup () - Wenn Sie für Arduinos programmiert haben, bevor Sie mit dieser Funktion vertraut sind und sie in Mozzi so ziemlich gleich verwendet wird. Wir verwenden es hauptsächlich, um Standardeinstellungen für Oszillatoren, Filter usw.
  • updateControl() - Hier verrichtet der Löwenanteil des Mozzi-Codes seine Arbeit. Hier lesen wir Pot- und Button-Werte, ordnen diese Werte zu und transformieren sie, um sie in den Synthesizer einzuspeisen, und dort wird die Sequenzierung durchgeführt.
  • updateAudio() - Dies ist die endgültige Ausgabe der Mozzi-Bibliothek. Typischerweise wird der Code hier sehr klein und schlank gehalten, da diese Funktion von Mozzi verwendet wird, um alle möglichen Taktzyklen zu maximieren. Wie Sie im Moskito-Code sehen können, kann es etwas kryptisch sein, aber im Grunde kombinieren / multiplizieren wir unsere verschiedenen Wellenformen und verschieben sie dann, um sie in einen bestimmten Zahlenbereich zu passen. Es ist am besten, diese Funktion sehr klein zu halten (keine seriellen Aufrufe oder das Lesen von Pins) und das meiste stattdessen in die controlUpdate()-Funktion zu stecken. In der Mozzi-Dokumentation wird dies ausführlicher beschrieben.