2016-11-19 86 views
0

我不是一個編碼器,所以希望我能以對您們有意義的方式提出這個問題! ;-)更改midi文件的源代碼

有沒有簡單的方法來修改單個MIDI文件的內容?例如,我有一個midi文件,列出[歌曲集,更喜歡它]歌曲的關鍵是C,當它真的是D時。

我有很多midi程序可以讓我更換鍵[和移動註釋]。這並不能解決我的問題。筆記是在正確的地方,關鍵只是錯誤標記。

我以爲我可以在Atom中打開該文件並將C更改爲D並完成......但這不起作用。這在Atom中全是胡言亂語。

我在Mac上。有什麼方法可以修改我的MIDI文件的內容嗎?

預先感謝任何回覆的人!

+0

我認爲你應該研究一個midi文件的結構是什麼,並用二進制/十六進制編輯器改變它。 無論如何,我不確定一個midi文件是否有「鑰匙」。我認爲它只有音符,持續時間和樂器,只有當你用音樂程序打開它時,它纔會猜出關鍵。至少這就是當我用音樂程序打開midi文件時我的想法。 :) – Andrew

+0

我在一個十六進制編輯器中打開了一個midi文件,但這不是很有啓發性。順便說一句,我很確定密鑰是以某種方式在文件中設置的。幾個midi節目顯示的關鍵[所有一貫錯誤],我不認爲他們在飛行中猜測,因爲大多數歌曲被列爲C,當他們顯然不[甚至關閉] –

+0

如果你打開另一個MIDI與那些相同的程序,他們使用不同的密鑰?也許他們只是將C用作每個MIDI的默認值,因爲它沒有任何銳利或平面。當然,打開midi不會有幫助,這就是爲什麼我首先說你應該對midi結構進行一些研究。 ;) – Andrew

回答

1

大多數MIDI文件不存儲密鑰。

但是,當他們這樣做,他們使用可以在十六進制表示爲FF 59 02 sf mi,其中sf是銳器(正)或單位(負)的數目的按鍵簽名活動,並mi是0/1用於主/次。

如果某個文件沒有此事件,則必須添加它。最簡單的方法是使用一些SMF庫作爲您選擇的編程語言。

+0

謝謝!如果大多數MIDI文件不存儲關鍵信息,C是默認的?這可以解釋爲什麼大多數人都是C的關鍵,我會想。 –

+0

沒有正式的默認值,但是0/0聽起來像是明顯的默認值。 –

+0

找到了一個程序MidiYodi,它可以讓我輕鬆更換密鑰! –