Neu

Sequencer Eurorack Modul

Hi zusammen,

ich habe wieder mal ein neues Projekt angefangen, es wird ein Eurorack Sequencer.
Ja zu kaufen gibt es bestimmt so einige Sequencer, auch für das Eurorack. Allerdings ist selbst bauen schon cooler als kaufen und leider manchmal auch frustrierend (wie im Moment).

Da ich mich noch nicht allzu lange mit Musik und der zugehörigen elektronischen Klangerzeugung beschäftige, war Ratcheting für mich ein neues Thema. Klar kann der Korg SQ-64 das auch ist aber mit dem Menü wenig intuitiv.
Also war klar, es soll mindestens 2x8 Schritte geben, mit zugehörigen CV-Ausgängen. Da die Hardware alleine schon recht hochpreisig ist, für einen einfachen Sequencer, müssen noch einige Funktionen mit dazu gepackt werden.
Programmieren wollte ich einen Raspberry Pi Pico. Der ist sehr günstig, wenn nicht sogar billig.
Das Programm wird in C/C++ geschrieben mit der PICO-SDK. C/C++ ist auch wiederum eine Herausforderung für mich, da ich sonst nur in Python programmiere.

Anforderungen
  • 16 Step Eingänge in Form von 3-State Schaltern (ON-Off-ON) an einem MCP23S17 auf geteilt in 2x8er Reihen (ROW_A / ROW_B)
    • Jede Reihe bedient einen MCP23S17 (16 Eingänge bzw 2x8)
    • Step-Schalter mit 3 States.
      • Je ein Schalter wird an Pin X von Port A und Port B anschlossen
      • Stellung ON(1): MCP23S17 Pin an Port A auf GND und Port B auf High (Pullup)
      • Stellung OFF: MCP23S17 Bank A und Bank B High mit internem Pullup
      • Stellung ON(2): MCP23S17 Pin an Port A auf High (Pullup) und Port B auf GND
  • 16 LEDs werden in 2x8er Reihen über je ein 74HC595 ShiftRegister angesteuert
  • 16 Potis am Analog Input 0 Über einen Multiplexer MUX_S0 - MUX_S3
    • CH 0-7 korrespondieren zu ROW_A
    • CH 8-15 zu ROW_B
  • 2 Schalter
    • Ein Schalter mit 2 States, um den Clock input zu wählen EXT oder MIDI
    • Ein Schalter mit 3 States, um den Sequencer Mode umzuschalten 1=1x16, 2=2x8, 3=1x8 Ratcheting
  • MP4728 (I2C 4-Kanal DAC)

Mode Select
Mode:​
  • 1=1x16
  • 2=2x8
  • 3=1x8 Ratcheting

CV / Velocity Out
  • Unklar ist noch der Spannungsbereich nur 0V - 5V, 0V - 10V oder gar -10V - +10V
  • Habt ihr Vorschläge?
Display
  • Ob das Display rein kommt ist noch unklar. Im Moment hat es keine Funktion.


Ich mach Breadboards nicht.webp
Hier im Aufbau sind für demo Zwecke nur 3 LEDs statt 8 pro Reihe und nur 1 Potis statt 8 pro reihe.
Die LEDs sind noch invertiert.
MIDI funktioniert zur Zeit noch nicht.
Ich bin zudem noch nicht sicher, ob es eine DIN Buchse oder Klinke mit 2 Bestückungs / Platzierungsvarianten werden soll, um die 2 "Standards" abzudecken.

Gerade bin ich noch dabei die 3-States für die Step-Schalter zu implementieren. Da hänge ich gerade fest.
Weitere Probleme habe ich noch mit den Gate ausgängen, die sollten ja nur 1/2 Takt lang sein. Wie lang ist aber die ON-Zeit es beim ersten Takt?

Wenn das Projekt abgeschlossen ist oder zumindest einen brauchbaren Status erreicht hat, wird es auf GitHub veröffentlicht.

Hoffentlich ist es einigermaßen verständlich, was ich vor habe.
Ich bitte um Verbesserungsvorschläge.
 
  • Daumen hoch
