DrumMachine

Drummachine

Hallo und herzlich Willkommen in der wunderbaren Welt der Stepsequencer.

Ein Stepsequencer ist eine Form eines elektronischen Instrumenten, bei der man eine Reihe von Noten eingibt, die dann nacheinander im Loop abgespielt werden. Wird ein Stepsequencer genutzt, um ein Schlagzeug zu emulieren, spricht man von einer Drum Machine. Ein berühmtes Beispiel dafür ist der Drummer From Another Mother (DFAM) von Moog.

Als ich wieder einmal in ein YouTube-Rabbit-Hole gefallen war und mir stundenlang Talks von Programmierern anschaute, stellte ich mir die Frage, ob es mit meinen Programmierfähigkeiten möglich ist, eine einfache Drum Machine selbst zu programmieren.

Wenige Monate später bin ich in der Lage zu sagen, dass es möglich ist. Sogar mit drei ganzen Instrumenten und bei jeder Note ist individuell die Lautstärke anpassbar.

Leider ist die Timerfunktion von Javascript nicht allzu akkurat, deshalb ist es mehr ein Spielzeug als ein Werkzeug … aber immerhin: Es Funktioniert!

Meine Drum Machine ist auf Firefox für den Desktop optimiert. Auf anderen Browsern sollte sie auch funktionieren, sieht aber nicht so schön aus. Auf Smartphones oder Tablets habe ich sie nicht ausprobiert. Wenn ihr beim Ausprobieren Mühe habt oder nicht versteht wie das ganze funktioniert, habe ich auf der Seite unten ein Manual verlinkt.

Das fertige Projekt findet ihr hier.

Viel Spass beim Musik machen!

(mou)

Ein tatsächliches Programm zu schreiben hat mir am Anfang mehr Mühe bereitet als ich dachte. Also fing ich mit dem mit HTML und CSS an, um erstmal eine optische Struktur zu erreichen.

Ich blieb erstmal beim optischen, da ich keine Ahnung hatte wie der Rest funktioniert. So fügte ich mit JavaScript alles ein dass sich optisch ändert, wenn man es anklickt. Genauer gesagt, dass die Pads leuchten, wenn sie aktiv sind und wieder aufhören zu leuchten, wenn man sie wieder ancklickt. Das alles wird in einem JSON hinterlegt. So weiss die Machine, welche note, bei welchem Pad aktiv ist. Auch die Lautstärke die man über die Fader Steuern kann wird dort hinterlegt.

Alles in allem bin ich zufrieden, dass es Funktioniert, aber noch nicht wie es Funtioniert. Fürs nächste mal, müsste ich eine Lösung finden, den Timer möglichst akkurat zu machen, so dass keine grösseren Delays entstehen. Auch optisch gibt eis noch kleinere Macken, die ich ausbessern will. Und mein Code ist eine Mess. viel zu wenig Struktur und viel zu wenig Kommentare was genau wo Passiert. So dass ich selbst zum Teil den Überblick verloren habe.