Syntherrupter - Umfangreicher, Mehrstimmiger Interrupter

Programmierung und Hardwaredesign mit Arduino, AVR, PIC und Konsorten.

Moderatoren: MaxZ, ebastler, SeriousD

Benutzeravatar

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

Syntherrupter - Umfangreicher, Mehrstimmiger Interrupter

Beitrag von MaxZ »

Nabend,


Edit 15.10.20: Einen Thread aktuell zu halten ist Aufwand genug; daher verweise ich mal an das aktivere Thema im HV Forum: https://highvoltageforum.net/index.php?topic=1020.0 Hier gibt's aber nach wie vor ne kurze Vorstellung, sowie den Originalpost mit mehr, aber teils veralteten Details.

Hier möchte ich euch meine eierlegende Wollmilchsau von Interrupter vorstellen. Das wichtigste zuerst: Bilder ;)
Syntherrupter_Max_Back.jpeg
Syntherrupter_Max_Top.jpeg
Syntherrupter_Max_Internal.jpeg
Was kann das gute Stück? Nun, da wäre zunächst mal das offensichtliche: es hat einen Dark Mode. Sehr wichtig für professionelles Aussehen :mrgreen: Scherz beiseite, hier die wichtigsten Daten:
  • Open Source: https://github.com/MMMZZZZ/Syntherrupter/ Release runterladen, flashen, los. Ein Wiki mit allen wichtigen Infos ist in Arbeit. Derzeit hier zu finden: https://github.com/MMMZZZZ/Syntherrupte ... ation/Wiki
  • Bis zu 6 Ausgänge; 6 unabhängige Teslaspulen können individuell angesteuert werden.
  • Auf jedem Ausgang sind >10 Noten gleichzeitig möglich; das sollte für die meisten MIDIs ausreichen ;)
  • Stereo-Effekte. Jeder Spule kann eine Stereo-Position zugeteilt werden. Nutzt die MIDI Datei den Stereo Befehl, so spielen die einzelnen Stimmen je nach Position auf anderen Spulen - oder wechseln hin und her. Wem das noch zu langweilig ist, kann die Noten auch frequenzabhängig mappen lassen. Tiefe Noten links, hohe Noten rechts z.B. Damit sind zahllose Effekte möglich.
  • Lichtschwerter. Es können bis zu 4 Lichtschwerter mit Syntherrupter verbunden werden (und beliebigen Spulen zugeteilt werden). Damit kann die Imperial March MIDI durch passende Lichtschwert-Effekte ergänzt werden. Die Idee hab ich von Netzpfuscher.
  • Sicherheit geht vor: Für jeden Ausgang lässt sich eine Grenze für Ontime und Tastgrad festlegen, die jederzeit eingehalten wird. Egal wie furios die MIDI ist.
  • Unabhängig. Anders als z.B. beim UD3 ist kein Computer notwendig für den Betrieb. MIDI Daten können nicht nur über USB, sondern auch über eine klassische MIDI Schnittstelle zugespielt werden.
Leider konnte ich selbst das gute Stück noch immer nicht an einer realen Spule testen. Daher sind meine Videos nur mit LEDs oder statischer Last.
Hier gibt's ca. 4 Stimmen gleichzeitig und einige Effekte zu hören. Wer keine 4min hat, kann direkt bei 0:42 und 2:23 reinhören.


Hatte ich was von Stereo Effekten gesagt? Hier gibt's die Mapping Funktion mit 6 Ausgängen zu sehen. Im Nachhinein vielleicht etwas unübersichtlich, aber inzwischen gibt's Funktionen um dem entgegen zu wirken ;) Dürfte trotzdem nen guten Eindruck geben was so machbar ist.


Während ich noch LEDs beim Blinken zuschaue, haben andere bereits erfolgreich den Syntherrupter nachgebaut. Dieses Video stammt vom HVF Benutzer AstRii:

Sein Nachbau kann sich btw sehen lassen! Siehe hier: https://highvoltageforum.net/index.php?topic=1267.0


Musikalische Grüße,
Max

_____________________

Originalpost:
Spoiler:
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: 3596
Registriert: So 7. Aug 2005, 14:34
Schule/Uni/Arbeit: HW/SW-Entwickler
Wohnort: Braunschweig
Hat sich bedankt: 638 Mal
Danksagung erhalten: 210 Mal
Kontaktdaten:

Re: MIDI Interrupter

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.”
paulwilhelm.de -- mosfetkiller.de
Benutzeravatar

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

Re: MIDI Interrupter

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: 3596
Registriert: So 7. Aug 2005, 14:34
Schule/Uni/Arbeit: HW/SW-Entwickler
Wohnort: Braunschweig
Hat sich bedankt: 638 Mal
Danksagung erhalten: 210 Mal
Kontaktdaten:

Re: MIDI Interrupter

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.”
paulwilhelm.de -- mosfetkiller.de
Benutzeravatar

Phoenix6478
Beiträge: 587
Registriert: Do 10. Sep 2015, 11:38
Spezialgebiet: (QCW)DRSSTC, Leistungselektronik
Hat sich bedankt: 261 Mal
Danksagung erhalten: 307 Mal
Kontaktdaten:

Re: MIDI Interrupter

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: 1168
Registriert: So 28. Jun 2015, 10:20
Schule/Uni/Arbeit: Mechatronik, Karlsruher Institut für Technologie
Wohnort: Luxemburg / Karlsruhe
Hat sich bedankt: 261 Mal
Danksagung erhalten: 162 Mal
Kontaktdaten:

Re: MIDI Interrupter

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: 1168
Registriert: So 28. Jun 2015, 10:20
Schule/Uni/Arbeit: Mechatronik, Karlsruher Institut für Technologie
Wohnort: Luxemburg / Karlsruhe
Hat sich bedankt: 261 Mal
Danksagung erhalten: 162 Mal
Kontaktdaten:

Re: MIDI Interrupter

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: 1168
Registriert: So 28. Jun 2015, 10:20
Schule/Uni/Arbeit: Mechatronik, Karlsruher Institut für Technologie
Wohnort: Luxemburg / Karlsruhe
Hat sich bedankt: 261 Mal
Danksagung erhalten: 162 Mal
Kontaktdaten:

Re: MIDI Interrupter

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: 1168
Registriert: So 28. Jun 2015, 10:20
Schule/Uni/Arbeit: Mechatronik, Karlsruher Institut für Technologie
Wohnort: Luxemburg / Karlsruhe
Hat sich bedankt: 261 Mal
Danksagung erhalten: 162 Mal
Kontaktdaten:

Re: MIDI Interrupter

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) 6940 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) 6940 mal betrachtet
Name und Passwort lassen sich ändern
F1571BD2-31D4-443E-AF78-4672F1BF4A54.png
F1571BD2-31D4-443E-AF78-4672F1BF4A54.png (24.88 KiB) 6940 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) 6940 mal betrachtet
Und schließlich: die erste Demo von Polyphonie ;)



Liebe Grüße,
Max
Benutzeravatar

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

Re: MIDI Interrupter

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: 1168
Registriert: So 28. Jun 2015, 10:20
Schule/Uni/Arbeit: Mechatronik, Karlsruher Institut für Technologie
Wohnort: Luxemburg / Karlsruhe
Hat sich bedankt: 261 Mal
Danksagung erhalten: 162 Mal
Kontaktdaten:

Re: MIDI Interrupter

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: 3596
Registriert: So 7. Aug 2005, 14:34
Schule/Uni/Arbeit: HW/SW-Entwickler
Wohnort: Braunschweig
Hat sich bedankt: 638 Mal
Danksagung erhalten: 210 Mal
Kontaktdaten:

Re: MIDI Interrupter

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.”
paulwilhelm.de -- mosfetkiller.de
Benutzeravatar

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

Re: MIDI Interrupter

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) 6778 mal betrachtet
Benutzeravatar

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

Re: MIDI Interrupter

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
Benutzeravatar

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

Re: Mehrstimmiger MIDI Interrupter

Beitrag von MaxZ »

Moin,


Hab wieder etwas weiter gewerkelt. Das Ding unterstützt jetzt Stereo. Jeder Ausgang kann zwischen "links" und "rechts" platziert werden und spielt nahe Noten lauter als entfernte Noten (Empfindlichkeit einstellbar). Da längst nicht jede MIDI Datei "interessante" Stereo-Informationen hat, habe ich die Möglichkeit hinzugefügt, einen Notenbereich zu einem Stereobereich zu mappen. Z.B. kann man festlegen, dass alle Noten zwischen 70 und 82 auf die linke Hälfte gemapped werden. Diese Einstellung kann individuell für jeden MIDI-Kanal via NRPs vorgenommen werden.

Nebenbei habe ich nochmal aufgeräumt, so dass der Interrupter jetzt locker 16 Noten pro Ausgang spielen könnte. Da das für viele Fälle zu viele sind, kann der Nutzer selbst festlegen, wo das Limit liegen soll.

Am besten sichtbar sind die Stereo-Spielereien wenn so viele Ausgänge wie möglich aktiv sind (also 6). Aber selbst mit nur 2 Ausgängen lässt sich schon so einiges anstellen. Das ganze gefällt mir so gut, dass ich wohl irgendwann 6 kleinere SSTC basteln werde... :mrgreen:

"Normaler" Stereo Betrieb gibt's hier zu sehen. Die Widerstände auf dem Steckbrett verbinden die einzelnen Ausgänge mit dem Line in meines Rechners, so dass ich in Stereo aufnehmen kann. Achtet darauf, wie die Melodie zwischen Mitte, links und rechts wechselt.


Und hier noch die Demo der Mapping Funktion mit Thunderstruck.


Edit: Nochmal Thunderstruck. Nur diesmal mit Omni Modus



Viele Grüße,
Max
Antworten