M.i.a.u.: Modie und tangrami
Es sind am PICO noch 2 Pinne frei geworden. Die könnten noch als Wahlschalter für die Richtung dienen (FORW / REV / RAND).
Ebenso könnte der Input Select noch eine Interne Clock schalten. Dazu ein Poti am ADC ausgelesen und die Geschwindigkeit einstellen. Das sollte aber vorab getestet werden.

Nächster wichtiger Schritt ist es, die 2x8 Steps mit ihren 3-States Schaltern ans laufen zu bekommen.
 
Kleines Update: Die 3-State Schalter für die 2x8 Steps können nun eingelesen werden, um später ON/OFF/HOLD(Legato) schalten zu können.
Nächster Schritt: Gate outputs entsprechend des Eingangstakts und der Schalterstellungen vernünftig ausgeben.

Blockschaltbild.webp
 
Zuletzt bearbeitet:
Ein kleines Update:
1x16 und 2x8 Sequenzen funktionieren schon mal.
Der Schalter oben rechts wechselt zwischen 1x16 und 2x8. Mittelstellung wäre für Ratcheting 1x8.
In der Sequenz sind Sowohl ON / OFF und Hold Steps zu sehen.
Das grüne Vogelnest in der Mitte symbolisiert die Schalterstellungen für die 16 bzw 2x8 Steps.
Ratcheting muss noch implementiert werden. Wird wohl der nächste Schritt sein, sobald ich Zeit dafür habe.

Am unteren Rand sind jeweils nur 2x3 statt 2x8 LEDs aufgebaut. Sollte als Beispiel fürs Erste reichen.
Anhang anzeigen Sequencer_Mode_2x8_1x16_ONOFFHOLD_Demo.mp4
Leider habe ich gerade kein Stativ zur Hand, ich bitte die Wackler zu entschuldigen ;)
 
  • Daumen hoch
M.i.a.u.: Modie
Hast Du das mit den CV's und Potis schon getestet? Der RP2040 hat leider einen Hardwarebug im ADC (Errata RP2040-E11) der den ADC faktisch zu einem 8 Bit ADC degradiert. Wird vermutlich trotzdem zum einlesen der Poties reichen, genauer als 1° bekommt man die eh per Hand kaum eingestellt.
 
  • Gute Idee
  • Daumen hoch
M.i.a.u.: Modie und DeepSea
@amesser der ADC vom RP2040 und RP2350 ist wohl wirklich ... ähm ... sch.. nicht zu gebrauchen. Es gibt auf GitHub Vorschläge die Nichtlinearitäten zu kompensieren. Allerdings ist mir der Aufwand zu groß und die Erfolgswahrscheinlichkeit des Gelingens zu gering.
Meine Wahl viel nun auf einen MCP3204. Den hatte ich zum Glück in der Bastelkiste und so werkelt er hier schon eifrig rum.

Kleine Randnotiz: Breadboards und ich werden wohl niemals so richtige freunde. Die kann ich zwar etwas besser leiden als Lochrasterplatinen, aber toll ist beides nicht.
Immerhin ist es sinnvoll, um die Designstudie durchzuführen. Es ist sicherlich auch viel günstiger, als für jeden Versuch und Erkenntnis eine neue Platinen Revision zu bestellen ;)
 
Ich benutze den ADC um CV für Modulationsstärke einzulesen. Da reichen die 8Bit für. Aber bei Pitch siehts halt anders aus.

Ja Breadboard haben so ihre Tücken, da schwingt der OPV auch gernemal wegen der ganzen parasitären Kapazitäten...
 
  • Daumen hoch
M.i.a.u.: BatNoize
  • #10
Der Code für den RP-Pico steht größtenteils. So dass ich mit der Platine anfangen konnte.

Nach einigen Überlegungen und Anpassungen Habe ich nun endlich ein Board mit dem man arbeiten kann.
Es ist noch lange nicht fertig, aber immerhin ist der grobe Teil schonmal umgesetzt.

Ich bin noch unschlüssig, ob ich eine MIDI DIN Buchse oder TRS einbauen sollte. Ist mit den beiden Quasi-Standards A und B etwas blöd. Die DIN Pin-Belegung ist hingegen eindeutig.

