2009-09-06 8 views
13

मेरे पास एमआईडी और .के प्रारूप दोनों में उपलब्ध कुछ गाने के लिए पृष्ठभूमि संगीत है, लेकिन प्रत्येक मामले में इसे कुछ हद तक तेज़ी से खेला जा रहा है। या तो एक ही सामग्री के साथ .MID या .KAR फ़ाइलों को बनाने का सबसे आसान तरीका क्या है लेकिन धीमे गति से - कहें, एक 20% या उससे भी कम हो गया है, दूसरा 15%, तीसरा 25%, और इसी तरह से?MIDI फ़ाइल को धीमा करने के लिए कैसे करें (आदर्श रूप से पायथन में)?

आदर्श रूप से, मैं एक क्रॉस-प्लेटफार्म पायथन स्क्रिप्ट पसंद करूंगा (क्योंकि इससे मुझे आसानी से प्रयोग करने के लिए स्रोत को ट्विक करने की इजाजत मिलती है जो मैं चाहता हूं ;-), लेकिन मैं कोई भी मुफ्त समाधान लेगा जो चलता है लिनक्स में (उबंटू 8.04 यदि यह मायने रखता है) और मैक (मैक ओएस एक्स 10.5, लेकिन 10.6 संगतता पसंदीदा)।

+0

क्या आपने ओएससी प्रारूप को देखा है? http://en.wikipedia.org/wiki/Open_Sound_Control – magnetar

उत्तर

9

आप फ़ाइल को संपादित कर सकता है, प्रति http://www.sonicspot.com/guide/midifiles.html

के रूप में हालांकि शायद एक मिडी पढ़ने है/पुस्तकालय पहले से ही लेखन। Simple, Cross Platform MIDI Library for Python

सेट टेम्पो

इस मेटा घटना प्रति क्वार्टर टिप्पणी जो है तीन बाइट्स में एन्कोड माइक्रोसेकंड के मामले में अनुक्रम गति सेट: वास्तव में, यह संबंधित प्रश्नों को देखने की बात थी । यह आमतौर पर पहला ट्रैक हिस्सा में पाया जाता है, एक मिडी घड़ी संदेश के रूप में एक ही समय पर होने अधिक सटीक तुल्यकालन को बढ़ावा देने के समय गठबंधन। यदि कोई सेट टेम्पो ईवेंट मौजूद है, 120 बीट प्रति मिनट माना जाता है। निम्नलिखित फॉर्मूला का उपयोग टेम्पो का उपयोग प्रति मिनट बीट्स प्रति मिनट और पर माइक्रोसेकंड से टेम्पो का अनुवाद करने के लिए किया जा सकता है।

 
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 
+0

आह ठीक है, ऐसा नहीं लगता है कि मुझे कोई और सीधी तकनीक नहीं मिल रही है, इसलिए इस के लिए धन्यवाद, @ विंको। –

+0

एसओ उत्कृष्ट होने के लिए बहुत कुछ, हुह? :-) जब आप ** वास्तव में ** इसकी आवश्यकता है, यह हमेशा विफल रहता है। –

13

Vinko कहते हैं, आप midifile संपादित कर सकते हैं, लेकिन जब से यह एक द्विआधारी प्रारूप, संभव बिट्स की कम से कम संख्या में निचोड़ा है, यह मदद करने के लिए मदद करता है।
http://midicomp.opensrc.org/
मैं इसे का उपयोग किया गया है हाल ही में काफ़ी:

यह एक मिडी से पाठ कनवर्टर (और इसके विपरीत) है। यह पाठ प्रसंस्करण करने के लिए सरल संचालन के लिए (जैसे, "गति" के साथ लाइन के लिए खोज) एक बार आप पाठ के रूप में midifile है सुंदर तुच्छ है। मैक पर कोशिश नहीं की है (उबंटू 8.04 पर कोई समस्या नहीं है)।

मिडिफ़ाइल टेम्पो के बारे में विशेष रूप से, प्लेबैक को धीमा करना या गति करना आसान है क्योंकि घटनाओं के समय को "टिक" के संदर्भ में निर्दिष्ट किया जाता है, जिसका वास्तविक अवधि सेकंड में विंको के उद्धरण में वर्णित टेम्पो पैरामीटर द्वारा निर्धारित किया जाता है। मेरा मानना ​​है कि समय हस्ताक्षर इसलिए प्रासंगिक नहीं है, और बार प्रदर्शित करने के लिए मुख्य रूप से है/सही ढंग से धड़क रहा है जब एक मिडी अनुक्रमक में खोला गया।

इसके अलावा, pyPortMidi से अलग, आसपास के कुछ अन्य अजगर मिडी मॉड्यूल हैं।

[हममम ... यह मैं केवल प्रति पोस्ट लिंक पर पोस्ट कर सकते हैं, एक नया उपयोगकर्ता जा रहा है लगता है। मैं एक जोड़ी टिप्पणी या एक और जोड़ी के जवाब में अजगर मॉड्यूल लिंक पोस्ट कोशिश करता हूँ ...]

+1

मिडी फाइलों को पढ़ने, लिखने, बनाने/संपादित करने के लिए पायथन मॉड्यूल:

+0

मिडी फाइलों को पढ़ने और लिखने के लिए कक्षा (यह पोस्टिंग एकमात्र स्रोत प्रतीत होता है):

+0

मुझे यह भी मिला, हालांकि मैंने इसे आजमाया नहीं है:

0

मैं अपनी पोस्ट के रूप में एक ऐसी ही दिलचस्पी नहीं है।,

http://web.mit.edu/music21/

+0

ध्यान दें कि [लिंक-केवल उत्तर] (http://meta.stackoverflow.com/tags/link-only-answers/info) निराश हैं, SO उत्तर समाधान के लिए खोज का अंत बिंदु होना चाहिए (बनाम। फिर भी संदर्भों का एक और स्टॉपओवर, जो समय के साथ पुराना हो जाता है)। लिंक को संदर्भ के रूप में रखते हुए, यहां स्टैंड-अलोन सारांश जोड़ना पर विचार करें। – kleopatra

+0

टेम्पो को बदलना। मेट्रोमोनमार्क ऑब्जेक्ट प्रत्येक कर्मचारी की शुरुआत में एक नए व्यक्ति के साथ चाल करना चाहिए। ध्यान दें कि वर्तमान में संगीत 21 किसी भी MIDI फ़ाइल को माप देगा। उस वैकल्पिक बनाने के लिए बस हमारे todo सूची में जोड़ा गया है। –

1

आप music21 उपयोग कर सकते हैं यह करने के लिए हालांकि मैं केवल 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') 

ऑफसेट प्रत्येक नोट के टाइम स्टांप की तरह हैं, और अवधि, कितनी देर तक टिप्पणी लग रहा था है मैं प्रत्येक के लिए एक ही पैमाने कारक लागू करने विश्वास तरह की गति को एडजस्ट करने की तरह है।

यदि आप मेरे जैसे हैं तो आप 7 साल बाद उसी गीत सुन रहे हैं और यह कोशिश कर सकते हैं! अन्यथा, मुझे उम्मीद है कि यह किसी और की मदद करता है जो आज मेरे जैसे जाग गया और आसानी से इस समस्या को हल करने की कोशिश कर मेरे सिर को खरोंच कर रहा था।

+0

fastScore = score.augmentOrDiminish (1.25) - स्कोर आउटपुट को ठीक से बनाने के लिए अवधि और ऑफसेट और कुछ अन्य चीजों को स्केल करेगा। –

संबंधित मुद्दे