Go Down

Topic: Synthesizer mit Arduino basteln (Read 337 times) previous topic - next topic

Rabenauge

Hallöle.
Neulich wollte jemand nen Klavierklang mit einem Arduino erzeugen, und ihm wurde gesagt: geht so nich wirklich.....
Die Bemerkungen reichten von "völlig unmöglich" über "gigantischer Aufwand" und "vergiss es" bis zu "interessante Herausforderung".
Letzteres gefällt mir...und da ich ja nen Midi-Keyboard schon mal gebaut hab, kann es auch singen lernen. Nen zweiten Arduino krieg ich da allemal noch mit rein.

Nun, wer will schon dauernd neue Fahrräder erfinden. Also stöbern wir mal etwas herum, und stossen zwangsläufig auf das hier:
http://playground.arduino.cc/Main/ArduinoSynth

Aha. Möglich isses also. 8)
Nachdem ich mir alles etwas angesehn hatte, fiel meine Wahl auf das Mozzi-Projekt.
https://sensorium.github.io/Mozzi/
Na von wegen "hochkompliziert", "unglaublich schwer" "völlig unmöglich". Denkste. :D
Zumindest ansatzweise (genauer hab ich es noch nicht ergründet bisher) ist sogar Wavetable-Synthese möglich, und das auch noch in, nun, sagen wir, brauchbarer Qualität!
Gut, Wavetables nehm ich nur noch, wenns mal schnell gehen muss und ich einfach bissel rum klimpern will, aber nen guter Einstieg sind die allemal.

Ehrlich gesagt: ich spiele lieber mit "richtigen" Synthesizern, wie PoiZone, oder die tollen Soft-Synthies von UHe, aber um aus dem Midi-Keyboard wieder ein standalone-Gerät zu machen, was _auch mal_ alleine klimpern kann, ist mir alles recht.
Ob es im Endeffekt bei nem Arduino bleibt, oder ich evtl auf nen Teensy-Kraftprotz umsteige, weiss ich noch nicht, erst mal tut es _irgendein_ Arduino.
Wir wollen die Sache ja erst mal in Ruhe ergründen, und das natürlich billig.
Uno liegt rum, also kommt er eben recht.
Aus nem ollen Kopfhörer (hat man ja genug rumliegen, zu jedem Handy gibts den Krempel), ner 3er Stiftleiste und nem Stückel Lochraster-Platine noch fix nen Adapter genaut, und los gehts.
Kann jeder mitmachen, der Lust hat- ich freu mich schon auf den gegenseitigen Austausch hier.

Was ich als nächstes bauen werde ist aber ein vernünftiger Adapter, damit ich das Ding auch direkt an meine Musikanlage anschliessen kann.
Braucht auch nich viel-aber leider Widerstände mit sehr geringer Toleranz, die hab ich grade nich.

Macht jemand mit?
------------
Grüssle, Sly

RudiDL5

Hi Rabenauge,
kurz vorm Einschlafen lese ich gerade deinen Beitrag - und bin wieder hellwach  :D

In der Tat, so ein Synthi kann eine große Herausforderung sein. Es kommt "lediglich" drauf an, wie weit man das betreiben will. Sofern es sich nur um Rechteck, Dreieck und Sägezahn dreht, geht das mit dem 328P recht gut. Ich habe mit dem besagten TLC...D/A-Wandler und ein wenig Assembler feine Ausgangssignale hörbar machen können. Mit ein wenig Berechnung kann man auch via Keyboard die passenden Frequenzen vorgeben und schon dudelt er melodiös vor sich hin. Beim Sinus gehts dann ans Eingemachte. Hier spielt bei der Berechnung Trigonometrie eine große Rolle - und da denke ich, dass der "Kleine" ohne Unterstützung schnell schlapp macht.

Entwerf mal 'nen Plan, was alles gemacht werden soll. Dabei fällt einem schon direkt auf, was "mal eben" machbar ist, wo man vielleicht einen Denkfehler macht, und was ohne große Verrenkung vielleicht unrealistisch ist.

Ich bin echt gespannt! Ich habe in den 70ern den "Formant" schon auf der Bühne im Einsatz gehabt. 2002 wollte ich einen Format II bauen - da entdeckte ich FruityLoops bzw. FL-Studio und habe die Bastelei verworfen. Der Arduino reizt mich aber schon lange für dieses Thema...

Rudi

Rabenauge

FL ist nen Windows-Programm und kostet auch noch Geld... :smiley-confuse:
Der freie "Nachbau" heisst LMMS, dort bind ich inzwischen fast jedes VST-Plugin ein, was ich haben möchte.
Ist auch richtig: nen Synthie wie ZynAddSubFX oder auch nur den Tyrell N6 wird man auf nem Arduino nicht hin bekommen, aber ganz viel Rechenleistung geht bei den Dingern auch fürs Interface drauf.
Sehr sparsam z.B. einer meiner Lieblinge: Aeolus.
Der läuft im Prinzip schon auf nem guten Taschenrechner. ;)

Ich hab lange überlegt, ob ich das -voll funktionsfähige- Casio CTK wirklich schlachten soll, aber die Gier hat gesiegt. Was so an Masterkeys auf dem Markt ist, ist entweder abartig teuer oder hat zwar jede Menge Spielereien, ist aber weit von der Praxis weg.
Naja- die originale Elektronik ist noch da, aber die Mididaten dann wieder umzuarbeiten und zurück zu schicken überfordert mich derzeit noch bissel. :)

Aber schön wär es doch, wenn es auch mal wieder alleine singen kann.
Tatsache ist: mit Mozzi ist es tatsächlich möglich, Wavetables zu benutzen. Eigentlich nicht soo verwunderlich, immerhin hatten die ersten Soundkarten auch nicht mehr Rechenleistung als ein Arduino, und konnten sowas.
Auch etwas höheren Ansprüchen an die Klangqualität wird er durchaus gerecht, wenn man will.

Was ich nun genau bauen will, da bin ich noch unentschlossen. Vermutlich wird es am Ende drauf hinaus laufen, dass ich nen zweiten Arduino (nen Mega ist ja schon drinne) in das Keyboard einbaue (der dann einfach die Midi-Daten kriegt), als Synthesizer.
Dazu wird dann gleich ein Preset programmiert, was, wenn es aktiviert ist, die Mididaten nicht raus, sondern an den Synthi-Arduino schickt. Da der Mega genug serielle Schnittstellen hat, wird das ziemlich einfach.
Hab ja ohnehin schon Geschichten wie Programm-Change, PitchBend usw. implementiert, und da kommt noch einiges.

Zum eigentlichen Synthie hab ich noch keinen so wirklichen Plan. Wavetables wäre nett- da könnte ich die ursprünglichen Klänge des Casio wieder einbauen.  8)  Ob das allerdings qualitativ hin haut...
Andererseits ist ein richtiger Synthie, den man quasi frei umprogrammieren kann, auch cool.
Die Idee hatte ich schon: nen Raspberry rein, auf dem dann z.B. ZynAddSubFX läuft. Mit nem Touchscreen könnte man das Monstrum dann sogar _irgendwie_ bedienen.
Aber so viel Aufwand will ich dann doch nicht treiben.

Erst mal wird einfach nen bisschen rum probiert. Genau genommen genügt es, wenn ne Handvoll Presets da sind, die man abrufen kann, und ggf. bissel Effekte hinzufügen. Für alles andere kommt halt das Midi-Kabel zum PC und fertig.
Das Grundsetup ist soo simpel, probier einfach mal: _irgendeinen_ Arduino, und nen Stück Kabel mit Klinkenstecker, mehr brauchste nicht.
Audacity auf den Pc, Klinke in die Mikrofonbuchse und es singt.
Midi-Unterstützung (In und OUT) ist bei Mozzi dabei, und die Adapter bauen ist nun auch nix.

------------
Grüssle, Sly

RudiDL5

Hmmm, es klingt so, als wenn wir recht unterschiedliche Zielvorstellungen hätten. Das FL-Studio habe ich hier vorliegen - und gehe damit recht gut um. Allerdings alles ohne Hardware - ich habe seit Jahren schon keine Geräte mehr und kann das daher nur noch virtuell machen. Das einzige was ich noch habe sind vom damals geplanten Formant II mehrere 19" Baugruppenträger auf dem Dachboden...

Daher der eigentliche Wunsch, via µC wieder mal ein autonomes Gerät zu bauen. Ich "sehe" das Teil in einem "sehr konkreten Gesamtbild" und weiss auch durch den "Formant" was eigentlich alles notwendig ist. Programmieren kann ich auch ein wenig. Mir gehts aber weniger um fertige Presets, Midi, VST-Plugins und ähnliches - sondern viel mehr um die "Freiheit", aus den einzelnen Basis-Komponenten beliebige Klänge mauell zu erzeugen.

