Mehrstimmiger MIDI Interrupter

Programmierung und Hardwaredesign mit AVR, PIC und Konsorten.

Moderatoren: ebastler, SeriousD, MaxZ

Antworten
Nachricht
Autor
Benutzeravatar

Thread-Ersteller
MaxZ
Beiträge: 1008
Registriert: So 28. Jun 2015, 10:20
Schule/Uni/Arbeit: Mechatronik, Karlsruher Institut für Technologie
Wohnort: Luxemburg / Karlsruhe
Hat sich bedankt: 148 Mal
Danksagung erhalten: 105 Mal

Mehrstimmiger MIDI Interrupter

#1 Beitrag von MaxZ »

Nabend,


Edit 22.05.20: Seit dem ersten Release gab es haufenweise Änderungen und Verbesserungen, wie z.B. Polyphonie. Ich überarbeite diesen Post um alle (neuen) Funktionen dokumentiert zu haben. Das meiste ist aktuell, aber manches fehlt noch; dort gibt's dann einen entsprechenden Hinweis.

Ich möchte euch meinen mehrstimmigen MIDI Interrupter vorstellen, den ich auf den grandiosen Namen "Syntherrupter" getauft habe. Die meisten seiner musikalischen Qualitäten gibt's in folgendem Video zu hören:

(Bilder vom Interrupter selbst finden sich weiter unten)

Motivation
Netzpfuscher's UD3 hat haaammer Funktionen, aber befindet sich noch in intensiver Entwicklung, ist etwas dürftig dokumentiert, und würde meinen bereits vorhanden Treiber obsolet machen. Langfristig werd ich recht sicher darauf umsteigen, bis dahin aber wollte ich einen ordentlichen MIDI-Interrupter statt meiner bisherigen Bastlerlösung haben. Da draußen gibt es nicht so viele gescheite MIDI Interrupter. Entweder ist weder Code noch Hardware zugänglich (lonceoceans), oder sie kosten übel viel (Philip Slawinski), oooder sind eher grundlegend bzw haben Einschränkungen, dafür aber durchaus verbreitet (Onetesla). Ich wollte mehr etwas in Richtung des genannten UD3, aber mit jedem normalen DRSSTC Treiber funktioniert und leicht aufzubauen ist.
Jeder der ihn nachbauen will, braucht einen PC und 20€ (oder mehr, wenn er will ;) ).

Wichtigsten Funktionen
  • Bis zu 8 stimmige MIDI Wiedergabe inklusive Effekte wie pitch bend, modulation und unterschiedliche "Instrumente". Ja, der Klang der Teslaspule lässt sich - in Grenzen - beeinflussen.
  • Eingabe via PC oder auf einem resistiven (lässt sich nicht durch EMI aus dem Tritt bringen) Touchdisplay.
  • Steuere bis zu 6 unabhängige Teslaspulen gleichzeitig mit nur einem Interrupter. Jeder Ausgang kann andere Ontimes haben, und ja, jeder der 6 Ausgänge kann seine eigenen 8 Noten haben. Einfach für jede Spule die gewünschten MIDI-Kanäle auswählen.
  • Setze und speichere Grenzwerte für jede Spule. Diese bleiben - wie die anderen Einstellungen ebenfalls - auch nach dem Ausschalten erhalten.
  • Optionale Benutzerkonten, falls die Spule mal ausgeliehen werden soll.
  • Klingt langweilig, aber gehört mMn auch dazu: (fast) stinknormaler Interrupter Modus, in dem Ontime, BPS und Tastgrad gesetzt werden können.

