Tôi có nhạc nền cho một số bài hát có sẵn ở cả hai định dạng .MID và .KAR, nhưng trong mỗi trường hợp, nó được phát nhanh hơn tôi muốn. Cách đơn giản nhất để tạo tệp .MID hoặc .KAR có cùng nội dung nhưng với tốc độ chậm hơn - giả sử, một tệp bị chậm lại 20% hoặc hơn, một tệp khác 15%, một phần ba 25%, v.v. Lý tưởng nhất, tôi thích một kịch bản Python đa nền tảng (vì điều đó sẽ cho phép tôi dễ dàng thử nghiệm tinh chỉnh nguồn để hội tụ với hiệu ứng chính xác mà tôi muốn ;-), nhưng tôi sẽ thực hiện bất kỳ giải pháp miễn phí nào chạy trong Linux (Ubuntu 8.04 nếu nó quan trọng) và Mac (Mac OS X 10.5, nhưng ưu tiên tương thích 10.6).Làm thế nào để "làm chậm" một tệp MIDI (lý tưởng trong Python)?
Trả lời
Bạn có thể chỉnh sửa các tập tin, theo http://www.sonicspot.com/guide/midifiles.html
Mặc dù có lẽ là một đọc MIDI/viết thư viện rồi. Trong thực tế, đó là một vấn đề nhìn thấy những câu hỏi liên quan: Simple, Cross Platform MIDI Library for Python
Set Tempo
kiện meta này thiết lập tiến độ chuỗi về micro mỗi tứ lưu ý đó là mã hóa trong ba byte . Nó thường là được tìm thấy trong đoạn đường rãnh đầu tiên, liên kết thời gian để xảy ra cùng một lúc dưới dạng thông báo đồng hồ MIDI để quảng bá đồng bộ hóa chính xác hơn . Nếu không có đặt sự kiện tiến độ, hiện có 120 lần đánh bại mỗi phút. Công thức sau có thể được sử dụng để dịch tốc độ từ micro giây trên phần tư để ghi lại mỗi phút và quay lại.
MICROSECONDS_PER_MINUTE = 60000000 BPM = MICROSECONDS_PER_MINUTE/MPQN MPQN = MICROSECONDS_PER_MINUTE/BPM
Meta Event Type Length Microseconds/Quarter-Note 255 (0xFF) 81 (0x51) 3 0-8355711
Ah tốt, có vẻ như tôi sẽ không có thêm bất kỳ kỹ thuật trực tiếp nào nữa, vì vậy xin cảm ơn kỹ thuật này, @Vinko. –
Vì vậy, rất nhiều cho SO là tuyệt vời, huh? :-) Khi bạn ** THỰC HIỆN ** cần nó, nó luôn luôn thất bại. –
Như Vinko nói, bạn có thể chỉnh sửa midifile, nhưng vì đó là một định dạng nhị phân, vắt vào số lượng tối thiểu của các bit có thể, nó sẽ giúp bạn có được giúp đỡ.
Đây là một midi-to-text chuyển đổi (và ngược lại):
http://midicomp.opensrc.org/
Tôi đã sử dụng nó khá một chút thời gian gần đây. nó khá tầm thường để xử lý văn bản (ví dụ: tìm kiếm dòng với "Tempo") cho các hoạt động đơn giản khi bạn có phần giữa là văn bản. đã không thử trên mac (biên dịch không có vấn đề trên ubuntu 8,04).
Về nhịp độ giữa cụ thể, rất dễ làm chậm hoặc tăng tốc phát lại vì thời gian của sự kiện được xác định theo "bọ", thời gian thực tính bằng giây được xác định bởi tham số tiến độ được mô tả trong trích dẫn của Vinko. Tôi tin rằng chữ ký thời gian không phải là quá có liên quan, và chủ yếu là để hiển thị các thanh/nhịp đập một cách chính xác khi mở trong một sequi midi.
Ngoài ra, ngoài pyPortMidi, còn có một vài mô-đun python khác xung quanh.
[hmmm ... có vẻ như tôi chỉ có thể đăng trên liên kết trên mỗi bài đăng, là người dùng mới. tôi sẽ thử đăng liên kết lên các mô-đun python trong một vài nhận xét hoặc một vài câu trả lời khác ...]
Mô-đun Python để đọc, ghi, tạo/chỉnh sửa các tệp midi midi:
Lớp để đọc và ghi các tệp midi (bài đăng này có vẻ là nguồn duy nhất):
Tôi cũng tìm thấy điều này, mặc dù tôi chưa thử:
Tôi có sở thích tương tự như bài đăng của bạn.Tôi chỉ đi qua thư viện này trông rất hứa hẹn:
Lưu ý rằng [câu trả lời chỉ có liên kết] (http://meta.stackoverflow.com/tags/link-only-answers/info) không được khuyến khích, các câu trả lời SO phải là điểm cuối của việc tìm kiếm giải pháp (so với nhưng một điểm dừng khác của tài liệu tham khảo, mà có xu hướng để có được cũ theo thời gian). Vui lòng xem xét thêm bản tóm tắt độc lập tại đây, giữ liên kết dưới dạng tham chiếu. – kleopatra
Thay thế đối tượng tạm thời.MetronomeMark ở đầu mỗi nhân viên bằng một đối tượng mới nên thực hiện thủ thuật. Lưu ý rằng hiện tại music21 sẽ định lượng mọi tệp MIDI. Chỉ cần thêm vào danh sách việc cần làm của chúng tôi để làm cho tùy chọn đó. –
Bạn có thể sử dụng music21 để làm điều này, mặc dù tôi đã chỉ được thử nghiệm nó trên OSX 10.10.1.
import music21
fctr = 1.25 # scale (in this case stretch) the overall tempo by this factor
score = music21.converter.parse('song.mid')
newscore = score.scaleOffsets(fctr).scaleDurations(fctr)
newscore.write('midi','song_slow.mid')
Các khoảng trống giống như dấu thời gian của từng ghi chú và thời lượng là ghi chú trong bao lâu, tôi tin rằng áp dụng cùng một yếu tố tỷ lệ cho từng loại giống như điều chỉnh tiến độ.
Nếu bạn giống tôi thì bạn đang nghe những bài hát tương tự 7 năm sau và có thể dùng thử! Nếu không, tôi hy vọng điều này sẽ giúp một người khác thức dậy ngày hôm nay như tôi và đã gãi đầu của tôi cố gắng để giải quyết vấn đề này một cách dễ dàng.
fastScore = score.augmentOrDiminish (1.25) - sẽ mở rộng khoảng thời gian và bù trừ và một số thứ khác để làm cho điểm số đầu ra chính xác. –
- 1. Làm cách nào để ghi tệp MIDI bằng Python?
- 2. Đọc một tệp MIDI bằng Python
- 3. Làm thế nào để làm chậm một truy vấn SQL?
- 4. Thao tác các tệp MIDI bằng Python
- 5. Làm thế nào để gỡ lỗi play2 trong ý tưởng?
- 6. Làm thế nào tôi có thể gọi một hàm có sự chậm trễ trong python?
- 7. Làm thế nào để tải một dll C# trong python?
- 8. Làm thế nào để một tệp "hỏng"
- 9. Đọc các tệp MIDI
- 10. Làm thế nào để chạy một tệp Python không có trong thư mục từ một tệp Python khác?
- 11. Làm thế nào để đọc các bit từ một tệp?
- 12. Làm thế nào để giải quyết cuộn chậm trong UITableView
- 13. MIDI trên Python/PyGame, Ubuntu 12.04
- 14. Làm thế nào để xử lý một ống bị hỏng (SIGPIPE) trong python?
- 15. làm thế nào để sản xuất chậm trễ trong ruby
- 16. Tuples Python làm khóa chậm?
- 17. Truy vấn SQL - Làm thế nào Chậm quá chậm?
- 18. Làm cách nào để xử lý các tệp tĩnh bằng Python webapp2 trong Heroku?
- 19. Làm cách nào để thay thế một cột trong tệp CSV bằng Python?
- 20. Làm thế nào để bạn nhập một tệp trong python có dấu cách trong tên?
- 21. Làm thế nào để tin tưởng một chứng chỉ trong Windows Powershell
- 22. Làm thế nào để scp trong python?
- 23. Python: Làm thế nào để tải về một file zip
- 24. Làm thế nào để tạo một mảng bit trong Python?
- 25. Làm thế nào để mở rộng một lớp trong python?
- 26. Làm thế nào để tách một chuỗi trong Python?
- 27. Jquery: làm thế nào để ngủ hoặc chậm trễ?
- 28. Làm thế nào để loại bỏ một mô-đun Python?
- 29. Python: xử lý một lượng lớn dữ liệu. Scipy hoặc Rpy? Và làm thế nào?
- 30. Làm thế nào để chuyển hướng đầu ra của .exe vào một tệp trong python?
Bạn đã xem xét định dạng OSC chưa? http://en.wikipedia.org/wiki/Open_Sound_Control – magnetar