Doch in erster Linie brauche ich erst mal eine "Eingabe" - so 'n Masterkeyboard und/oder sogar 'n echten "Döpfer" sind einfach jenseits von gut und böse...  :smiley-confuse:

Rabenauge

Hm-ich bin nicht wirklich der Sounddesigner.
Ich will einfach Musik machen. Sowohl mit LMMS oder auch Rosegarden, als auch einfach mal los klimpern.
Dafür nehm ich dann gerne den VST-Host, den es von Imageline zu PoiZone dazu gibt.
Oder einfach Wavetable-Synthese: Jack starten, QSynth, ein, zwei gute Soundfonts laden, und los gehts.
Dort kann man genug mit machen, aber: eben nich ohne nen angeschlossenen Rechner.
Zwar hab ich auch diverse Synthies, die Standalone laufen, aber die bequemsten kommen halt doch als VST-und da braucht man nen Host.

Was die Masterkeys angeht: ich hab nun zwei. Nen billiges Miditech (49er), und jetzt das umgebaute Casio.
Das Miditech kann im Grunde gar nix: nur einen (festeingestellten->nervig!) Kanal, Anschlagsdynamik, Oktavverschiebung Up/Down, Pitchbend-Rad und Modulation-Rad.
Die Tastatur von dem Ding ist recht brauchbar, die Software, die drauf läuft, weniger: Notenhänger gibts, die Anschlagsdynamik läuft so lala- naja. Man kriegt, was man bezahlt.
Ich hab das Teil mal an die Hairless Midi-Serial-Bridge gestöpselt, und da war klar: das Gehäuse durft nix kosten (ist robust, aber wirklich billig), aber die Software wohl noch weniger.

Daher hab ich mir das Casio vorgenommen.
Das Ding hat keine Anschlagsdynamik (stört mich weniger, da ich auch oft orgelähnliches spiele), dafür aber völlig klapper-und spielfreie Tasten, die sich sehr angenehm spielen.
Eingebaut hab ich nen Arduino Mega2560, ein 1.8er TFT, zwei Joysticks, ne blaue LED (das "brauch" ich irgendwie, das Miditech hat auch eine bekommen ;) ) und zwei Potis.
Soll noch einiges hinzu kommen, z.B. möchte ich die ganzen originalen Buttons später gerne wieder nutzen.

Momentan gibts zwei Modi:
nen fertiges Preset für Aeolus, und ein freies.
Aeolus hat deshalb ein eigenes, weil bei dem Synthie manches anders läuft, und weil sich ne richtige Orgel auch so spielen lassen soll.

In beiden Modi kann ich nen Splitpunkt frei (naja, nur die weissen Tasten, reicht aber) wählen, während den hochfahren (wenn ichs hinkrieg, will ich den später auch noch live justieren können, braucht man selten, aber doch mal).

Im Orgel-Preset arbeitet das Gerät auf insgesamt drei Kanälen: Linke Hand, Rechte Hand, Steuerkanal.
Mit dem Steuerkanal kann man abgespeicherte Presets auf dem PC abrufen, die lassen sich während dem Spiel ändern.
Das mach ich mit einer Joystick-Achse.
Die beiden, separaten Potis, bedienen hier Schwellkasten und Tremulant. Zusatzfunktionen des Aeolus halt.
Mit den Joystick-Buttons kann ich den Split bzw. den gespielten Kanal umschalten:
drück ich den rechten Button, wird der Kanal "rechte Hand" aufs komplette Keyboard gemappt.
Drück ich links, dann der linke. Drück ich den letzten wieder, ist wieder gesplittet.

Dazu gibts natürlich Anzeigen im TFT: unten klein ne Tastatur samt Anzeige des Splitpunktes sowie der aktuellen Kanäle.
Wenn der Split ausgeschalten ist, wird das natürlich auch so angezeigt.
Weiter oben dann die Werte von Schwellkasten und Tremulant, und mittig das jeweilige Preset von Aeolus.

Klingt kompliziert, aber in Wirklichkeit kann man so ohne jegliches Nachdenken alles bedienen.
So muss das auch.....