Material, Kosten, Nachbau
Ich stelle den Quellcode und die fertigen Binaries inkl. User Interface komplett zur Verfügung und freue mich, wenn jemand was damit anfangen kann. Kern des ganzen ist das 20€ TI Tiva TM4C1294XL Connected Launchpad.
Das grafische Benutzerinterface läuft wahlweise auf einem Nextion Touchdisplay oder auf dem PC. Die Kommunikation mit dem Tiva Mikrocontroller erfolgt in beiden Fällen über eine serielle Schnittstelle.
  • Nachbau mit Touchdisplay:
    Spoiler:
    Material: Vorgehen:
    • Flashen des Mikrocontrollers: Release notes lesen, dann die zip Datei mit dem fertigen Binaries herunterladen und entpacken. Ebenfalls benötigt wird der Treiber für den Mikrocontroller und das Tool zum Flashen. Auf dem Tiva LaunchPad den "Power Select" Jumper auf ICDI stecken sowie die zwei CAN/UART Jumper auf UART stecken. Tiva LaunchPad über den DEBUG USB Anschluss mit dem PC verbinden. Im Gerätemanager tauchen ein oder mehrere unbekannte "ICDI" Geräte auf. Rechtsklick auf eines davon, dann Treiber aktualisieren, auf dem PC suchen, und in dem vorher entpackten Ordner "stellaris_icdi_drivers" auswählen. Wiederholen für alle anderen unbekannten "ICDI" Geräte. Im Anschluss LM Flash Programmer (ebenfalls aus dem entpackten Ordner) installieren und öffnen. Im Tab "Configuration" unter "Quick Set" das LaunchPad auswählen ("TM4C1294XL LaunchPad"). Im Tab "Program" die .bin Datei aus dem entpackten Ordner auswählen, und unter Options folgendes ankreuzen: "Erase Entire Flash", "Verify After Program", "Reset MCU After Program". Anschließend kann durch Klick auf "Program" unten das Programm auf den Mikrocontroller geladen werden.
    • Flashen des Nextion Touchdisplays: Kompilierte .tft Datei aus dem "Nextion_GUI" Ordner des gits auf eine micro-SD Karte kopieren, diese ins Display stecken, einschalten, warten, ausschalten, Karte entfernen, fertig.
    • Verbindung Nextion-Tiva: Blau auf PA4, Gelb auf PA5, Rot auf +5V, Schwarz auf GND (alle 4 Pins finden sich in dem Pin-Header beim Ethernetanschluss).
    • Das active high, 3,3V, 2mA Ausgangssignal liegt an folgenden Pins an:
      • Ausgang 1: PD0
      • Ausgang 2: PD2
      • Ausgang 3: PM0
      • Ausgang 4: PM2
      • Ausgang 5: PM4
      • Ausgang 6: PM6
  • Nachbau ohne Touchdisplay:
    Spoiler:
    Material: Vorgehen:
    • Flashen des Mikrocontrollers: siehe vorherigen Punkt, Nachbau mit Touchdisplay.
    • Für das Userinterface: Statt auf dem Touchdisplay kann das Nextion-Programm auch in der zugehörigen Entwicklungsumgebung "Nextion Editor" (Download) laufen. HMI Datei aus dem "Nextion_GUI" Ordner des gits herunterladen, mit dem Nextion Editor öffnen, und auf "Debug" klicken. Das Userinterface startet und kann per Maus bedient werden. Unten im Fenster kann nach Umstellen auf "MCU Input" der COM-Port (des Serial-to-USB Konverters) ausgewählt werden. Baudrate auf 57600 einstellen. PA4 und PA5 sind die zugehörigen RX und TX Anschlüsse auf dem Mikrocontroller (Pin-Header beim Ethernetanschluss).
    • Ausgangssignal: siehe vorherigen Punkt, Nachbau mit Touchdisplay.
  • Optional (hab ich verwendet):
In meinem Fall sieht das dann so aus (noch ohne Powerbank). Die Bilder stammen noch von Firmware v1.x. Inzwischen hat sich einiges getan, aber grundsätzlich ist das Design nach wie vor ähnlich. Auch wenn es nicht so aussieht, das Display ist auch draußen noch ausreichend hell.
7416CAEA-B4DD-420A-B0E3-A42D4F522EDE.jpeg
40892489-6C8B-4A9D-AE10-EF8B34512344.jpeg
8FB66A27-FF7D-4C47-9370-DEB8FD0F633E.jpeg

MIDI Setup auf dem Notebook:
Ist hier beschrieben: http://forum.mosfetkiller.de/viewtopic. ... 96#p288096

