BASSBUDE

Tag: MIDI-Trigger

SDIY Zusammenfassung 2016 - Backlog wächst

Ein Problem, dass offenbar viele Bastler haben, ist ein Haufen unfertiger Projekte, der sich auftürmt, weil man immer wieder neues anfangen will, Sachen bestellt, weil man fürchtet, dass sie dann später (wenn man dafür Zeit hat) dann nicht mehr da sind, und einiges mehr.
Auch ich lerne dieses Problem nun mehr und mehr kennen: im Letzten Jahr habe ich gegen Ende des Jahres "nur" den CS80 Shruti-Filter, ein paar Yusynth Module und den crOwBX gehabt. In 2016 haben sich dazu gesellt: der Minimoog Clone, der Jasper EDP Wasp clone, ein Polivox-Filter, ein Juno 106 Chorus Clone, zwei Clap-Synthesizer und zwei abgewandelte Thomas Henry Bass++ Module.
Im Wesentlichen sind 2016 zwei Projekte beendet worden: der SDSV Clone und der Syncussion SY-1 Clone - immerhin. Nicht zu vergessen auch, dass ich mein erstes selbst designetes nützliches PCB in Aktion gebracht habe: den MIDI-Trigger Converter. Mein MIDI-CV-Converter braucht derweil noch etwas Aufmerksamkeit, bevor man ihn als nützlich bezeichnen kann. Meinem ARP-Sequencer fehlt weiterhin ein Gehäuse (das Holz ist schon längst da), aber dafür habe ich eine komplette Küche von Grund auf selbst gebaut ;-) .
Der Vorsatz für 2017 ist demzufolge das Beenden diverser Projekte: crOwBX und Minimoog Clone, sowie der Jasper EDP Wasp Clone sollten fertig werden. Vermutlich in umgekehrter Reihenfolge.
Auch die diversen Drum-Module müssten zu schaffen sein (hier fehlt vor allem noch ein 19 Zoll Frontpanel -gehäuse.
Der Filter und der Chorus stellt mich vor eine Entscheidung, die ich eigentlich nicht fällen möchte: Mein Modularsystem ist momentan ein reines Yusynth-Modularsystem und eigentlich wollte ich das nicht aufweichen, sondern wenn dann noch ein "diverses"-Kabinett zusätzlich bauen. Ich fürchte allerdings, dass das noch eine ganze Weile auf sich warten lassen wird. Insofern werden die Module vermutlich doch in das schon fertige Kabinett wandern. Auch hier fehlen allerdings Frontpanele.

crOwBX Voice Cards Minimoog Clone 01 Minimoog Clone 02 Jasper EDP Wasp Clone Juno 106 Chorus Polivox Filter Shruti CS80 Filter Drummodule HC-2 ClapSnap und Bass++ MIDI-CV-Converter für crOwBX
Backlog wächst

Erste professionell gefertigte selbst designte PCBs

Ich habe mich entschlossen, mal einen professionellen PCB-Service auszuprobieren - einfach um zu wissen, wie das geht, welchen Aufwand das mit sich bringt und ob ich dazu überhaupt fähig bin :-)
Nach einer intensiveren Suche im Internet fand ich diverse Anbieter aus allen möglichen Ländern und hier und da die Betonung, dass deutsche Fertigung die bessere Qualität gegenüber chinesischer Fertigung habe und ja auch eigentlich gar nicht mehr soooo viel teurer wäre.
Nach meinen Recherchen ist das relativ optimistisch formuliert und so habe ich keinen deutschen Anbieter gefunden, der mir auch nur ein halbwegs ähnlich gutes Angebot machen konnte, wie ich beim PCB-Service der Wahl (smart-prototyping - ein tip von einem muffwiggler-forumsmitglied) dann fand: 10 PCBs mit 10x10cm Maximalgröße für 11,90 $ oder 9,90 $ für 10 Stück 5x5cm Maximalgröße. Bei deutschen Anbietern kostet quasi jeweils 1 PCB den Preis von dort 10 Stück.
Also habe ich meinen MIDI-Trigger Converter soweit gequetscht und geschoben, dass er in die 5 cm rein passte und den MIDI-CV Converter soweit angepasst, dass nun auch die LM324er Chips direkt auf dem PCB verwendet werden können und nicht über einen kruden Adapter angeschlossen werden müssen ;-) .
Diese Designs habe ich dann aus Eagle heraus in Gerber-Files umgewandelt (gar nicht so trivial, aber smart-prototyping bietet hier alle nötigen setting-files für CAD-Programme (cam-jobs und dru-file mit den Designrules) an), mit gerbv geprüft und anschließend dort hochgeladen und bestellt.
Die Fertigung hat wenige Tage gedauert und der Versand lief mit DHL auch eigentlich sehr schnell. Was ich allerdings nicht bedacht hatte war, dass die Zollgebühren nicht wie sonst bei ausländischen Bestellungen oft schon vom Versender übernommen werden, sondern die DHL wollte das bei mir an der Wohnungstür abwickeln. Soweit so gut - die 19% des Warenwertes (irgendwas um 6 € herum) sollten kein Problem darstellen. Im Moment waren wir bei etwa 20 € PCBs, 20 € Versand und erwarteten 6 € Zoll. Insgesamt also unter 50 € für 20 PCBs. Leider wollte der DHL-Bote dann an der Tür erstens das Geld in bar haben und zweitens plötzlich statt den erwarteten 6 € einfach mal nochmal etwa 20 €. Wie ich dann später an der Hotline herausfand liegt das daran, dass die DHL eine sog. Bereitstellungsgebühr für die Zahlungsdienstleistung erhebt von 2 % des Warenwertes, mindestens aber irgendwas um die 14 €. Tolle Wolle - Danke DHL! So viel hatte ich in dem Moment nicht zur Hand und so musste ich mit dem Boten ausmachen, dass er es mir am nächsten Tag nochmal zustellt. Tolles Gefühl, wenn man so sehnsüchtig auf die ersten eigenen PCBs wartet und sie dann schon quasi zum greifen nah sind und man aber noch einen Tag warten muss. Großartig war auch noch die Ausrede, warum man nicht elektronisch zahlen konnte: Die Lesegeräte seien einfach zu oft ausgefallen, kaputt oder hätten keinen Empfang, da hat man sie einfach abgeschafft und Barzahlung zur Pflicht erhoben. Prima!
Naja - nun sind die PCBs ja da und sahen alle wunderbar aus! Klar sind es Erstlingswerke und daher hier und da noch nicht ganz so schick, wie es ginge. Beispielsweise ist der Bestückungsdruck von den Positionen her von mir etwas schlampig gearbeitet worden und ein paar Kondensatoren auf dem MIDI-Trigger Converter haben einen viel zu großen Footprint, aber rein funktional sollte alles so wie es ist funktionieren.
Einen MIDI-Trigger Converter (habe ihn MIDI Proc genannt, da er je nach Firmware natürlich auch völlig andere Dinge machen könnte - bspw. ein Clock-Divider für MIDI-Clock zur Verfügung stellen) habe ich dann auch gleich zusammen gelötet und bin mit dem Ergebnis sehr zufrieden! Die PCBs lassen sich toll löten und einen Smoketest hat das ganze Modul auch schon überstanden.

