2012-08-31 28 views
7

में समय हस्ताक्षर बदलें मैं MusicSequence में समय हस्ताक्षर (डिफ़ॉल्ट 4/4) को बदलने की कोशिश कर रहा हूं लेकिन मुझे यह समझ में नहीं आता कि यह कैसे करें। मेरे पास अनुक्रम के अंदर 2 MusicTracks और संगीत पुन: उत्पन्न करने के लिए एक संगीत प्लेयर भी है। मैं इस मूल्य को कैसे बदल सकता हूं?MusicSequence

संपादित करें:

मैं अब है कि मैं MusicSequence टेम्पो ट्रैक करने के लिए एक समय सिग घटना जोड़ने की जरूरत है पता है। मुझे पता है कि मैं इस ट्रैक को MusicSequenceGetTempoTrack के साथ प्राप्त कर सकता हूं, लेकिन मैं इसमें एक समय सिग घटना कैसे जोड़ूं?

संपादित करें 2:

शोध मुझे एहसास हुआ कि मैं संगीत टेम्पो ट्रैक करने के लिए एक MusicTrackExtendedMetaEvent बनाना होगा। अब मुझे यह जानने की जरूरत है कि MIDIMetaEvent को सही तरीके से कैसे प्रारूपित किया जाए (मुझे पता है कि 88 मेटाइवेंट टाइप है लेकिन बाकी जानकारी को कैसे जोड़ना है)।

+0

आप पता लगाना समय signiture बाँट देना ईवेंट बनाने का तरीका खत्म किया था करने के लिए समय हस्ताक्षर कोड को देखने के लिए मिडी फ़ाइल कल्पना के लिए एक संदर्भ है? – Nikolozi

उत्तर

5

इस पर 4 घंटे बर्बाद करने के बाद मैंने यह पता लगाया कि इसे कैसे किया जाए। यहाँ कोड:

//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); 

यहाँ http://www.somascape.org/midi/tech/mfile.html

+2

पहले टेम्पो ट्रैक को साफ़ करना याद रखें या आप अपनी MIDI फ़ाइल में 2 टाइम हस्ताक्षर के साथ समाप्त हो जाएंगे। 'कोड'MusicTrack tempoTrack; MusicSequenceGetTempoTrack (अनुक्रम, और tempoTrack); MusicTrackClear (tempoTrack, 0, 1); 'कोड' – fdiaz

+0

MIDIMetaEvent केवल डेटा के लिए 1 बाइट आवंटित करता है, जो जानता है कि आप किस स्मृति को अन्य 3 बाइट्स लिख रहे हैं। – voidref

+1

समय हस्ताक्षर 4 संख्या के रूप में व्यक्त किया जाता है। एनएन और डीडी शीट संगीत पर हस्ताक्षर किए गए हस्ताक्षर के "संख्यात्मक" और "denominator" का प्रतिनिधित्व करते हैं। Denominator 2: 2 = तिमाही नोट की एक नकारात्मक शक्ति है, 3 = आठवां, 4 = 16 आदि http://www.blitter.com/~russtopia/MIDI/~jglatt/tech/midifile/time.htm – johndpope