Funktionen und Benutzung des Syntherrupters
Obwohl ich mir Mühe gegeben habe, das Benutzerinterface selbsterklärend zu gestalten, halte ich eine vollständige Dokumentation trotzdem für wichtig.
  • Start
    Beim Einschalten bleibt der Bildschirm schwarz bis alle Einstellungen aus dem EEPROM geladen wurden. Dies dauert i.d.R. weniger als eine Sekunde. Wenn keine Einstellungen gefunden wurden, wird eine Warnung angezeigt. Dies ist z.B. beim allerersten Einschalten der Fall, aber auch wenn durch ein Firmwareupdate die Daten anders als das vorherige speichern sollte. Bleibt der Syntherrupter an diesem Punkt hängen, deutet das auf ein Problem mit der seriellen Verbindung zwischen Display und Mikrocontroller hin.
  • Optionale Benuterverwaltung
    Es sind drei Benutzerkonten vorhanden mit unterschiedlichen Rechten. Intern werden sie user 0, 1, 2 genannt, wobei letzterer alles darf. Durch Eingabe des entsprechenden Codes kommt man rein.
    • Warum...?
      Dass es einen Benutzer mit vollen Rechten gibt, macht Sinn, aber wozu die zwei anderen?
      Wie einige von euch vielleicht wissen, wurden große Teile meiner DRSSTC gesponsort von der gemeinnützigen Organisation PInS asbl. Diese können sich dafür die Spule jederzeit für Festivals und so ausleihen. Obwohl es ohne Zweifel vertrauenswürdige Menschen sind, erwarte ich nicht, dass sie sich alle Grenzwerte merken, und ich will nicht, dass sie an den Grenzen herumspielen. Daher gibt es die erste Abstufung in den Rechten: Mach alles was die Spule her gibt, aber nicht mehr. Damit bei genannten Festivals auch mal Zuschauer, also komplett Ahnungslose ohne Gefahr ran können, gibt es noch den dritten Benutzer.
    • Funktionen
      Auto login: Da die meisten keine unterschiedlichen Benutzerkonten benötigen und/oder nicht jedes mal ein Passwort eingeben wollen, kann das Passwort eines Benutzers auf "0" gesetzt werden. Dieser wird dann beim Start automatisch angemeldet. Es ist jeder Zeit möglich, den Benutzer zu wechseln.
      Jeder Benutzer hat einen Benutzernamen, ein Passwort, und Grenzwerte für Ontime, BPS, Tastgrad. All diese Werte können im Betrieb geändert werden, die meisten sinnvollerweise nur von einem Nutzer mit höheren Rechten.
      Benutzernamen können 1-16 Zeichen lang sein. Eine recht vollständige Tastatur ist mit an Bord.
      Benutzerpasswörter können ebenfalls 1-16 Zeichen lang sein. Obwohl es möglich ist, ein alphanumerisches Passwort festzulegen, sollte man bedenken, dass auf der Anmeldeseite nur ein Ziffernblock vorhanden ist. Vielleicht also doch lieber beim Zahlencode bleiben. Sollte sich doch ein falsches Zeichen ins Passwort verirren, kann dies noch so lange geändert werden, bis der Benutzer gewechselt, oder der Syntherrupter neu gestartet wird.
    • Rechte und Einschränkungen der einzelnen Benutzer:

      Code: Alles auswählen

      Rechte                            Benutzer 0  Benutzer 1  Benutzer 2
      Firmware Update Modus             Nein        Nein        Ja
      Spulengrenzwerte anzeigen/ändern  Nein        Nein        Ja
      Benutzer 0 Name, Passwort,                                
        Grenzwerte anzeigen             Ja          Ja          Ja
      Benutzer 0 Name, Passwort,                                
        Grenzwerte ändern               Nein        Ja          Ja
      Benutzer 1 Name, Passwort,                                
        Grenzwerte anzeigen             Nein        Ja          Ja
      Benutzer 1 Name, Passwort ändern  Nein        Ja          Ja
      Benutzer 1 Grenzwerte ändern      Nein        Nein        Ja
      Benutzer 0 Name, Passwort,                                
        Grenzwerte anzeigen/ändern      Nein        Nein        Ja*
      * Benutzer 2 Ontime und Tastgrad werden automatisch auf den höchsten Spulengrenzwert gesetzt.
  • Allgemeine Sicherheitsfunktionen
    Um die Emissionen von magischem Rauch im Betrieb zu begrenzen, wurden ein paar Vorsichtsmaßnahmen ergriffen:
    Das Berühren des weißen Hintergrundes führt zum Abschalten aller Ausgänge. Im Fehlerfall muss also nicht erst ausgewählt werden, welche Spule ein Problem hat, und es müssen auch keine Regler verschoben werden. Ein Tipp genügt.
    Die Rückkehr zum Menü hat den gleichen Effekt
    Was auch immer an Einstellungen irgendwo festgelegt wird (MIDI Lautstärke, ADSR Faktoren, Benutzergrenzwerte, ...), die Spulengrenzwerte werden nie überschritten.
  • Benutzergrenzwerte
    Die Benutzergrenzwerte legen in erster Linie den Wertebereich der Schieber auf dem Display fest. Im einfachen Modus können diese nicht überschritten werden, bei der MIDI Wiedergabe allerdings schon. Durch die mehrstimmige Wiedergabe summieren sich die einzelnen Ontimes und Tastgrade auf. ADSR hat ebenfalls einen Einfluss. Mehr dazu unter MIDI Live Modus.
  • Spulengrenzwerte
    Anders als die Benutzergrenzwerte handelt es sich bei den Spulengrenzwerte um "harte" Grenzen, die unter keinen Umständen überschritten werden, egal wie furios und vielstimmig z.B. die MIDI Datei ist. Während Ontime und Tastgrad als Grenzwert selbsterklärend sind, bedarf die Mindest-Offtime vielleicht einer Erklärung. Zur Erzeugung des mehrstimmigen Signals werden die einzelnen Noten "übereinander" gelegt, also verodert. Dabei kann es sein, dass zwei Ontimes sehr nahe aneinander landen. Dabei bleibt dem Primärstrom nicht genügend Zeit um auf 0 abzuschwingen bevor die nächste Ontime kommt. Bedenkt man, dass quasi alle DRSSTC Treiber zu Beginn einer Ontime einmal hart schalten um den Schwingkreis anzustoßen, können solche zu nahen Ontimes also zerstörerisch sein. Die Mindest-Offtime garantiert, dass mindestens die eingestellte Zeit nach jeder Ontime gewartet wird, bevor eine nächste ausgegeben werden kann.
    Für den einfachen Modus ist dieser Wert ohne Belang. Damit die Offtime bei nur einem Ton problematisch wird, müsste der Tastgrad jenseits der 50% liegen.
  • Andere Einstellungen
    Diese Seite ist eine Sammlung aller allgemeinen Einstellungen, wie z.B. Bildschirmhelligkeit, oder Zeit bis zum Standby. Standby bedeutet, dass die Bildschirmbeleuchtung abgeschaltet wird. Der Mikrocontroller arbeitet uneingeschränkt weiter. Standby kann deaktiviert werden, indem 0:00 angegeben wird.
  • Werte übernehmen
    In den Einstellungen werden die angezeigten Werte übernommen, sobald die Seite verlassen wird. Kehr man von den Einstellungen ins Menü zurück, werden geänderte Werte im EEPROM abgespeichert. Daher steht dort auch "Save" statt "Return".
    Im einfachen Modus und im MIDI Live Modus werden die angezeigten Werte standardmäßig beim Loslassen eines Reglers übernommen. Dies kann durch antippen des "On release" Knopfes geändert werden. Zur Auswahl steht noch "Manually", wo die Werte erst durch klicken auf "Apply now" übernommen werden, und "Immediately", wo die Werte bereits während der Benutzer die Regler bewegt angewendet werden.
    Wenn eine Firmware für mehrere Spulen/Ausgänge verwendet wird, gibt es für jeden Ausgang einen Schalter. Beim nächsten Übernehmen werden die aktivierten Ausgänge die neuen Werte erhalten, die anderen verbleiben bei den vorherigen.
  • Einfacher Modus
    Dieser Modus kann verwendet werden um die Spule wie mit einem "normalen" Interrupter zu betreiben, also einstellbare Ontime und BPS. Beim verschieben der Regler wird automatisch geprüft, ob irgend ein Wert über die Benutzergrenzwerte hinaus geht (Spulengrenzwerte werden eh immer und unabhängig von der Benutzereingabe geprüft). Nehmen wir an, die aktuellen Grenzwerte seien Ontime <= 500us, Tastgrad <= 10%, BPS <= 1000Hz. Wenn 1000Hz eingestellt sind, kann der Ontime Schieber nicht weiter als bis 100us geschoben werden, da sonst der Tastgrad zu hoch wäre. Wenn die Ontime auf 400us steht, kann dagegen der BPS Regler nicht über 250Hz gehen, erneut wäre sonst der Tastgrad zu hoch. Und schließlich, bei 100Hz kann der Tastgrad nicht höher als auf 5% gesetzt werden, sonst sind wir über den 500us Ontime.
    Unabhängig davon wie die Werte übernommen werden (siehe oben, Werte übernehmen), werden sie im einfachen Modus geglättet. D.h. es kommt nicht zu einem Sprung wenn neue Einstellungen gesetzt werden, sondern es gibt einen fließen Übergang.
  • MIDI Live Modus
    Im MIDI Live Modus kann der Syntherrupter MIDI Befehle seriell über den USB Debug Port empfangen und verarbeiten. Dies ist definitiv der umfangreichste Modus und bedarf noch weiterer Dokumentation. Bis dahin empfehle ich die folgenden Posts, die GitHub Readme und die Release Notes zu lesen.

Liebe Grüße,
Max

Benutzeravatar

Paul
Admin
Beiträge: 3359
Registriert: So 7. Aug 2005, 14:34
Schule/Uni/Arbeit: HW/SW-Entwickler
Wohnort: Braunschweig
Hat sich bedankt: 386 Mal
Danksagung erhalten: 132 Mal
Kontaktdaten:

Re: MIDI Interrupter

#2 Beitrag von Paul »

Boah, ich bin beeindruckt! Es schaut ganz danach aus, als wäre da viel Arbeit reingeflossen! :awesome:

D.h. du kannst ein beliebiges Midi-File auf das Board hochladen und deine Software parst das selber und generiert die entsprechenden Hüllkurven? Alle Achtung! :)
“With great power come great heat sinks.”

Benutzeravatar

Thread-Ersteller
MaxZ
Beiträge: 1008
Registriert: So 28. Jun 2015, 10:20
Schule/Uni/Arbeit: Mechatronik, Karlsruher Institut für Technologie
Wohnort: Luxemburg / Karlsruhe
Hat sich bedankt: 148 Mal
Danksagung erhalten: 105 Mal

Re: MIDI Interrupter

#3 Beitrag von MaxZ »

Danke Paul :hehe:

Mh aktuell ist noch nix mit hochladen oder so, sondern die Daten werden live aus dem Synthesizer (oder irgend nem beliebigen anderen MIDI-Programm am PC) übermittelt. Du könntest z.B. auch ein Keyboard direkt dran anschließen und der Interrupter würde spielen was auch immer du in die Tasten haust ;)
Da MIDI Dateien aber eigentlich genau das gleiche wie serielle MIDI-Befehle sind (nämlich Befehl plus Zeitstempel), ist es nicht schwer den bestehenden Code so weiter zu entwickeln, dass er die Daten einer MIDI-Datei verarbeiten könnte. Das größere Übel ist eigentlich das Dateimanagement. also eine FAT32 Bibliothek finden und benutzen lernen :D

Die Hüllkurven sind aktuell noch fix einprogrammiert. Um diese veränderlich zu gestalten, müsste (bzw möchte) ich den EEPROM nutzen. Und dafür muss ich mich erst mal mit diesem auseinander setzen...

Den Ablauf der Tonerzeugung in der MIDI-Klasse hab ich mal versucht grob zu skizzieren... Ist hoffentlich übersichtlicher als Text und Quellcode!


Liebe Grüße,
Max
Dateianhänge
IMG_1559.jpg

Benutzeravatar

Paul
Admin
Beiträge: 3359
Registriert: So 7. Aug 2005, 14:34
Schule/Uni/Arbeit: HW/SW-Entwickler
Wohnort: Braunschweig
Hat sich bedankt: 386 Mal
Danksagung erhalten: 132 Mal
Kontaktdaten:

Re: MIDI Interrupter

#4 Beitrag von Paul »

Sehr interessant, das mal so zu sehen! :)
Freu mich schon, das Teil dann später mal auf ner DRSSTC zu hören! :trollface:
“With great power come great heat sinks.”

Benutzeravatar

Phoenix6478
Beiträge: 491
Registriert: Do 10. Sep 2015, 11:38
Spezialgebiet: DRSSTC, Leistungselektronik
Schule/Uni/Arbeit: FH
Wohnort: Oberösterreich
Hat sich bedankt: 209 Mal
Danksagung erhalten: 223 Mal
Kontaktdaten:

Re: MIDI Interrupter

#5 Beitrag von Phoenix6478 »

Hallo Max

Wow, Dein neuer Midi Interrupter ist echt beeindruckend :headbang: Hätte mir gar nicht gedacht, das man da noch so viele Interessante Funktionen hinzufügen kann.

Der Test mit dem Piezo Lautsprecher klingt sehr gut. Ich bin gespannt, welche Ergebnisse der Interrupter an der DRSSTC bringen wird.

Grüße
Phoenix

Benutzeravatar

Thread-Ersteller
MaxZ
Beiträge: 1008
Registriert: So 28. Jun 2015, 10:20
Schule/Uni/Arbeit: Mechatronik, Karlsruher Institut für Technologie
Wohnort: Luxemburg / Karlsruhe
Hat sich bedankt: 148 Mal
Danksagung erhalten: 105 Mal

Re: MIDI Interrupter

#6 Beitrag von MaxZ »

Danke Phoenix!


Ja, ich freu mich auch schon! :)

Aktuell kämpfe ich noch mit einem kritischen Bug. Bei Frequenzen unter ca. 20Hz kommt es zu Glitches am Ausgang und dieser geht für ne volle Periode (also 10ms, 20ms) auf high. Das Problem ist im TI Forum bereits von einem anderen exakt beschrieben worden. Der Timer ist auch exakt gleich konfiguriert (bis auf die Tatsache, dass ich den 16MHz PIOSC nutze, und damit die Frequenzen bei denen das Problem auftritt, tiefer sind). Leider wurde dort keine Lösung gefunden... Vielleicht hat ja wieder einer von euch hier den richtigen Riecher.


Liebe Grüße,
Max

Benutzeravatar

Thread-Ersteller
MaxZ
Beiträge: 1008
Registriert: So 28. Jun 2015, 10:20
Schule/Uni/Arbeit: Mechatronik, Karlsruher Institut für Technologie
Wohnort: Luxemburg / Karlsruhe
Hat sich bedankt: 148 Mal
Danksagung erhalten: 105 Mal

Re: MIDI Interrupter

#7 Beitrag von MaxZ »

So. Nach nem ganzen Tag durchprobieren aller möglichen Kombinationen und Umsetzungen bin ich schließlich auf einer Lösung gelandet, die scheinbar fehlerfrei ist. Damit wär ich am Punkt wo ich das Ding ohne Bedenken an meine DRSSTC anschließen würde.

Fehlt noch das Gehäuse; das nehm ich als nächstes in Angriff. Edit: Done. Fotos siehe oben. Vielleicht häng ich auch noch mal mein Klavier ran um ein wenig mit den ADSR Kurven herumzuspielen. Gefällt mir bisher zwar schon ganz gut, aber gibt sicherlich noch Luft nach oben.


Liebe Grüße,
Max

Benutzeravatar

Thread-Ersteller
MaxZ
Beiträge: 1008
Registriert: So 28. Jun 2015, 10:20
Schule/Uni/Arbeit: Mechatronik, Karlsruher Institut für Technologie
Wohnort: Luxemburg / Karlsruhe
Hat sich bedankt: 148 Mal
Danksagung erhalten: 105 Mal

Re: MIDI Interrupter

#8 Beitrag von MaxZ »

Hab das Teil etwas ausgiebiger mit statischer Last ausprobiert; kann mich nicht beschweren. Richtiger Test mit Blitzen fällt bis auf weiteres flach, da sich wirklich gar kein Testplatz während des Lockdowns finden lässt.
Pitch Bend und Modulation kommen in folgendem Video wirklich gut zur Geltung. ADSR trägt auch seinen Teil zum „guten“ Klang bei, ist aber weniger auffällig.




Liebe Grüße,
Max

Benutzeravatar

Thread-Ersteller
MaxZ
Beiträge: 1008
Registriert: So 28. Jun 2015, 10:20
Schule/Uni/Arbeit: Mechatronik, Karlsruher Institut für Technologie
Wohnort: Luxemburg / Karlsruhe
Hat sich bedankt: 148 Mal
Danksagung erhalten: 105 Mal

Re: MIDI Interrupter

#9 Beitrag von MaxZ »

Inzwischen hat sich einiges getan. Im highvoltageforum kam die Idee auf, mehrere Spulen mit dem gleichen Interrupter anzusteuern. Gefiel mir, also hab ich das Benutzerinterface neu gemacht. Diesmal in Englisch, aber die Sprache lässt sich verhältnismäßig leicht ändern. Ebenfalls mit dabei ist jetzt der EEPROM, so dass sich allerlei Zeugs einstellen und speichern lässt. Die wichtigsten Funktionen waren damit fertig, und mit Netzpfuschers Unterstützung hab ich mich nochmals an Polyphonie gewagt - erfolgreich! Es gibt zwar noch einige Probleme, aber der Ansatz funktioniert bereits grundsätzlich mit 4 Stimmen für 4 Ausgänge - 16 Noten + ADSR insgesamt also :headbang:
Nachfolgend alles an Medien was ich zu meiner Arbeit habe.

Video der ersten beta mit mehreren Spulenausgängen. Im Video ist die Zahl auf drei festgelegt, daher werden auch nur die Knöpfe für 3 angezeigt. Es sind bis zu 6 möglich. Wer mehr als 6 TCs hat, kann sich auch nen weiteren Interrupter bauen ;)


Einige Screenshots der fertigen Version mit EEPROM:
Für jede Spule können Limits angelegt werden, die der Interrupter unter keinen Umständen überschreitet - egal was sonst wo konfiguriert ist.
AEA27E3B-1760-452F-87F1-1461F7DC1D6E.png
AEA27E3B-1760-452F-87F1-1461F7DC1D6E.png (26.39 KiB) 412 mal betrachtet
Für die 3 vorgesehenen Benutzer lassen sich ebenfalls Grenzen setzen. Benutzer 2 kriegt automatisch „volle Rechte“, also das Maximum das in den Spuleneinstellungen eingetragen ist. Wer kein Usermanagement braucht, kann einfach das Passwort von Benutzer 2 auf „0“ setzen, dann wird er automatisch angemeldet.
F6C6B4D2-8FF1-4301-9F24-F7189C29208F.png
F6C6B4D2-8FF1-4301-9F24-F7189C29208F.png (18.57 KiB) 412 mal betrachtet
Name und Passwort lassen sich ändern
F1571BD2-31D4-443E-AF78-4672F1BF4A54.png
F1571BD2-31D4-443E-AF78-4672F1BF4A54.png (24.88 KiB) 412 mal betrachtet
Genau wie die Helligkeit oder Zeit bis zum Standby.
9CEB6A40-1EAE-4A93-8F99-67E9AA8EB001.png
9CEB6A40-1EAE-4A93-8F99-67E9AA8EB001.png (16.62 KiB) 412 mal betrachtet
Und schließlich: die erste Demo von Polyphonie ;)



Liebe Grüße,
Max

Benutzeravatar

Thread-Ersteller
MaxZ
Beiträge: 1008
Registriert: So 28. Jun 2015, 10:20
Schule/Uni/Arbeit: Mechatronik, Karlsruher Institut für Technologie
Wohnort: Luxemburg / Karlsruhe
Hat sich bedankt: 148 Mal
Danksagung erhalten: 105 Mal

Re: MIDI Interrupter

#10 Beitrag von MaxZ »

Moin zusammen,

Arbeit am Polyphonie Code ist soweit abgeschlossen. Das Ding ist jetzt fähig 6-stimmig auf bis zu 6 Spulen zu spielen - insgesamt also 36 Noten gleichzeitig! :headbang: Natürlich mit Effekten wie ADSR, Pitch bend, etc. Dabei beachtet der Interrupter eine einstellbare Mindest-Offtime nach jeder Ontime, um zu verhindern, dass der Treiber zu schalten beginnt, wenn noch Primärstrom von der letzten Ontime fließt. Außerdem sorgt er dafür, dass der Tastgrad aller Noten zusammen nicht das eingestellte Maximum überschreitet. Beide Einstellungen lassen sich individuell für jede einzelne der bis zu 6 Spulen festlegen, so dass auch eine Mini-DRSSTC mit einem 2-meter Koloss problemlos zusammen betrieben werden können.

Mehr als 6 Stimmen wären problemlos möglich, allerdings hört man da keine einzelnen Noten mehr raus; dafür sind es einfach zu viele gleichzeitig.

Release und Installationsanleitung (zusätzlich zu den Hinweisen im startbeitrag) gibt es hier: https://github.com/MMMZZZZ/Syntherrupter/

Werde die Tage versuchen ein Video zu erstellen, aber die Tonqualiät hat sich seit dem letzten Post nicht geändert. Nur werden jetzt zuverlässig alle Noten gespielt ;)


Liebe Grüße,
Max

Benutzeravatar

Thread-Ersteller
MaxZ
Beiträge: 1008
Registriert: So 28. Jun 2015, 10:20
Schule/Uni/Arbeit: Mechatronik, Karlsruher Institut für Technologie
Wohnort: Luxemburg / Karlsruhe
Hat sich bedankt: 148 Mal
Danksagung erhalten: 105 Mal

Re: MIDI Interrupter

#11 Beitrag von MaxZ »

6-fach Post. So geht ein Mod mit gutem Beispiel voran :D

