2012-08-31 44 views
7

Estoy intentando cambiar el compás (predeterminado a 4/4) en un MusicSequence pero no parece entender cómo hacerlo. Tengo 2 MusicTracks dentro de la secuencia y un MusicPlayer también para reproducir la música. ¿Cómo puedo cambiar este valor?Cambiar la fecha y hora en MusicSequence

EDIT:

Ahora sé que tengo que añadir un evento de Time Sig MusicSequence a la pista de Tempo. Sé que puedo obtener esta pista con MusicSequenceGetTempoTrack, pero ¿cómo le agrego un evento sig de tiempo?

EDIT 2:

Investigando me di cuenta de que necesito para crear un MusicTrackExtendedMetaEvent a la música Pista de Tempo. Ahora necesito saber cómo formatear correctamente MIDIMetaEvent (sé que 88 es el metaEventType pero no sé cómo agregar el resto de la información).

+0

acabaste encontrar la manera de crear evento signiture mete tiempo? – Nikolozi

Respuesta

5

Después de 4 perder 4 horas en esto, descubrí cómo hacerlo. Aquí el código:

//Getting the tempo track 
MusicTrack tempoTrack; 
MusicSequenceGetTempoTrack (musicSequence, &tempoTrack); 

//Set time signature to 7/16 
MIDIMetaEvent timeSignatureMetaEvent; 
timeSignatureMetaEvent.metaEventType = 0x58; 
timeSignatureMetaEvent.dataLength = 4; 
timeSignatureMetaEvent.data[0] = 0x07; 
timeSignatureMetaEvent.data[1] = 0x04; 
timeSignatureMetaEvent.data[2] = 0x18; 
timeSignatureMetaEvent.data[3] = 0x08; 
MusicTrackNewMetaEvent(tempoTrack, 0, &timeSignatureMetaEvent); 

Aquí hay una referencia a la especificación de archivo MIDI para buscar los códigos de tipo de compás a http://www.somascape.org/midi/tech/mfile.html

+2

Recuerde borrar primero Tempo Track o terminará con 2 firmas de tiempo en su archivo MIDI. 'code'MusicTrack tempoTrack; MusicSequenceGetTempoTrack (sequence, & tempoTrack); MusicTrackClear (tempoTrack, 0, 1); 'code' – fdiaz

+0

MIDIMetaEvent solo asigna 1 byte a los datos, quién sabe a qué memoria está escribiendo los otros 3 bytes. – voidref

+1

La firma de tiempo se expresa como 4 números. nn y dd representan el "numerador" y el "denominador" de la firma como se anota en la partitura. El denominador es una potencia negativa de 2: 2 = negra, 3 = octava, 4 = 16 etc. http://www.blitter.com/~russtopia/MIDI/~jglatt/tech/midifile/time.htm – johndpope