CV 1 & 3 / CV 2 & 4 werden einstellbar sein. Bereiche sind -10V/+10V und 0/5V, könnte aber auch umbestückt werden. Dazu brauche ich aber noch einen Testaufbau.

PCB TOP.webp


PCB Bot.webp


Kleine Anmerkung: Im Nachhinein frage ich mich, ob ich nicht besser einen Industriestandard, wie einen STM32 hätte auswählen sollen.
 
  • Daumen hoch
M.i.a.u.: Modie
  • #11
Kleine Anmerkung: Im Nachhinein frage ich mich, ob ich nicht besser einen Industriestandard, wie einen STM32 hätte auswählen sollen.
STM32 ist kein Industriestandard. Da findest Du viel mehr von Microchip oder TI. STM ist da im Vergleich eher klein. Ich mag den RP2040 weil er sehr einfach zu verwenden ist, das Programmieren über USB ist wirklich gut gelöst. Du könntest bei Dir ja auch einen RP2350 drauf stecken wenn die Power nicht reicht. (Was ich nicht glaube) Der große Vorteil vom RP2040 ist der recht üppige RAM für den Preis.
Wenn du Platz hast, nimm DIN. Man kann einen TRS Midi auch so beschalten, dass er beide Varianten kann, einfach zwei Optokoppler nehmen, die Eingänge antiparallel, die Ausgänge parallel. Wenn es geht würde ich zumindest noch einen Midi-Through drauf packen, das braucht nicht viele Teile und keinen Extra Pin vom Mikrocontroller. Ich vermisse das oft. Vielleicht sogar einen Midi Out, macht sich am Sequencer...
 
  • Daumen hoch
M.i.a.u.: Modie und BatNoize
  • #12
Danke für den Tipp, werde mal versuchen MIDI Through drauf zu packen. Damit lässt sich die Lücke füllen ;)

Ja, der RP2040 ist schon sehr einsteigerfreundlich. Power und Speicher hat der auf jeden Fall mehr als genug.
 
  • #13
Im Supporter Chat des Sequencer Talks ist das Schlagwort "Probability" gefallen. Das ist leicht zu implementieren und es war noch Platz zudem kann ich damit noch die unschöne Lücke in der Leiterplatte füllen.

Hinzugekommen ist demnach ein Poti und ein CV Eingang für die Probability. Ausserdem noch ein CV Eingang für die "interne" Clock, die dann also nicht mehr intern sondern auch ext. über CV gesteuert werden könnte.
Ob die beiden Neuerungen funktionieren wird sich nach dem Zusammenbau herausstellen. (Kein Bock mehr auf das Breadboard).

Die Option für das Display habe ich weg rationalisiert.

Hier ist das angepasste Blockschaltbild und die entsprechende PCB Vorschau:
Sequencer_Diagram.webp

PCB TOP.webp
 
  • Daumen hoch
M.i.a.u.: RustyChuan und Bodo
  • #14
Gestern habe ich schon begonnen die Gerber Daten für die Bestellung der ersten beiden Platinen fertig zu machen, ohne Frontpanel.
Zum Glück habe ich noch keine Platinen bestellt. Beim erstellen des Frontpanel sind mir noch ein paar falsche Positionierungen aufgefallen.
Außerdem hat sich außerdem noch eine Optionen aufgetan. Es gab noch Platz für einen Reset Button, der könnte hilfreich sein.

So ganz zufrieden bin ich mit dem FP noch nicht, aber es immerhin ist ein Anfang.
Habt Ihr noch Anmerkungen oder Ideen? Ich bin für Anregungen offen.

PCB FP_render.webp
 
  • Daumen hoch
M.i.a.u.: marcos, Moogulator, tangrami und eine weitere Person
  • #15
Heute konnte ich noch etwas Zeit erübrigen, um das FP etwas anzupassen.
Die Beschreibung und Layout Vorschau findet Ihr auf dem CodeBerg Repository. Ich wollte mal was anderes als GitHub ausprobieren und da CodeBerg in Berlin gehostet wird zudem auf Tracking verzichtet, war mir das sehr sympathisch.