Aber der Post ist berechtigt, versprochen. Ich hab aufgrund eines vermeintlichen Fehlers einige Verbesserungen vorgenommen. Resultat: deutlich sauberer Ton und schnellere Datenverarbeitung, was nun 8 Noten pro Ausgang möglich. Ich bin sehr zufrieden damit, wie die Kiste jetzt läuft und somit vorläufig am Ende der Entwicklung. Es gibt noch ein paar Ideen, aber ehrlich gesagt, keine motiviert mich gerade ausreichend um wieder am Code zu arbeiten :D

Das aktuelle Release wurde über eine Stunde lang ausgiebig mit meiner DRSSTC getestet, ohne eine Note zu verschlucken oder sonst eine Auffälligkeit. Leider immer noch nur mit statischer Last...

Demo von Queen - I Want It All. MIDI Datei wurde nicht angepasst; kommt 1:1 so aus dem Internet. Schnelle Noten, Polyphonie, Pitch bend, ADSR, alles drin. Ich musste bei rund 1:00 Minuten den Tastgrad der tiefen Noten runter setzen um meine armen Sicherungen zu schonen :mrgreen:


Und dann wär da noch Gimme Gimme Gimme von Abba. Nicht so beeindruckend wie das vorherige Video aber a) habe ich einen Ohrwurm davon, und b) mag ich wie die Staccato Noten mit ADSR klingen.



Liebe Grüße,
Max

Benutzeravatar

Paul
Admin
Beiträge: 3359
Registriert: So 7. Aug 2005, 14:34
Schule/Uni/Arbeit: HW/SW-Entwickler
Wohnort: Braunschweig
Hat sich bedankt: 386 Mal
Danksagung erhalten: 132 Mal
Kontaktdaten:

Re: MIDI Interrupter

#12 Beitrag von Paul »

Einfach nur hammermäßig! :awesome: Der Aufbau sieht echt schnieke aus, und der Interrupter tut anscheinend auch, was er soll! :D Wir wollen Live-Videos! ...ist schon eine Demonstration geplant?
“With great power come great heat sinks.”

Benutzeravatar

stoppi
Beiträge: 1378
Registriert: Mo 29. Mär 2010, 21:39
Danksagung erhalten: 258 Mal
Kontaktdaten:

Re: MIDI Interrupter

#13 Beitrag von stoppi »

Ist wirklich hervorragend geworden, gratuliere MaxZ. Dagegen ist mein einfacher Arduino-MIDI-Interrupter richtiggehend kümmerlich...
Dateianhänge
MIDI_interrupter_21.jpg
MIDI_interrupter_21.jpg (85.92 KiB) 250 mal betrachtet

Benutzeravatar

Thread-Ersteller
MaxZ
Beiträge: 1008
Registriert: So 28. Jun 2015, 10:20
Schule/Uni/Arbeit: Mechatronik, Karlsruher Institut für Technologie
Wohnort: Luxemburg / Karlsruhe
Hat sich bedankt: 148 Mal
Danksagung erhalten: 105 Mal

Re: MIDI Interrupter

#14 Beitrag von MaxZ »

Moin zusammen,


@Paul: Danke! Leider nein... Vor der Pandemie hatte ich die Zusage eines Gymnasiums mit ausreichend großen Räumen, bis auf weiteres haben die jedoch den Zutritt für alle externe untersagt. Kann also noch Wochen dauern :| Ich hab schon so ziemlich jeden dem ich innerhalb des letzten Jahres über den Weg gelaufen bin gefragt, ob er keinen Platz kennt, hat sich aber bis aufs Gymnasium nix ergeben.
Das führt wahrscheinlich zur absurden Situation dass ich nicht der erste sein werde, der mit dem Ding Blitze erzeugt; im highvoltageforum hat bereits einer die Teile zum Nachbau bestellt.

@stoppi: Auch dir danke für die Blumen! :) Im Gegensatz zu meinem langjährigen Begleiter hast du immerhin Lötverbindungen statt Wackelkontakte :trollface:
IMG_6422.jpeg
Man beachte die Heftklammer-Steckbrücken. Und die Hälft der fliegenden Verdrahtung fehlt, da Display und LWL Modul im neuen Interrupter stecken - von dem Quadratmeter Alufolie der für Störsicherheit benötigt wurde mal ganz zu schweigen...

Notiz an mich: Lang und viel testen heißt nicht dass alles gestestet ist. Mir sind heute beim Rumspielen einige kleinere Fehler aufgefallen, die behoben wurden. Details und Download wie üblich auf GitHub: https://github.com/MMMZZZZ/Syntherrupter/releases


Liebe Grüße,
Max

Antworten