- LiTime Speicher und Akkus         
Ergebnis 1 bis 8 von 8

Thema: MiDi Clock Signale aus elektronischem Drumkit generieren

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.187

    MiDi Clock Signale aus elektronischem Drumkit generieren

    Anzeige

    Praxistest und DIY Projekte
    Hallo Forumsmitglieder.
    Ich weiß, das Thema hat nicht unbedingt was mit Robotern zu tun, aber eventuell ist ja der Eine oder Andere Musiker hier.

    Ich möchte Aus einem elektonischen Schlagzeug mit MiDi Ausgang aus dem Schlag der Basstrommel ein MiDi Clock Signal gewinnen, das dann in ein Keyboard eingespeist wird.
    Der Sinn der Sache ist, das die interne Begleitautomatik des Keyboards synchron zum Beat des Schlagzeugers läuft.

    Ich hab dazu auch schon die entsprechende Hardware ( MidiGAL ) aufgebaut und auch schon eine passende Software geschrieben.

    Das mit dem Tempowechsel funktioniert auch im Prinzip schon.

    Mein Problem ist nun, das die Geschwindigkeitsänderung natürlich nur bei einem Bassschlag ermittelt werden kann.
    Das bedeutet das Keyboard läuft bis zum nächsten Bassschlag mit der vorherigen Geschwindigkeit weiter.
    Nach einigen Takten passt so die Begleitautomatik nicht mehr mit dem Beat des Schlagzeugers zusammen.

    Die beiden Geräte per MiDi Song Position Pointer wieder gerade zu ziehen hab ich schon versucht.
    Leider nimmt das Keyboard diese Information bei der Begleitautomatik nicht an.

    Habt Ihr irgendwelche Ideen wie man das Lösen könnte?

    Für alle nicht Musiker eine kurze Erklärung:
    Bei MiDi ( Musical, instrumental, digital, Interface ) werden pro Viertelnote 24Clock Nachrichten auf dem MiDi Port ausgegeben.
    Der zeitliche Abstand zwischen den Signalen bestimmt die Geschwindigkeit des Musikstückes ( bpm = beats per minute ).
    Das Ganze ist also ein Taktgeber, wobei ein Gerät den Takt Master spielt und alle anderen angeschlossenen Geräte eine Slave Funktion haben.
    Zu Beginn wird eine Start Nachricht ausgegeben, am Ende des Musikstückes ein Stop.
    Dazwischen dann die Timing Clocks.
    Geändert von wkrug (18.04.2018 um 08:23 Uhr)

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.187
    Ich hab das Problem jetzt so gelöst, das ich die MiDi Signale von 2 Trommeln nehme und daraus die Taktinformation ableite.
    Bei den MiDi Clocks werden dann bei jeder neuen Ermittlung der Geschwindigkeit MiDi Clocks eingefügt bzw. entfernt.
    Die Signale der beiden Trigger Trommeln werden nur in zeitlich begrenzten Fenster akzeptiert.

    Das Ganze funktioniert nun so leidlich.
    Ein Gerät von Yamaha nimmt nur die ersten beiden Takte zur Geschwindigkeitsermittlung verwendet und läuft dann stur mit dem ermittelten Wert weiter.

    Hat noch wer gute Ideen?

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Hallo wkrug,
    jetzt muss ich mal eben fragen.

    Habe ich das so richtig verstanden ?
    Das Midischlagzeug wird "manuell" gespielt und liefert Dir nur die NoteOn 9x (vermutlich auf Kanal 10) Signale der Trommeln
    Dann ermittels Du die Zeit zwischen 2 Schlägen und berechnest wieviele bzw. in welchem Tempo dann die 0xF8 Synchron Signale zu senden sind.
    Bei einer Basedrums auf Viertelnoten werden dann 24 (bei PPQ=96) mal 0xF8 Midisignale gesendet und zwar so, dass sie in das Zeitraster der letzen beiden Basstrommeln passen.
    Wenn das Yamaha aber nur die ersten zwei F8 Signale auswertet und dann stur den Takt damit weiter läuft, ist das natürlich blöd, da hast Du ja keinen Zugriff drauf.
    So etwas habe ich aber ehlich gesagt noch nicht erlebt.
    Wenn dein Keayboard auf extern/Midi Clock steht, dann sollte es doch "theoretisch" auch richtig synchronisieren.
    Nach deiner Beschreibugn klingt es als es so, als wenn es selbst ein Tempo ermittelt aus 2 Signale und dann beibehält ?
    Gestern hatte ich noch die Idee mittels Stop 0xFC und Continue 0xFB einzugreifen, aber damit wäre ja, wenn überhaut, nur eine Verlangsamung möglich.

    Ideen;
    Einige Keyboards hatten/haben ein Taste "Tap Tempo". Hier macht das keayboard quasi das, was Du selbst auswertest, nämlcih den Zeitabstand zwischen 2 Schlägen.
    Wenn dein Keyboard so etwas hat, könnte man die Taste abgreifen und entsprechend simulieren.

    No Früherer, hatten die Keyboard sogar noch ein Poti fürs Tempo, hier hätte man über eine DAC das Tempo einstellen können.



    Siro
    Geändert von Siro (12.09.2018 um 08:19 Uhr)

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.187
    Bei einer Basedrums auf Viertelnoten werden dann 24 mal 0xF8 Midisignale gesendet und zwar so, dass sie in das Zeitraster der letzen beiden Basstrommeln passen.
    Im Prinzip ja. Leider wird nicht bei allen Stücken die Basstrommel bei jeder Viertelnote geschlagen.
    Kommen mal 2 Basschläge nicht laufen die Midi Clocks einfach weiter.
    Darum haben wir jetzt noch mal eine zweite Trommel als Trigger mit dazu geproggt, damit das Timing wieder passen sollte.
    Doppelschläge während einer Viertelnote werden ebenfalls ignoriert. Da haben wir ein Zeitfenster einprogrammiert in dem die Triggersignale akzeptiert werden.
    Das funktioniert jetzt so leidlich ( mit einem anderen Keyboard ).

    Wenn das Yamaha aber nur die ersten zwei F8 Signale auswertet und dann stur den Takt damit weiter läuft, ist das natürlich blöd,
    da hast Du ja keinen Zugriff drauf.
    So ist es aber leider.

    Es gibt ja noch 0xFC=Stop und Continue 0xFB
    vielleicht reagiert das Yamaha Teil darauf und man könnte damit noch etwas tricksen.
    Start und Stopp wird akzeptiert, Continue wird ignoriert. Zudem ist damit keine Geschwindigkeitserhöhung möglich.

    Die Ganze Geschichte ist also doch recht komplex, Ich hatte mir das einfacher vorgestellt.

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.643
    Also ich meine mich dunkel zu erinnern, dass es normalerweise eine Anleitung gibt, dort sollte drin stehen, welche Blöcke das Gerät annimmt und welche es sendet. So kann man leicht sehen, was das Gerät beherrscht. Man kann mit jedem Gerät tatsächlich nicht alles machen nur weil eine Midi-Schnittstelle dran ist. Starten kann man eigentlich alle Geräte synchron - mal von Exoten wie reinen Masterkeyboards abgesehen. Sieht so aus, als ob das Gerät nicht mehr als das kann.
    Geändert von Moppi (12.09.2018 um 12:44 Uhr)

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.187
    Also ich meine mich dunkel zu erinnern, dass es normalerweise eine Anleitung gibt, dort sollte drin stehen, welche Blöcke das Gerät annimmt und welche es sendet.
    Richtig, das ist die sog. MiDi Diskreption.
    Leider steht da aber nicht, was bei den ankommenden Befahlen dann tatsächlich passiert bzw. wie diese ausgewertet werden.

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.643
    Im Prinzip ist Midi-Clock aber richtig? Ich denk schon. Und das Gerät passt sich nicht an den Midi-Clock an. Nur beim Start und läuft dann mit dem internen Clock weiter, ohne auf den externen zu hören?

    - - - Aktualisiert - - -

    Da müsste man einen Fußschalter einsetzen. Schalter betätigen und mit Schlagzeug den Takt vorgeben. Das könnte man mit einmal Betätigen machen. Also Schalter betätigen und die angeschlossene Blackbox wartet 2 oder 3 Schlage ab und errechnet daraus den genauen Clock und sendet den dann ab sofort. Bis mit dem Schalter die nächste Änderung erfolgt. Ändert aber nichts daran, wenn die angeschlossenen Midi-Geräte dem Clock nicht folgen. Wenn man Start und Stop schnell genug hintereinander sendet, könnte es sein, dass es vielleicht gar nicht auffällt. Dann könnte man ein STOP schicken und ein START mit neuem Clock.

    - - - Aktualisiert - - -

    Noch eine Möglichkeit wäre, mit dem Fußschalter alle Geräte zu stoppen, die Blackbox ermittelt aus den folgenden zwei Schlägen den Takt und Startet alle Geräte wieder, mit dem neuen Clock.

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.187
    Da müsste man einen Fußschalter einsetzen. Schalter betätigen und mit Schlagzeug den Takt vorgeben. Das könnte man mit einmal Betätigen machen. Also Schalter betätigen und die angeschlossene Blackbox wartet 2 oder 3 Schlage ab und errechnet daraus den genauen Clock und sendet den dann ab sofort. Bis mit dem Schalter die nächste Änderung erfolgt. Ändert aber nichts daran, wenn die angeschlossenen Midi-Geräte dem Clock nicht folgen. Wenn man Start und Stop schnell genug hintereinander sendet, könnte es sein, dass es vielleicht gar nicht auffällt. Dann könnte man ein STOP schicken und ein START mit neuem Clock.
    Im Prinzip ne gute Idee.
    Funktioniert aber nicht, weil der Rhytmusautomat des Keyboards verwendet werden soll.
    Bei jedem Start startet dieser aber neu und auf Stop und anschließend Continue reagiert das Teil nicht.
    Ausserdem soll das Schlagzeug mit dem Rhytmusgerät im Keyboard synchron laufen.
    Also abwarten und dann mal die Clocks berechnen funktioniert also auch nicht.

    Das mit dem Start und Stop Triggern ist schon realisiert und in der Software programmierbar.

Ähnliche Themen

  1. MiDi Sysex File aus Intel .hex File generieren
    Von wkrug im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 02.04.2018, 22:27
  2. Vanmoof: E-Bike mit elektronischem Fahrradschloss und Ortungsfunktion
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 4
    Letzter Beitrag: 11.04.2017, 13:44
  3. DMX Signal generieren
    Von tomsen99 im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 07.03.2006, 10:20
  4. Wie Signal generieren
    Von Moritz f. im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 29.11.2005, 16:28
  5. Zufallszahl generieren mit RND() ?!?
    Von crazy_bielefeld im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 24.02.2005, 20:49

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiTime Speicher und Akkus