PCB_FP_render.webp
 
  • Daumen hoch
M.i.a.u.: Smutje, Modie, laux und 6 andere
  • #16
Sehr spannendes Projekt. Werde ich mal weiter beobachten.

Das Layout wirkt sehr unruhig und überladen, habe aber aktuell keinen produktiven Vorschlag, wie man das "ruhiger", übersichtlicher gestalten könnte.
 
  • #17
Geiles Projekt & für meinen Geschmack ist das Design der Frontplatte richtig gut gelungen.
Was ich noch richtig nice fände, wäre ein integrierter Clock Divider ... vielleicht lässt sich der vorhandene Poti für die Clock "INT" dazu verwenden? Wenn also eine Clock am Midi IN oder Ext Clock Eingang empfangen wird, dann ist das der Poti für den Divider ...(?)
 
  • #18
Hi @SirAdrianFish und @Bruce,

danke für das Feedback.

Das Layout wirkt sehr unruhig und überladen, habe aber aktuell keinen produktiven Vorschlag
Ja, da stimme ich dir zu. Mittlerweile ist sehr viel drauf bzw dazu gekommen, dadurch ist leider etwas wirr geworden. Ruhiger wäre mir auch lieber, mal schauen, ob da noch was geht. Ich habe aber wenig Hoffnung und größere Positionsänderungen kosten immer viel Zeit.

integrierter Clock Divider
Clock CV und das Poti gehen auf einen ADC und könnten somit per Software umfunktioniert werden. Evtl könnte ich noch einen User Button ergänzen, mit dem man die Funktion umschalten kann. Dann wird es aber noch voller und unübersichtlicher.

Vielleicht mag mich ja jemand beim Programmieren unterstützen :arbeiten:
 
  • #19
Stören dich die Gateausgänge in der Mitte nicht? Die Kabel hängen dann über den Potis der zweiten Reihe. Würde ich unter der zweiten Reihe positionieren.
 
  • Daumen hoch
M.i.a.u.: KleinKlang
  • #20
Hi @binary_idol

das ist vermutlich gut möglich, die Positionen zu verschieben. Die Gatereihe ist mit den LEDs aus der ersten Reihe verknüppelt.
Wenn ich die also verschiebe, passen die logisch nicht mehr zusammen. Wenn du z.b. 1x16 Steps einstellst, reagieren die Gates nur bei den ersten 8 Steps und bei der unteren Reihe (Step 9-16) gar nicht. Dann irritieren die Gates an der Position wohl eher.
 
  • #21
Hi BatNoize, interessantes Teil. Sind aus Platzgründen nur 8 Gate-Outs vorgesehen und keine 16? Und könnte man die Outs umschaltbar machen zwischen Gate und CV des jeweiligen Steps? Dann ließe sich der Sequenzer auch als Modulationsquelle pro Step nutzen.
 
  • #22
Hi @jancore,

vielen Dank, das hört man gerne.
Platz habe ich kaum noch auf der Platine, daher sind es nur 8 Gate-Outputs geworden.
Umschalten zwischen gate und CV ist schon eine große Änderung, wüsste auch nicht, wie ich das unterbringen kann. Ist aber eine coole Idee. Die packe ich mal auf mein ToDo für eine Weiterentwicklung.

@Bruce, ich habe noch etwas Platz für einen User-Button gefunden ;)
 
  • #23
Vielleicht mag mich ja jemand beim Programmieren unterstützen :arbeiten:
Ach ja, würde ich schon gerne ... ist aber unrealistisch für mich mangels Zeit - müßte nach längerer Zeit überhaupt erstmal wieder ins programmieren einsteigen.

ich habe noch etwas Platz für einen User-Button gefunden ;)
Nice!

Ich find das Design gar nicht wirr, mir erscheint das alles logisch ... besonders im Vergleich zu manch anderen, z.B. Make Noise ...
 
  • Daumen hoch
M.i.a.u.: AcidDiver
  • #24
Hi,

nach dem letzten SequencerTalk haben wir im Supporter Chat über den Sequencer diskutiert. Vielen Dank an der Stelle für das Feedback.

Daraus habe ich folgendes mitgenommen:

