Arduino | Ich bau mir einen Synthesizer
Vor ca. 2 Wochen habe ich auf der Suppe vom K4CG ein Video über einen auf Arduino basierten Synthesizer. Die “Firmware” die darauf läuft nennt sich “Auduino”.
Auf deren Projektseite habe ich mich dann etwas schlau gelesen und wie auch schon bei dem Megabitmeter über tinkersoup.de meine Teile bestellt. Auf der Projektseite ist die Konstruktion des ganzen finde ich zwar nicht sonderlich gut beschrieben, aber man kommt mit ein bisschen Googeln und Reverse Engineering schon weiter.
Habe dabei aber einen Arduino Nano benutzt, weil mir die Anschlüsse bzw “Architektur” besser gefällt und ich nicht erst ein Breakout Board von Seriell auf USB nachkaufen musste. Entgegen aller Erwartungen musste ich die Firmware dafür nichtmal modifizieren, da auch bei diesem Board ein ATMega328 verbaut ist.
Ich habe mir wegen der einfacheren Anbringung am Nano so eine Art Halterung/Breadboard mitbestellt, in dem ich die Adern mit Schrauben einfacher verbauen konnte.
Die Potenziometer (wieder was, das ich gelernt habe) sind in Reihe an den Ground und den 5V Pin geschlossen. Der jeweils mittlere Pin der Drehschalter kommt an die Analog Pins 0 bis 4.
Danach kam der (für mich) kniffligere Teil. Der Audio Jack (bzw. Klinke Buchse) hat von Haus aus 5 Pins. Auf der Projekte Seite von Auduino nur Input und Ground. Nach bisschen schlaulesen in Wikis und Foren scheint es, als würden die verschiedenen Revisionen von Klinke andere Features mit sich bringen. für den Mini Synthesizer hätte vollkommen Klinke Mono ausgereicht. Diverse Zusatzfunktionskanäle sind da eigentlich überflüssig aber im Audio Jack bei TinkerSoup integriert.
Nach etwas Trial and Error Verfahren den weg für Doofe gewählt. Ich hab ehrlichgesagt einfach ein altes Klinke Stecker auf Buchse Kabel aufgeschnitten und mir die Belegung auf der Steckerseite angesehen.
Bei 3poligen Klinken Steckern sind die vorderen beiden Kontakte fürs Signal (Links, Rechts) und hinten für Ground. Habe dann die beiden Signaladern auf der Buchsenseite verdrillt und wie vorgesehen in den Digitalen Pin 3 geklemmt. Ground natürlich an seine Stelle.
Im Endeffekt wars dann schon fertig. Firmware mit dem Arduino IDE auf den Chip geladen und hat auch schon funktioniert. Aber weil ich dann ständig die Potenziometer durcheinander gebracht habe, hab ich noch eine alte Plastikbox aus dem Baumarkt meiner Wahl benutzt, die entsprechenden Löcher gebohrt dort das ganze eingebaut.
Etwas smoother ;) Noch ein paar kleine Kostproben von einem wirklich unbegabten Synthesizer-Bediener. Beim hören etwas aufpassen, ab und zu ist mir da ein Ton entglitten.