20 PCBs MIDI-Trigger, MIDI-CV MIDI-Trigger Converter professionelles PCB MIDI-Trigger Converter professionelles PCB MIDI-Trigger Converter professionelles PCB MIDI-CV Converter professionelles PCB MIDI-CV Converter professionelles PCB
Erste selbst designte PCBs professionell hergestellt

SDS-V MIDI Trigger

Um das SDS-V Projekt weiter voran zu bringen habe ich nun auch endlich den MIDI-Trigger-Converter geätzt und zusammen gelötet.
Nachdem der Lack getrocknet war, habe ich mich auch gleich noch dran gemacht und ihn mal an das Kabelwirrwarr meines Prototypen rangekabelt (Spannungsversorgung kam provisorisch vom Yusynth Modular und lag quer durch den Raum, Laptop stand auf "irgendwas" usw.) und vorher natürlich auf Kurzschlüsse getestet - nichts. Eingeschaltet, MIOS Studio gestartet und auf Kanal 5 ein paar Noten gespielt - siehe da, es funktioniert. Prima!
Dann habe ich auch gleich meine verschiedenen Velocity-gesteuerten Trigger-Sequenzen ausprobiert mit dem Ergebnis, dass hier noch etwas Verbesserungsbedarf besteht. Aber es ist schon ein tolles Gefühl, wenn die Dinge zusammen kommen und funktionieren, wie man sich das vorstellt. Nicht nur wenn man "Fremdprojekte" zusammenbaut, sondern viel mehr natürlich noch, wenn es die eigenen Designs sind (Trigger-Converter), die auch gleich die Dinge tun, die man von ihnen verlangt.
Nun kann ich also nochmal alle Controls durchgehen und gucken, welche ich womöglich doch nicht brauche und dann wird das Frontpanel finalisiert und bestellt.

SDS-V Trigger Platine SDS-V Trigger Platine von unten
SDS-V Trigger Platine
SDS-V Testaufbau SDS-V Testaufbau Closeup SDS-V Testaufbau Closeup
SDS-V Testaufbau

SDS-V MIDI Trigger Drumrolls und PCB

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 Flame Beispiel MIDI Trigger Schematics MIDI Trigger PCB
MIDI Trigger Schematic, PCB und Drumroll auf Oszilloskop

SDS-V MIDI Trigger Vorbereitung

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.

MIDI Trigger Testaufbau MIDI Trigger Delay Oszilloskop
MIDI Trigger Testaufbau mit Osziloskop