Ich werde den User Button wieder raus werfen und durch einen Schalter ersetzen. Dadurch folgende Optionen realisieren.
Ist der Clock select Schalter im auf Internal (hier brauche ich noch ein neue Bezeichnung) dann lässt sich die Funktion des CV input oder Poti entsprechend nutzen:
- Clock Geschwindigkeit
- Clock Teiler
- Direkt zu einem Step springen

Die Schalter Mode und Direction werde ich drehen und zusammen schieben. Dadurch gewinne ich Platz um den verbleibenden ADC Eingang nutzen zu können. Dieser bekommt die Aufgabe die Richtung beeinflussen zu können.

Es wird einen optionalen Expander geben, um die 2te Reihe Gate Outputs ergänzen zu können.
 
  • Daumen hoch
M.i.a.u.: Bruce und SirAdrianFish
  • #25
Wie wärs statt LEDs mit einem 595 anzusteuern gleich WS2812b zu nehmen? Spart Pins und ist in Farbe....
 
  • #26
Hi @fcd72,
stimmt, die WS2812, WS2813, WS2815 und wie sie alle heißen sind schon cool und es reicht in Pin zur Ansteuerung. Vor drei Monaten hätte ich das gerne noch geändert.
Ich bin mir nicht sicher, ob es die auch gedrahtet gibt. Evtl müsste man bei SMD LEDs mit Lightpipes arbeiten, geht mit einem Resin Drucker bestimmt auch schön customized.

Es wird aber jetzt so old school bleiben. ;)
 
  • #27
Hi @fcd72,
stimmt, die WS2812, WS2813, WS2815 und wie sie alle heißen sind schon cool und es reicht in Pin zur Ansteuerung. Vor drei Monaten hätte ich das gerne noch geändert.
Ich bin mir nicht sicher, ob es die auch gedrahtet gibt. Evtl müsste man bei SMD LEDs mit Lightpipes arbeiten, geht mit einem Resin Drucker bestimmt auch schön customized.
Du könntest auch einfach SMD nehmen und im Panel (das macht kan ja auch gerne als PCB).. einfach Aussparungen in den Planes lassen. Lightpiptes gibts aber auch von der Stange.
 
  • Daumen hoch
M.i.a.u.: BatNoize
  • #28
Sehr spannendes Projekt. Werde ich mal weiter beobachten.

Das Layout wirkt sehr unruhig und überladen, habe aber aktuell keinen produktiven Vorschlag, wie man das "ruhiger", übersichtlicher gestalten könnte.

Es sind die linien die das so unruhig machen: Ich empfehle mit flächen zu arbeiten - man kann trotzdem einfarbig bleiben wenn man mit rasterungen arbeitet.

Die aussenlinie (umrandung) könnte man sich zb auch sparen - macht das ganze nur kleiner und hat keine funktion...
 
  • Daumen hoch
  • hilfreich
M.i.a.u.: SirAdrianFish und BatNoize
  • #29
In den layout ist auch alles "gleichgewichtig": Alle elemente rufen "Ich bin wichtig" nein "Ich bin wichtig"...
Wenn man sich im vergleich die reine platine studiert, ist diese ruhiger, obwohl 100x mehr elemente vorliegen.
Ganz einfach: Die platine hat eine eindeutige optische hierarchie (erzwungen von der technik) - das layout hat es bisher nicht, ist aber hilfreich.
Aus meiner sicht sogar notwendig.
 
  • #30
Die linien könnten man - will man sie behalten zu einer punktlinie auflösen - da das hauptelement sowie ja punkte, kreise, potis sind.
Ich vermute aber auch das man auf diese horizontalen linien ganz verzichten kann - und der user trotzdem weiss wo es hin bzw lang geht.
Muss man ausprobieren.

Es gibt eine kleine inkonsequenz bezüglich dem midi-fach/ bereich und unten rechts dem Row1 und 2 bereich.
Im midi-bereich kannst du auf eine linie links/senkrecht auch verzichten - so wie du es bei Row12 ja auch tust...

usw :-)
 
  • hilfreich
M.i.a.u.: BatNoize

Zurück
Oben