Mein DIY Sequencer Project

Uija

|||
Hey!

Nachdem mich nun einige privat angeschrieben haben (hier und in anderen Foren), wollte ich nun mal "meinen" Sequencer vorstellen.
Als ich mich irgendwann Mitte 2020 auf die Cirklon Warteliste hab setzen lassen, scherzte ich noch unwissend, dass es wohl fast schneller sei, wenn man einfach selber einen Sequencer bauen würde. Den Traum dafür hatte ich schon lange, mein Wissen für Elektron und co. war aber einfach viel zu schlecht. Versuche mit selbst geätzten und gefrästen Platinen waren irgendwie unbefriedigend.
Irgendwann bin ich dann (viel zu spät) über Videos gestolpert, die davon berichten, wie günstig man mehrschichtige Platinen in China bestellen kann.
Damit fing die Reise an. Der erste Versuch war inspiriert von dem Sequencer, den ich bis dato am besten fand, der Deluge, ein Grid-Sequencer auf Basis von Neotrellis Platinen.
Den ersten Prototypen mit echten Platinen hatte ich Anfang 2022 auf dem Tisch. Zuerst ein ILI9341 display, dann mit 128x64px OLED. Angetrieben von einem Teensy 4.1 Board, ein Raspberry PI Pico hat sich um die Encoder und Buttons gekümmert, 4 MIDI Out + 4xUsb Device
seq01.jpg
Endlich musste ich nicht mehr mit 1000 Kabeln auf nem Breadboard, Wackelkontakten an den Encodern und fehlenden Knöpfen leben. Mit der Zeit hab ich aber ein paar Dinge festgestellt:
Der Raspberry Pi Pico ist zwar angenehm günstig, die Qualität des C/C++ SDK und grundsätzlich der Entwicklungsumgebung was furchtbar.
Mir fehlte eine Repräsentation, wo man gerade ist (aka LEDs an den Buttons)
Die Neotrellis knöpfe waren unglaublich wabbelig und irgendwie nicht so responsive, wie ich es gerne gehabt hätte. Keine Ahnung, ob es an dem langen Weg, bis sie reagieren liegt, oder meiner Implementation.

Da ich eh schon mit dem Seq4+ geliebäugelt hab und ja auch auf der Cirklon Warteliste stand, hab ich also parallel an einer neuen Hardware Iteration gearbeitet. Wie man unschwer erkennen kann, hab ich mich sehr stark vom Cirklon inspirieren lassen. Die beiden Encoder Links und Rechts zur Navigation und die beiden Analogen Potentiometer rechts oben wollte ich auch unbedingt haben. Letztendlich hab ich aber noch eine Reihe mehr Buttons dazu gepackt, um mehr Sachen im direkten Zugriff zu haben.

Da die erste Platine relativ teuer, weil sehr groß war, und bei einer Mindestabnahme von 5 Stück ja dann 4 ungenutzt rumlagen, hab ich die neue Hardware inspiriert durch das Seq V4 Projekt modularer aufgebaut. Ich hab die Platinen so aufgeteilt, dass die Encoder und Buttons unten in 4er Gruppen aufgeteilt waren, damit hab ich schonmal 4 von 5 Platinen genutzt, obwohl sie unterschiedlich aussehen, nutzen die beiden Seiten die gleiche, wie auch die beiden oberen Blöcke. Alles wird via Flachbandkabel auf einer IO Platine gesammelt, dort durch unterschiedliche ICs vorbereitet und an das Logic-Board geschickt, wo sich der Teensy, Stütztbatterie, USB gedöhns und so befindet.

Das Ergebnis war schon mal geil, aber intern ein unendlich frustrierender Kabelsalat:

seq02.jpg
Ich hab leider keine Fotos vom Innenleben gemacht. Mittlerweile hab ich die Platinen alle verwertet, in dem ich alle Bauteile abgetötet habe für spätere Experimente.
Auf dieser Kiste hab ich dann sehr viel Firmware gebaut sowie etliche Experimente mit unterschiedlichen Displays gemacht. Zwischenzeitlich hab ich die Firmware sogar auf einen Raspberry Pi portiert um mehr Möglichkeiten auf grafischer Seite zu haben:
seq2.5.jpg
Hier konnte ich vieles wiederverwenden, muss halt nur das Rendern der Oberfläche sowie die Midi implementation über ALSA bauen. Vom UI war das großartig. Multithreading hat mich das komplette UI animieren lassen, mit Farben konnte man viel mehr viel deutlicher präsentieren, und die Auflösung von 800x400 war halt viel angenehmer als 128x64.
Wenn da nicht der Unterschied zwischen den Plattformen sind. Auf einem Teensy läuft wie auf einem Arduino kein Betriebsystem. Da läuft die eigene Firmware, und wenn man einen Timer einstellt, der nach x micosekunden triggers soll, dann passiert das genau wie gewollt. Auf einem Computer, wie der Raspberry Pi einer ist, läuft da ein Betriebsystem (in dem Fall Linux), dass dafür zuständig ist, all die parallel laufenden Prozesse unter einen Hut zu bekommen. Da sitzt also irgendwo ein Stück code, der entscheidet, wann welcher Prozess wie viel CPU zur Verfügung gestellt bekommt. Das führt zu Latenzen im Audio und Midi Bereich (Darum wurde vor vielen vielen Jahren mal das Asio4all Projekt ins Leben gerufen, weil Windows wirklich ALLES über Audio priorisiert hatte). Ich konnte da an vielen Schrauben stellen, aber am Ende musste ich entscheiden, wo ich weiter machen wollte, und hab mich für die wirklich wirklich tighte implementation auf dem Teensy entschieden. Letztendlich ist das mit ner MPC zu vergleichen. Natürlich funktioniert eine moderne MPC gut, und in den aller meisten Fällen merkt man nichts, aber eine alte MPC ist halt deutlich tighter...

Da mir all die Probleme, die mit dem Kabelsalat einher gingen, und das dadurch viel zu große Device irgendwie dauerhaft begleitet haben, hab ich dann Ende 2022 eine neue Platine designed. Alles (Bis auf MIDI Outs) auf einer Platine, Abstände zwischen den Buttons etwas kleiner, angepasst auf das mittlerweile eingesetzte 256x64px Display usw:

Auch wenn ich bereits jetzt schon wieder an einer zweiten Version dieser Platine Arbeite (LEDs wieder nach unten, 3 weitere LEDs an den 3 Encodern, besseres Filtern der Potentiometer, dickere Leitungen zu den USB Ports usw), zeigt schon die Geschwindigkeit, wie ich dran arbeite, dass es nur noch ein nice-to-have und keine dringende Notwendigkeit ist...
Ein paar technische Fakten:

Sequencer läuft bei 192ppqn.
16 Tracks (wegen der 16 Buttons. Sollte ich bedarf haben, ist das easy erweiterbar und nur durch den verfügbaren RAM (16MB) eingeschränkt).
Pro Track 16 Patterns (wie bei Tracks, theoretisch erweiterbar)
Ein Pattern besteht aus bis zu 32 Bars mit je 1-16 Steps. Jede Bar hat einen Widerholungswert. Damit kann ich z.B. (1xBar1, 4xBar2, 3xBar3) spielen. Das hab ich mir beim Cirklon abgeguckt.
Es gibt mehrere Track/Pattern typen: Mono, Poly, Drum, Generative. Alle Tracks haben eine 16 Voice Polyphonie. Jede Voice ist komplett eigenständig. Jede der 16 Drumspuren hat eine individuelle Länge (wenn gleich das noch ein wenig im Zusammenspiel mit den Bars kränkelt, weil ich da den Playhear zurücksetzen muss). Jede Note auf einer Poly-Spur ist komplett eigenständig. Jedes Pattern hat eigene Programm-Change Informationen, eine eigene Play-Direction sowie eine eigene "Auflösung", also wie lang ist ein Step, von 1/32-1/1
Pro Step hat jede Voice: Notenwert, Velocity, Länge, Offset (24 substeps), Probability, Ratchets. Im Mono und Drum Track hat jeder Step dazu pro Note noch 4 Werte die "Parameterlocked" werden können.
Mono-Tracks haben dazu etwas, was ein wenig von den Aux-Channels vom Cirklon inspiriert ist. am Besten nutz ich davon den Chord-Modifier, bei dem ich aus einer Liste von 27 Chord-Intervallen auswählen und mit einem 2ten Modifier die Inversion bestimmen kann.
Pro Pattern gibt es 8 Modulation Lanes. Die können entweder LFO (Random, Sine, Triangle, Square, Saw, Inverted Saw) sein, oder vom Typ "Graph". Jede LFO hat eine eigene Frequenz, die Unabhängig von der Länge des Patterns ist. Es ist konfigurierbar, ob ein LFO, der beim Patternwechsel auf einen LFO stößt, der genauso eingestellt ist, einfach weiterläuft oder redetet. Der Graph ist so etwas, wie die Modulation Lane in einer DAW. Man kann in einer Auflösung von 192 schritten pro Bar beliebig viele Punkte setzen, und somit "Pixelgenaues" Modulation machen. Die Länge dieser Modulationsform ist beschränkt auf 64 Bars. (Dies ist einer der Kernpunkte, die mir bei Sequenzen fehlen).
Dazu gibt es noch einen Haufen Generative Features (Euclidean Generator für Drumtracks, diverse Möglichkeiten Melodien zu generieren etc.)

Derzeit hab ich 4 MIDI In und 4 MIDI out (DIN), 4 MIDI In und 4 MIDI Out über USB an den Computer (USB Device) sowie einen USB Host Port, der USB Hub fähig ist, an den ich derzeit bis zu 4 Geräte anschließen kann, die jeweils bis zu 16 In und Out haben können. Wie gut das Funktioniert kann ich aber nicht sagen. Ich hab da einen Blokas Midihub angeschlossen, um 4 weitere DIN Buchsen zu haben.

Technisch gibt es einen Haken. Wenn ich auf Play drücke, wird der erste MIDI event erst einen MIDI-Pulse später rausgeschickt. Ich habe also eine Latenz von 192tel Viertelnote beim Drücken auf Start. Grund dafür ist, dass ich pro Pulse immer die Daten für den nächsten Pulse berechne. Dadurch ist es in einem gewissen Rahmen irrelevant, wie lange das Berechnen von Propabillites und Modulation dauert, am Start eines Pulses werden alle MIDI Events so schnell es CPU und MIDI erlauben rausgeschickt. Messungen haben ergeben, dass das nicht wirklich relevant ist. Ich habe einen Test aufgebaut, der einen Pulse ausgibt, und ich eine Taste als Reaktion auf den Pulse drücken muss (4tel bei 120bpm). Ich drücke, selbst wenn ich mich anstrenge, deutlich unregelmässiger auf den Knopf, als die Latenz durch dieses Features ist.

Anbei eine Reihe Bilder unterschiedlicher Screens. Irgendwie bin ich nicht in der Lage, das Gerät sinnvoll in einem Video vorzustellen :sad:
Auch wenn man viel auf dem Screen sieht, bedient wird das ganze vor allem durch die Encoder und Buttons in der Mitte. Selten mal mit dem Hauptencoder oder in Menüs.

Interessant zu erwähnen wär vielleicht auch noch, dass das Speichern und Laden von Projekten funktioniert während der Sequencer läuft. Das ist ja scheinbar nicht überall so.

Project Screen:

Groß (IMG_5374).jpeg

Track Screen
Groß (IMG_5367).jpeg

Mono Pattern
Groß (IMG_5368).jpegGroß (IMG_5369).jpeg
Generieren von Noten für ein Mono Patterns
Groß (IMG_5377).jpeg

Drum Pattern
Groß (IMG_5371).jpeg

Eine einfach erweiterbare Menu Struktur zur Configuration
Groß (IMG_5379).jpeg

Bearbeiten von Instrument-Definitionen
Groß (IMG_5375).jpegGroß (IMG_5370).jpeg
Der alte, Elektron inspirierte Songmode
Groß (IMG_5376).jpeg

Diverse "Overlays" für Menüs und Feedback gibt es natürlich auch.
Groß (IMG_5383).jpegGroß (IMG_5380).jpegGroß (IMG_5384).jpeg
 
Zuletzt bearbeitet:
Hier einmal ein Screen vom Songmode:
Patterns können beliebig auf einem 1/16th grid platziert werden. Zusätzlich kann der Start-Step angegeben werden, ich kann also ein Pattern auch auf Step 8 statt 1 starten lassen.
SongMode.jpg

Und einmal der Modulation Bereich:

Groß (IMG_5372).jpeg
LFO:
Groß (IMG_5373).jpeg

Graph: der kann entweder recorded oder Manuel gesetzt werden. Dafür wird mit dem linken Encoder der Cursor bewegt (per pixel, oder pro 16tel) und dann mit dem rechten Encoder der Wert gesetzt und angepasst.
Da nach dem Rekorden extrem viele Punkte vorhanden sind, und das zwar nicht für die Wiedergabe aber fürs Bearbeiten eher ungünsitig ist, kann die Kurve unterschiedlich stark vereinfacht werden. Dabei wird jeder Wert verglichen mit dem Wert, den der Punkt hätte, wenn er interpoliert werden müsste, und man kann einstellen, wie stark sich der Wert unterscheiden kann. Werte zwischen 0 und 4 sind hier einigermaßen sinnvoll.

Groß (IMG_5362).jpegGroß (IMG_5363).jpegGroß (IMG_5361).jpeg
 
Möchtest Du Dein Projekt auch unter die Leute bringen? Sprich, vielleicht als Bausatz oder als Open Source zum selbst nachbauen?
 
Hey! Das ist ein recht schwieriges Thema und relativ komplex:

  • Ich hab kein Plan von Elektronik. Letztendlich ist die Platine nur ein Ersatz für sehr viele Kabel :P Ich lern mit jeder revision ein wenig mehr, und es kommen immer ein paar mehr Bauteile dazu (zum stützen, filtern usw), aber vergleich ich mein PCB mit denen vom Seq V4 z.B., dann nutz ich quantitativ gar keine Bauteile.
    Dazu ist die Platine bis auf die Tasten und Encoder fast 100% SMD. Das ist recht nervig zu löten. Gerade die LEDs sind echt ätzend, weil die nur unten richtige Kontakte haben. Ich hab relativ oft nachgelötet und Dinge ausprobiert, bis das jetzt fehlerfrei läuft.
    Das ist nicht unbedingt etwas, was andere haben wollten, denk ich mir.
  • Alles drumherum ist halt auch DIY. Die Encoder-Kappen sind gekauft, das Frontpanel aus 1mm GFK gefräst, alles andere kommt aus dem 3D Drucker. Und jeder der 3D druckt weiß, dass nur weil bei mir aus einem STL etwas entsteht, was perfekt auf etwas drauf passt (Keycaps passen ohne so viel Druck auszuüben, dass es eher bricht, aber halt auch nicht wackelt), das bei jemanden anderen nicht so sein muss, weil die Umstände, das Filament oder sonst was anders ist. (Innenabmessungen sind blöd im 3D-Druck).
  • Ich bau den komplett anhand meiner Anforderungen. Anforderungen den bisher kein Sequencer (teils garnicht, letztendlich keiner komplett) nachkommt. Das ist sehr angenehm für mich, heisst aber auch, dass ich viele Features bau, die die Masse an Hardware-Sequencer-Usern nicht braucht. Denn äußere ich solche Wünsche in den Feature-Request Bereichen, sind die freundlichsten Reaktionen nach Schweigen meist: "Eh, dafür gibt es DAWs?". Dafür kann ich halt weder Microtonalität, MPE, Multi-Source-Recording, meine LFOs modulieren vor allem MIDI-Event relevante Sachen anstatt interne Ziele, und alle Tracks sind am Ende am selben Tempo orientiert (so wie bei Elektron). Und, heutzutage ja schon fast ein Frevel: CV und Gate ist nicht mal vorgesehen :P
  • Ich hab keine Zeit (und eigentlich auch keine Lust) Support zu leisten. D.h. selbst wenn ich losgehen würde und sagen: Hier, Hard- und Software, nimm, aber lass mich in Ruhe, wird das nicht passieren. Sicherlich sind wenige Menschen so, aber Situationen, dass man etwas bei Ebay Verschenkt, und angemeckert wird, weil man es nicht kostenlos vorbeibringen möchte, sind nicht erfunden. Mich schreiben heute noch Leute an, wegen einer Software, die ich 98 mal open source gemacht habe, für ein System, was es nicht mehr gibt, in einem Kontext, den eigentlich keiner mehr nutzen sollte, und erwarten, dass ich ihre nicht zur Software passenden Probleme löse.
  • Naja, und dann ist zumindest das UI-Layout sehr stark von einem Produkt, was in Berlin produziert wird inspiriert. Vor allem, weil ich die Bedienung toll so finde. Ich möchte da halt aber auch keinem auf die Füße treten und ein "Konkurrenz"-Produkt anbieten.

