Wo nun die Programmierung des Trigger Controllers bereits so weit fortgeschritten war, dachte ich dass ich nun auch schnell die PCBs fertig bekommen würde. Wie am Datum dieses Eintrags allerdings ersichtlich wird, ist mir das überhaupt nicht gelungen. Da kam einfach eine ganze Menge an anderen Großprojekten dazwischen und auch die Bestellungen dauerten diesmal etwas länger, als ich es gewohnt bin (Tayda hat wirklich gute vier Wochen gebraucht und dann ist das Paket auch noch beim Zoll hängen geblieben). Nun ja - inzwischen war dann doch einiges eingetrudelt und von Mouser fehlen nur noch ein paar Teile für andere Projekte (dazu später mehr). Also habe ich mich die letzten paar Abende hingesetzt und in ein paar kleinen Lötsessions die restlichen Teile (Widerstände, Kondensatoren, Germanium Diode und Transistoren) verlötet bzw. die ICs gesteckt. Siehe da: es fehlt zumindest schonmal kein Teil auf dem PCB. Den Noise-Transistor unten rechts auf jedem PCB habe ich mit einem Sockel angebracht, damit man ihn ggf. leicht gegen andere austauschen und so den Klang manipulieren kann - und dann umgebogen, weil sie sonst der höchste Teil der ganzen Konstruktion geworden wären. Auch bei den Folienkondensatoren bin ich mir noch nicht sicher, ob die so schick sind, wie sie montiert sind, oder ob ich doch noch alle gegen die teureren, kleineren, vermutlich auch stabileren und langlebigeren austausche. Aber früher hat man solche Kondensatoren verbaut - insofern probiere ich das für den Clone auch erstmal aus.
Abschließend habe ich noch schnell die Spannungsversorgung auf Durchgang geprüft (sodass keine Kurzschlüsse schon direkt auf der Hauptleitung zu verzeichnen sind) und da auch die Potis nun schon da sind, könnte ich demnächst mal zusehen, dass ein Modul komplett zum Funktionieren gebracht wird (so denn keine Fehler beim Bestücken oder Löten passiert sind). Dann kann ich auch gucken, ob die 5 V zum triggern ausreichen.
So fehlt eigentlich nur noch das Frontpanel und ich kann ein weiteres Video aufnehmen :-) . Das Frontpanel habe ich auch schon rudimentär vorbereitet und die Poti-Kappen sind auch schon da.
Update: Gerade habe ich in den Schematics vom simmonsmuseum.com gefunden, dass der Trigger-Input von einem Sequencer zwischen 1 und 15 V liegen darf - die 5 V sind also perfekt. Eine Anmerkung sagt hier zwar, dass dieser Teil des Schaltkreises auf dem Motherboard sei, aber der Trigger-Input auf dem Clone PCB führt über dieselben Widerstandswerte in den IC 1. Insofern sieht es dann auch so aus, als würde an der positiven Flanke getriggert - also alles so, wie ich es eh schon implementiert habe.
Es hat mich die Woche über der Programmierbug gebissen und ich habe mal zugesehen, dass ich die Drumrolls auch schonmal schnell implementiere. Tatsächlich war es am Ende doch eine Herausforderung: die 128 Byte RAM sind doch ziemlich wenig für 32 Bytes Ringbuffer für die MIDI-Nachrichten: 6 Noten gleichzeitig erzeugen im schlimmsten Fall 18 Bytes auf der seriellen Schnittstelle, die weggespeichert werden wollen. Es ist zwar unwahrscheinlich, dass ich allzu oft alle Noten gleichzeitig drücke und der Mikrocontroller die Nachrichten nicht zwischendurch bereits abarbeitet (oder auch nur Teile davon), aber man will ja gewappnet sein - abgesehen davon kann es ja sein, dass auch noch andere Nachrichten auf dem Bus durchrattern. Darüber hinaus noch die neuen Datenstrukturen für die Drumrolls und ein paar Funktionsvariablen auf dem Heap und schwuppdiwupp sind nur noch ein paar kleine Bytes im RAM übrig.
ROM-technisch habe ich natürlich auch ein wenig mehr verbraucht, weil die 16 Trigger-Sequenzen darin gespeichert werden wollen und natürlich kam noch der Code für das Einleiten der Triggersequenzen hinzu.
Schlussendlich habe ich am Wochenende nun auch noch einen PCB entworfen (siehe github repository) - fehlt noch das Wissen darüber, ob der SDS Clone nun 5 V Trigger braucht und wie lang' die sein müssen und ob sie von 0 V nach 5 V gehen, oder von 5 V nach 0 V.
MIDI Trigger Schematic, PCB und Drumroll auf Oszilloskop
Es dauert noch ein bisschen, bis alle Bauteile für den SDS5 Clone bei mir eintrudeln - einige habe ich noch nichtmal bestellt.
Daher habe ich mich mal rangemacht und einen simplen MIDI-Trigger Converter gebaut.
Um nicht wieder nur komplett das gleiche zu machen, habe ich mich entschlossen, noch einen kleineren Mikrocontroller zu nutzen: den ATtiny2313. Der ATtiny84 fiel raus, weil der keine serielle Schnittstelle bietet. Der ATtiny2313 hat zwar nur 2 kB Flash, aber der sollte auch für kompliziertere Trigger-Konvertierungen reichen (momentan ist er zu 52% gefüllt (1066 bytes) - was hauptsächlich an der komplexeren Ringbufferstruktur und der seriellen Schnittstelle liegt).
Der Konverter ist wirklich sehr simpel und war mit ein paar Zeilen aus dem MIDI-CV Converter auch recht schnell zusammen gestöpselt. Ein paar Fallstricke waren nur wieder die Fusebits und damit zusammenhängende Probleme: Zu falsch gefused (nicht mehr programmierbar) musste der Chip erst wieder gerettet werden - dafür musste ich mich wieder in die Materie reinarbeiten. Dann wieder falsch gefused und diesmal deswegen die CPU mit einem 8mal zu langsamen Takt arbeiten gehabt - das konnte ja nichts werden mit der seriellen Kommunikation mit MIDI. Als das dann nach einigem grübeln und fluchen alles behoben war, funktionierte auch plötzlich der ganze Quelltext so schön, wie ich es mir gedacht hatte und das Delay zwischen einkommender MIDI-Nachricht über die Note (blau im Bild unten) und eigentlichem Trigger (gelb im Bild unten) liegt bei etwa 50 µs, was sehr brauchbar ist. Insgesamt zwischen Tastendruck, Kodierung, schicken, empfangen, verarbeiten der Nachricht und letztlich Triggern des Outputs liegt also knapp mehr als eine Millisekunde. Darüber hinaus ist die Länge des Trigger-Signals, wie auch der MIDI-Channel über Konstanten im Quelltext einfach anpassbar. Da ich bis auf den Attiny2313, auf dem das ganze läuft, und dem Optokoppler für MIDI (sowie den zugehörigen Widerstand- und Diodenkram) nichts weiter brauche, sollte dieses Projekt im Gegensatz zum MIDI-CV Converter auch recht schnell hier zu hause in einen PCB verwandelt und ausprobiert werden können. Das macht allerdings erst dann Sinn, wenn ich weiß, dass 5 V für das Triggern der Module auch ausreicht.
Ist das alles klar und soweit ausprobiert, könnte ich mir noch Erweiterungen für den Quelltext vorstellen, der statt einem simplen Trigger-Signal eine Sequenz solcher Trigger-Signale losschickt und somit Drumrolls und -flames ermöglicht (wie sie beispielsweise der Tanzbär kann).
Der Quelltext ist natürlich wieder auf github gelandet.
Und wieder ein neues Projekt wirft seinen Schatten voraus. Diesmal wird es ein Clone des SDS-V bzw. Simmons Drum Synthesizer sein. Dies war seinerzeit (1981) einer der ersten brauchbaren elektronischen Drum Synthesizer, welcher als Ersatz für ein akustisches Drumset gedacht ist.
Klänge die ich bislang von dem Teil gehört habe, waren zwar alles andere als direkt akustisch, aber für sich genommen schon sehr gut.
Damals gab's das Modul mit der entsprechenden Menge (üblicherweise 5) Drummodule inklusive zugehöriger Pads zum Spielen wie ein gewöhnliches Drumset.
Ich habe mir 6 PCBs bestellt, diese inzwischen auch erhalten und werde sie nun nach und nach bestücken. Die Mehrzahl von Widerständen und Dioden, sowie Sockel für die ICs sind bereits montiert. Es fehlt noch 'ne ganze Menge Teile - unter anderem auch ein paar relativ teure: ein paar CA3080 wurden damals oft verwendet und waren billig zu erstehen... Heutzutage sind die verdammt teuer. Ebenso geht es mit dem SSM3044, welcher für den Filter auf den Drummodulen eingesetzt wird und früher sehr häufig für analoge Filterdesigns verwendet wurde.
Bin schon gespannt wie ein Flitzebogen, wie das Teil klingen wird, wenn es fertig ist.
Der Plan ist dann, das Teil mit einem Mikrokontroller per MIDI zu triggern.