noqqe


blog | sammelsurium | projects | about

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 ehrlich gesagt 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.

Auduino Sample Mp4 Auduino Sample WAV 16 bit 22 Kkhz

Comments (11)

Knorkebrot on 2011-12-22T17:23:21
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. :/

noqqe on 2011-12-22T18:19:51
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

noqqe on 2011-12-22T18:25:07
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.

Knorkebrot on 2011-12-22T21:49:04
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.

noqqe on 2011-12-27T14:08:14
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?

Knorkebrot on 2011-12-28T19:42:35
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.

noqqe on 2011-12-28T21:30:59
test

noqqe on 2011-12-28T21:31:19
test2

Guest on 2012-12-09T20:03:45
Hey, ich würde den auch gerne nachbauen, allerdings finde ich auf der Seite den Download für den Source-code nicht ... Oder ist der komplette code schon das kleine Popel ding da, welches man nurnoch in eine schleife setzen muss, wenn ja wie muss ich die inputs und alles definieren? Am besten du postest einfach mal den kompletten Code, wäre sehr nett :) Außerdem: kann man als Potis auch x-beliebige lineare 4.7kohm potis nehmen oder braucht man die vom Tinkershop?

Anonymous on 2014-02-23T11:53:45.354058
hey ;) Ich weiß, dass das bei dir jetzt schon eine Weile her sein mag, allerdings würde ich den auch gerne nachbauen, hab aber absolut keine Ahnung von Arduino und Programmieren. Bekomm ich das trotzdem hin und wie lange wird es dauern? Weisst du das? Und welche Bauteile würde ich dafür benötigen?

Anonymous on 2014-04-12T10:32:14.294218
Wo finde ich genau den Code? Alles super aber den Code finde ich nicht