Domanda

Un abbastanza semplice domanda per la quale ho una supposizione, ma non riesco a trovare una risposta definitiva da nessuna parte.

Lo sfondo: Ho un file midi multitraccia con comandi TEMPO nella prima traccia. Ho bisogno di tradurre il conteggio ABSOLUTE_TICK in altri brani "secondi" (frazioni di secondo offset dall'inizio del file MIDI).

Ho la formula di relazionarsi ABSOLUTE_TICK di secondi in base alla PulsePerQuarterNote (PPQN) per il file al tempo (MS per quarto di nota).

La domanda è: fanno cambi di tempo nella prima traccia (traccia 0) si applicano a tutte le altre tracce

?

Se è così, mentre io sto parsing altre tracce (ad esempio traccia 4, che ha NOTE_ON e NOTE_OFF messaggi Sono interessato a) avrò bisogno di tenere un dito che indica il tempo cambia nel binario 0 in parallelo. È giusto?

Grazie,

Mark

È stato utile?

Soluzione

In breve, sì. La prima traccia contiene informazioni di temporizzazione che sarà applicato per l'intera disposizione, in modo da applicare questi messaggi per ciascuno dei brani con la stessa assoluto di tempo. Dal momento che tutti gli eventi utilizzano un offset in tick, è necessario estrarre prima i messaggi di cambio di tempo, convertirli in tempo assoluto, e poi come si sta leggendo nelle altre tracce si applicherà questi messaggi sulla base di tale linea temporale.

Dalla del MIDI fanatico centro di lavaggio del cervello tecnico :

  

In un file di formato 0, i cambi di tempo sono sparsi per tutto quello MTrk. In formato 1, il primo MTrk dovrebbe consistere solo il tempo (e indicazione del tempo) eventi in modo che possa essere letto da un dispositivo in grado di generare una "mappa tempo". E 'meglio non collocare gli eventi MIDI in questo MTrk. In formato 2, ogni MTrk dovrebbe iniziare con almeno un evento iniziale tempo (e indicazione del tempo).

Detto questo, alcuni sequencer si rompono questa regola e mettere eventi MIDI effettivi nella prima traccia insieme a informazioni di temporizzazione, dal momento che lo standard non è così specifico in questo senso. Il vostro programma deve affrontare entrambi i casi, dal momento che è probabile incontrare i file MIDI in natura che sono formattati in questo modo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top