Das alles gesagt: Ich kann mir sehr wohl vorstellen, dass ich, wenn ich mit der nächsten Hardware-Iteration die letzten Wehwehchen beseitigt hab, die noch da waren (Noise auf den Potentiometern, 2 fehlende LEDs, etwas zu klein dimensionierte USB Leitungen), zumindest die Gerber oder KiCad files weitergebe wenn jemand nett fragt, und ggf. ein kleines Softwarepaket schnür, in dem die Hardware schon mal abstrahiert wurde (also Buttons und Encoder ausfgelesen und in sinnvoller Form dem System bereit gestellt, MIDI Interfaces erstellt, Display initialisiert und ggf. USB Host initialisiert und soweit vorbereitet, dass man sich um die wirklichen Dinge kümmern kann. Das wär dann aber halt nicht für User, oder Leute, die ein DIY Kit bauen und benutzen wollen, sondern für jemanden, der selber einen Sequencer bauen möchte, und so nicht selber erstmal die Hardware entwickeln muss, aber halt in der Lage ist, sich all die Dinge zu beschaffen, zu drucken, und dafür ggf. selber Anpassungen an den Dateien vornehmen muss).

Ein Projekt, was im Grunde ein einziger Prototype ist, in eine Form zu bringen, dass jemand anderes ohne das ganze halb selber zu entwickeln, nutzen kann, ist unglaublich mehr Arbeit als man denkt, je komplexer das Projekt ist.
 
Zuletzt bearbeitet:
Wow, finde es sehr beeindruckend, dass du dir deinen Traumsequencer selbst gebaut hast bzw. noch weiter verfeinerst. Super!
 
Boah, sieht mega geil aus, respekt!

Ich hatte auch mal an einem custom sequencer Projekt gearbeitet, mich auf die Software-Seite fokussiert aber bin an der Hardware angeeckt und eingeschlafen. Ich wollte immer mal platinen designen aber habs nicht gemacht, keine Zeit.

Das basierte ebenfalls auf der raspberry, ich hatte mir mit buildroot ein minimales linux zusammengestellt.

Aber damals kannte ich den "Bare Metal" ansatz noch nicht, vielleicht ist das was fuer dich?

https://github.com/rsta2/circle

Audio ueber USB geht allerdings nur mit der RPI 4, anonsten ueber "I2S" oder HDMI.

Ich habe mir jetzt mal einen Blokas PiSound bestellt und probiere das ggf. mal aus.

Danke fuer die interessanten infos und ich wuensche viel erfolg.

Waere ggf. auch interessiert das ergebnis zu kaufen sollte es dazu kommen.

P.S. Ich arbeite derzeit an einem neuen Projekt, ist aber ganz geheim :)
 
Ich hatte auch vor ne eigene Groovebox zu bauen weil mich der Markt jedesmal nur enttäuscht. Hab dann angefangen was auszuarbeiten (theoretisch erstmal und mit 3D Modellen)
Leider ist das Projekt an Hohn und Spott (in einem anderen Forum) dann meinerseits eingestellt worden. Hatte da Leute gesucht die Ahnung von Elektronik haben und mir dabei helfen können / wollen.
Aber super das du dein Projekt durchziehst. Gefällt mir!
 


News

Zurück
Oben