Dezember 22nd, 2011 at 14:23
Mit Verlaub, das ist fett. Da bekommt man glatt auch Lust mal was in der Richtung zu machen.
Steuert man den Ton nur über die Potenziometer oder ist das auch programmierbar? Braucht man dazu ein größeres Vorwissen in Sachen Elektronik? In Physik war ich trotz astreinem Mathe immer eine Niete. :/
Dezember 22nd, 2011 at 15:19
Hi Knorkebrot: Naja also generell kommen die analogen Signale von den Potenziometern.
Diese werden dann (vermute ich) gegen die Werte Tabellen in der Firmware gedrückt (oben im Code) und unten werden alle diese Werte dann miteinander verheiratet/verwurstet.
Du kannst also auch die Tables bzw. den ganzen Code anpassen um andere Töne zu erhalten.
Aber ich finde die Software dafür sehr Tricky weil Sie so Hardware nah ist und ich von Arduino Programmierung auch noch nicht sooooo die Welt Ahnung hab.
Hab mal mit ein paar Unterschiedlichen Werten im MidiTable experimentiert, aber im Endeffekt bin ich bei der Original Firmware geblieben.
Solltest dus auch bauen: Bloggen! :P
Dezember 22nd, 2011 at 15:25
Achja und: Nein man braucht kein größeres Vorwissen in Elektronik. Das besitze ich nämlich auch definitiv _nicht_.
Lediglich die einfachsten Grundlagen sollte man kennen.
Dezember 22nd, 2011 at 18:49
Hm, ja, hätte ich auch gleich mal in den Source gucken können, nicht?
(*.pde ist übrigens nur ein C Source File, falls darüber noch jemand stolpert und sich extra die dicke Arduino IDE runterläd…)
Das sieht eigentlich nicht sonderlich schwer aus, es werden halt einfach nur Werte ausgelesen, gemapt und für die Ausgabe zwischengespeichert. Was da dann passiert, muss einen ja nicht wirklich interessieren, aber auch das ist an sich keine Magie – musst nur wissen was mit Dreieckswelle, Phase, Grain(?) und alles meint. Keine Ahnung von dem Schnick Schnack. ;)
Aber man könnte sich auf jeden Fall die Potenziometer sparen, wenn man eine vorprogrammierte Melodie haben will. Man müsste nur die Werte kennen, die dort herausfallen und sie sich abtippen.
Oder um die Idee etwas weiter zu spinnen, man könnte einen Ethernet Arduino nehmen, dem einen Schalter verpassen, der in der loop() abgefragt wird. Ist er aktiv, wird die Tonausgabe ausgeschaltet und der Interrupttimer deaktiviert. Jetzt kann man auf dem Ethernetport lauschen und annehmen, was kommt, das schreibt man sich in das Array und schon hat man eine neue Melodie.
Legt man den Schalter wieder um, wird die Interruptschleife wieder gestartet.
Ich glaube ich spreche heute Abend mal mit dem Arduino-Män im örtlichen Chaostreff.
Dezember 27th, 2011 at 11:08
Mh naja. Also das gibts ja oft zu hören, dass die IDE so überladen wäre und auch sonst nicht so toll.
Aber man darf nicht vergessen das Arduino als Lernplattform gegründet wurde. Und genau das kann Arduino wirklich gut.
Ich brauch mir da keine riesen Gedanken machen wie die Software auf den Flash kommt usw. Ich drücke drauf und es geht. Das finde ich schon sehr sehr gut. Eben weil ich keine Ahnung davon habe wie sowas in der Industrie funktioniert.
Jop das könnte man auch in der Loop mit vordefinierten werten machen. Sicherlich.
Was hat denn dein örtlicher Arudino Mensch so gesprochen?
Dezember 28th, 2011 at 16:42
Oh, ich kenne die IDE ja gar nicht, ich hab mich nur geärgert, dass mir das nicht vorher aufgefallen ist, dass ich nicht mehr als einen einfachen Editor brauchte, vim oder so. Ich hab mal schnell gegooglet, es gibt auf jeden Fall auch einige nette CLI-Tools:
http://arduino.cc/playground/FreeBSD/CLI
Ardunio-Män sagt: Im Bereich des Möglichen. (Er ist aber auch noch ziemlich am Anfang mit Ardunino, wusste ich nicht :P ) Ich werde mich mal nach Silvester nach der Hardware umsehen, da sollte ich etwas mehr Zeit im Alltag haben, richtig cool wäre das dann ja auch, wenn der noch PoE kann. Gibt ja auch dazu Erweiterungen für den Arduino und ein PoE Injector ist ja nicht sonderlich teuer.
Dezember 28th, 2011 at 18:30
test
Dezember 28th, 2011 at 18:31
test2