Im normalen Modus hab ich die Aufteilung ähnlich, jedoch funktionieren hier die beiden separaten Potis als Anschlag-Verstellung. So kann ich, da ja keine Anschlasdynamik da ist, dennoch "lauter bzw. leiser" spielen-und zwar jeden Kanal separat.
Mit den X-Achsen der Joysticks kann ich Programm-Changes senden, momentan kann ich je Kanal so 128 Instrumente aufrufen.
Split ein-oder ausschalten funktioniert hier genau wie im Aeolus, und wird auch genauso angezeigt. Obendrüber steht dann die Programm-Nummer des jeweiligen Kanals (alles andere würd keinen Sinn machen, da sich nicht jeder Synthie an den GM hält).
Links und rechts sind die beiden Skalen für die Anschlag-Regler, und mit den Y-Achsen der beiden Joysticks kann ich Pitch Bend senden.
Über Kreuz, denn wenn ich mit der linken Hand spiele, kann ich die dafür schlecht her nehmen... ;)

Das Display wird dynamisch aktualisiert, war bissel heavy, weil die Dinger nun mal rum trödeln, aber es funktioniert jetzt ohne Laufzeitprobleme.

Das Teil hab ich neulich probehalber nem Kumpel in die Hand gedrückt, nach ner Minute kam er damit absolut klar (er hat nen olles Yamaha PSR 1100). Demnach passt das Konzept.
Für den freien Modus will ich mir noch nen paar Regler einbauen, Modulation und hastenichgesehn-aber nicht übertrieben viele. Kann keiner mehr bedienen dann...

Weitere Sachen sind geplant: im Orgel-Preset wird momentan die linke Hand um zwei Oktaven verschoben, da das hier Sinn macht, aber ich will mit nen paar Buttons bei beiden Kanälen die Oktaven frei schieben können.


Wie schon gesagt: eigentlich wollte ich die Elektronik des Casio weiter verwenden, so übel klingt das Ding für ne Tischhupe nicht, aber da müsste ich die Tasten per Arduino emulieren und an den originalen Controller schicken, das trau ich mir momentan einfach nich zu.
Daher die Idee, mal nen kleinen Synthesizer zu basteln.

Mit Mozzi hab ich jetzt schon wieder nen bissel rumgespielt und auch im dazugehörigen Forum etwas geschnüffelt, und bin überzeugt, das geht.
Mit bissel basteln kriegt man sogar Stereo-Klang raus, Midi In ist gar kein Problem, Samples abspielen geht auch (umständlich, aber das macht nix, wenn man die fest ablegt, wie in fertigen Keyboards), und als reiner Synthesizer kann das Teil erstaunliches, wie man den Klangbeispielen entnehmen kann.
Sicher nix für ne CD-Produktion, aber wozu auch, schlechte Musik gibts wirklich genug. :D

Mein erster, ernsthafter Versuch wird dahin gehen, einfach mal ein paar Midi-Noten mit dem Ding so abzuspielen, dass es auch wie Musik klingt. Da ich das Keyboard nicht schon wieder auseinander rupfen will, und auch keine Lust hab, mir jetzt nen Midi In für den Uno zu basteln (das Zeug für hätte ich da, aber wenn ich den später einbaue, brauch ich das ja gar nich), werd ich einfach ne Sequenz fest im Speicher ablegen, und damit dann bissel experimentieren.
Das gibt auch die Möglichkeit, heraus zu finden, was denn der Lütte wirklich schafft, grade Midimässig geht das ja grundsätzlich ins bodenlose, wenn man will.
------------
Grüssle, Sly

RudiDL5

#5
May 08, 2016, 02:20 pm Last Edit: May 08, 2016, 02:21 pm by RudiDL5
:D :D
Das liest sich alles so, als wenn man jemandem der gerade "delay(x)" verstanden hat...
die Schönheit und Flexibilität von OOP erklären will.
:D :D

Ja nee is klar, da kann und will ich nicht mithalten und ist extrem fern meiner eigenen Ziele...
Hardware habe ich eh gar nix mehr, und im Grunde will ich nur 'n bissel besser als mit
"tone()" klimpern, mehr nit... "vielleeeiiicht..." mal irgendwann 'nen (noch zu beschaffendes)
Midi-Keyboard ans FL-Studio stöppseln. Aber dann ist schon Ende Gelände bei mir.

Egal,
viel Erfolg noch bei deinen Plänen

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy