Inhaltsverzeichnis:

Arduino Soundlab - Gunook
Arduino Soundlab - Gunook

Video: Arduino Soundlab - Gunook

Video: Arduino Soundlab - Gunook
Video: Arduino soundlab 2024, November
Anonim
Image
Image
Konstruktion
Konstruktion

Es ist unglaublich, wie viele erstaunliche Sounds mit der FM-Synthesetechnik selbst mit einem einfachen Arduino erzeugt werden können. In einem früheren anweisbaren wurde dies mit einem Synthesizer illustriert, der 12 vorprogrammierte Sounds hatte, aber ein Zuschauer schlug vor, dass es viel cooler wäre, die volle Kontrolle über die Soundparameter mit Potentiometern zu haben, und so ist es!

In diesem Klanglabor können Töne durch 8 Parameter gesteuert werden: 4 für die ADSR-Hüllkurve der Loudness und 4 für die Frequenzmodulation, die die Textur bestimmt.

Das Hinzufügen der 8 Potentiometer ging nicht auf Kosten der Tastenanzahl: Drei Sätze von 8 Tasten werden wenige Mikrosekunden nacheinander ausgelesen, also insgesamt 24 Tasten, was zwei vollen Oktaven entspricht. Tatsächlich sind zwei Arduino-Pins ungenutzt und eine Erweiterung auf 40 Tasten wäre möglich.

Sehen Sie sich das Video an, um wilde Klänge zu erzeugen, hier ist eine kurze Übersicht:

* A=attack: Zeit bis ein Ton seine maximale Lautstärke erreicht (Bereich 8ms-2s)

* D=Decay: Zeit, bis ein Ton seine konstante Lautstärke erreicht hat (Bereich 8ms-2s)

* S=sustain: konstanter Lautstärkepegel (Bereich 0-100%)

* R=Release: Zeit bis ein Ton erlischt (Bereich 8ms-2s)

* f_m: Verhältnis der Modulationsfrequenz zur Trägerfrequenz (Bereich 0,06-16) Werte unter 1 führen zu Untertönen, höhere Werte zu Obertönen

* beta1: Amplitude der FM-Modulation am Anfang der Note (Bereich 0,06-16) kleine Werte führen zu geringfügigen Variationen der Klangtextur. große Werte ergeben verrückte Sounds

* beta2: Amplitude der FM-Modulation am Ende der Note (Bereich 0,06-16) Geben Sie beta2 einen anderen Wert als beta1, damit sich die Klangtextur mit der Zeit entwickelt.

* tau: Geschwindigkeit, mit der sich die FM-Amplitude von Beta1 zu Beta 2 entwickelt (Bereich 8ms-2s) Kleine Werte ergeben einen kurzen Knall am Anfang einer Note, große Werte eine lange und langsame Entwicklung.

Schritt 1: Konstruktion

Konstruktion
Konstruktion
Konstruktion
Konstruktion
Konstruktion
Konstruktion

Klar, das ist immer noch ein Prototyp, ich hoffe, eines Tages werde ich oder jemand anders so groß und stark und schön bauen mit großen Tasten und echten Drehreglern für die Potentiometer in einem tollen Gehäuse….

Benötigte Komponenten:

1 Arduino Nano (Es funktioniert nicht mit dem Uno, der nur 6 analoge Eingänge hat)

24 Tasten

8 Potentiometer, im Bereich 1kOhm - 100kOhm

1 Potentiometer von 10kOhm zur Lautstärkeregelung

1 Kondensator - 10 Mikrofarad elektrolytisch

1 3,5-mm-Kopfhörerbuchse

1 LM386 Audioverstärkerchip

2 1000 Mikrofarad Elektrolytkondensator

1 Keramikkondensator mit 1 Mikrofarad

1 Mikroschalter

1 8Ohm 2Watt Lautsprecher

1 10x15cm Prototypentafel

Stellen Sie sicher, dass Sie die beigefügten Schaltpläne verstehen. Die 24 Tasten werden in 3 8er-Gruppen verbunden, um an D0-D7 auszulesen und an D8, D10 und D11 zu aktivieren. Die Potis haben +5V und Masse an den Endabgriffen und die mittleren Abgriffe werden an die analogen Eingänge A0-A7 gespeist. D9 hat den Audioausgang und wird mit einem 10kOhm-Potentiometer zur Lautstärkeregelung AC-gekoppelt. Der Ton kann direkt über Kopfhörer angehört oder mit einem LM386-Audioverstärkerchip verstärkt werden.

Es passt alles auf ein 10x15cm Prototypenboard, aber die Tasten sind zu nah, um gut zu spielen, daher wäre es besser, eine größere Tastatur zu konstruieren.

Die Schaltung kann über den USB-Anschluss des Arduino Nano oder mit einem externen 5V-Netzteil mit Strom versorgt werden. Eine 2xAA Batteriebox gefolgt von einem Aufwärtswandler ist eine perfekte Stromversorgungslösung.

Schritt 2: Software

Laden Sie die beigefügte Skizze auf den Arduino Nano hoch und alles sollte funktionieren.

Der Code ist einfach und leicht zu ändern, es gibt keinen Maschinencode und keine Interrupts, aber es gibt ein paar direkte Interaktionen mit den Registern, um mit dem Timer zu interagieren, das Auslesen der Tasten zu beschleunigen und das Verhalten des ADC zu steuern für die Potentiometeranzeige

Schritt 3: Zukünftige Verbesserungen

Ideen aus der Community sind immer willkommen!

Am meisten stören mich die Tasten: Sie sind winzig und klicken beim Drücken hart. Es wäre wirklich schön, größere Tasten zu haben, die sich bequemer drücken lassen. Außerdem würden kraft- oder geschwindigkeitsempfindliche Tasten ermöglichen, die Lautstärke der Noten zu steuern. Vielleicht könnten 3-Wege-Tasten oder berührungsempfindliche Tasten funktionieren?

Andere nette Dinge wären, die Soundeinstellungen im EEPROM zu speichern. Das Speichern kurzer Melodien im EEPROM würde es auch ermöglichen, viel interessantere Musik zu machen. Schließlich könnten komplexere Sounds erzeugt werden, wenn jemand weiß, wie man Percussion-Sounds recheneffizient erzeugt, wäre das großartig…

Empfohlen: