2012-06-16 44 views
5

Tôi đang viết một tập lệnh để chuyển đổi ảnh thành ghi chú MIDI dựa trên giá trị RGBA của từng pixel riêng lẻ. Tuy nhiên, tôi dường như không thể có được bước cuối cùng làm việc, mà là thực sự đầu ra các ghi chú vào một tập tin. Tôi đã thử bằng cách sử dụng thư viện MIDIUtil, tuy nhiên nó là tài liệu không phải là lớn nhất và tôi không thể hình dung nó ra. Nếu bất cứ ai có thể cho tôi biết cách sắp xếp các ghi chú (để chúng không bắt đầu ngay từ đầu), nó sẽ được đánh giá cao.Làm cách nào để ghi tệp MIDI bằng Python?

Xin cảm ơn trước.

+0

Bạn có nhớ ghi lại sự chậm trễ không? –

Trả lời

10

Nhìn vào mẫu, một cái gì đó giống như

from midiutil.MidiFile import MIDIFile 

# create your MIDI object 
mf = MIDIFile(1)  # only 1 track 
track = 0 # the only track 

time = 0 # start at the beginning 
mf.addTrackName(track, time, "Sample Track") 
mf.addTempo(track, time, 120) 

# add some notes 
channel = 0 
volume = 100 

pitch = 60   # C4 (middle C) 
time = 0    # start on beat 0 
duration = 1   # 1 beat long 
mf.addNote(track, channel, pitch, time, duration, volume) 

pitch = 64   # E4 
time = 2    # start on beat 2 
duration = 1   # 1 beat long 
mf.addNote(track, channel, pitch, time, duration, volume) 

pitch = 67   # G4 
time = 4    # start on beat 4 
duration = 1   # 1 beat long 
mf.addNote(track, channel, pitch, time, duration, volume) 

# write it to disk 
with open("output.mid", 'wb') as outf: 
    mf.writeFile(outf) 
+0

Nếu bạn đang sử dụng Python 3, bạn nên thay thế dòng đầu tiên đó bằng 'từ midiutil.MidiFile3 nhập MIDIFile'. – Cai

+0

Tôi làm cách nào để thêm thông báo của bản nhạc vào cuối? – kurtosis

8

Tôi biết đây là một bài cũ, nhưng tôi là tác giả của thư viện, và tôi muốn đề cập rằng python 2 và 3 hỗ trợ nay đã được thống nhất và với sự sụp đổ của Google code mã hiện đang được lưu trữ trên GitHub và có thể được cài đặt thông qua pip, ví dụ:

pip install MIDIUtil 

Tài liệu có sẵn tại Read The Docs.

(Cố gắng bình luận nhưng tôi thiếu điểm kinh nghiệm.)

Thông điệp end-of-track được tạo ra tự động khi tập tin được ghi vào đĩa.

+2

Xin chào Mark. Tôi có một tập tem thời gian liên tiếp, và mỗi lần đóng dấu trong hồ sơ, tôi muốn phát một ghi chú, nói rằng C64 Maj. Không có tiến độ, như ngẫu hứng, các con tem là ngẫu nhiên ... làm thế nào để tôi nhận được chúng "như là" vào một tập tin midi? – ajsp

Các vấn đề liên quan