Midi-Takterkennung

F

-FX-

.
Hi,

ich suche kein fertiges Projekt sondern möchte wieder mal etwas Eigenes im Bereich Midi realisieren. Das ist mir an sich auch nicht neu, allerdings stehe ich erstmals vor dem Problem einer zu möglichst vielen Midisequencern kompatiblen Takterkennung.

Mein Ansatz wäre jetzt dies anhand der Timing Clock 0xF8 zu realisieren. Dieses Signal wird 24x pro viertel Takt gesendet. Das Problem ist, dass man so zwar zur Geschwindigkeit kommt, allerdings nicht weiß, wo der Anfang eines Taktes ist. Bezieht man das Startsignal 0xFA mit ein wäre das Problem gelöst, vorrausgesetzt der Sequencer sendet dies auch und die Erkennung wäre vor dem starten schon aktiv. In allen anderen Fällen bräuchte man also eine Art Sync-Button, mit dem sich der Taktanfang durch Drücken definieren lässt.

Gibt es noch eine elegantere Lösung, die ich eventuell nicht bedacht habe ?
Kann man sich darauf weitestgehend verlassen, dass als Master betriebene Sequencer 24 Impulse vom Typ 0xF8 pro Viertelnote senden ?
 
Gibt es noch eine elegantere Lösung, die ich eventuell nicht bedacht habe ?

Nein, es gibt keine elegantere Loesung.
Hier ein hilfreicher Ausschnitt aus der MIDI Spec zu diesem Thema: http://web.archive.org/web/200710051653 ... ec/seq.htm

Kann man sich darauf weitestgehend verlassen, dass als Master betriebene Sequencer 24 Impulse vom Typ 0xF8 pro Viertelnote senden ?

Ja, darauf kann man sich verlassen.

Zusaetzlich zum MIDI Start (FA) solltest Du auch die Songposition (F2) parsen - hierueber synchronisiert bspw. Logic Audio einen externen Sequenzer, wenn man das Playback mitten im Song startet. In diesem Fall wird zuerst die Songposition, anschliessend ein MIDI Clock Continue (FB), und schliesslich der erste MIDI Clock (F8) fuer die neue Position gesendet.
Die Songposition hat eine Aufloesung von 6 MIDI Clocks (= eine 16tel), man sollte sie also selbst bei Anwendungen wie einem simplen 16-Step Sequenzer oder Arpeggiator auswerten, um den Slave in Sync zu halten.

Ausserdem sollte man den Sequenzer wirklich erst nach einem FA laufen lassen. Mancher MIDI Clock Master sendet im Vorraus bereits ein paar Clocks, damit sich der Slave sauber darauf einsynchronisieren kann (wichtig bspw. fuer die BPM Erkennung von Effekten wie Tempo Delay) - erst mit dem FA und darauf folgenden F8 sollte der erste Step gespielt werden.

Gruss, Thorsten.
 
Ok, danke für die Ausführungen.
Mal angenommern, man möchte parallel zu einem laufenden Sequencer pro Takt 96 Befehle "abfeuern" wäre keine Lösung näher liegend als die Timing-Clock-Signale direkt als Trigger zu benutzen. Liegen diese Triggersignale in der Regel so sauber und gleichverteilt im 96er-Raster, dass man das so machen könnte oder lässt man doch lieber einen extra Timer laufen ?

Würde es ja auch gerne selber nachprüfen, dazu fehlt es mir aber an "genügend" Geräten zum Vergleich.

Danke
 
Ein extra Timer macht (IMHO) nur dann Sinn, wenn man den MIDI Clock vervielfachen moechte, um eine hoehere Aufloesung zu erzielen.

Ansonsten kann man sich auf die Stabilitaet des MIDI Clocks verlassen - wenn das nicht so waere, so dass die Slaves Temposchwangungen ausgleichen muessten, wuerden diese nur mit dem gleichen Interpolations-Algorithmus synchron laufen; auch sprunghafte Tempoaenderungen koennten vom Master nicht mehr sauber weitergegeben werden.

Gruss, Thorsten.
 


News

Zurück
Oben