Question

J'ai la musique de fond pour quelques chansons disponibles dans les deux formats .MID et .KAR, mais dans chaque cas, il est joué un peu plus vite que je le voudrais. Quelle est la façon la plus simple de créer soit des fichiers .MID ou .KAR avec le même contenu, mais à un rythme plus lent - par exemple, un ralentissait de 20% ou, une autre de 15%, un troisième de 25%, et ainsi de suite?

Idéalement, je préfère un script Python multi-plateforme (car cela me permettrait d'ajuster facilement expérimentalement la source à converger vers l'effet exact que je veux ;-), mais je vais prendre une solution gratuite qui fonctionne en Linux (Ubuntu 8.04 si elle importe) et Mac (Mac OS X 10.5, mais la compatibilité 10.6 préférée).

Était-ce utile?

La solution

Vous pouvez modifier le fichier, comme par http://www.sonicspot.com/guide /midifiles.html

Bien qu'il y ait sans doute une lecture MIDI / écriture déjà bibliothèque. En fait, il était question de voir les questions connexes: simple, multi-plateforme MIDI bibliothèque pour Python

  

Set Tempo

     

Cet événement méta définit la   tempo de la séquence en termes de   microsecondes par quart de note qui est   codé sur trois octets. Il est généralement   trouvé dans le premier tronçon de voie,   temps-alignés se produise en même temps   comme un message d'horloge MIDI pour promouvoir   synchronisation plus précise. Sinon   set événement de tempo est présent, 120 battements   par minute est supposé. Le suivant   La formule de peut être utilisé pour traduire le   tempo de microsecondes par   quart de note à battements par minute et   retour.

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

Autres conseils

Comme le dit Vinko, vous pouvez éditer le fichier MIDI, mais comme il est un format binaire, pressé dans le plus petit nombre de bits possibles, il est utile d'avoir de l'aide.

Ceci est un convertisseur MIDI-texte (et vice-versa):
http://midicomp.opensrc.org/
Je l'ai utilisé un peu ces derniers temps. il est assez trivial de faire du traitement de texte (par exemple la recherche de la ligne avec « Tempo ») pour les opérations simples une fois que vous avez la midifile sous forme de texte. ont pas essayé sur mac (compilé sans problème sur ubuntu 8.04).

En ce qui concerne le tempo de midifile Plus précisément, il est vraiment facile de ralentir ou d'accélérer la lecture depuis le calendrier des événements est spécifié en termes de « tiques », dont la durée réelle en secondes est déterminée par le paramètre de tempo décrit dans la citation de Vinko. Je crois que la signature de temps n'est pas si pertinente, et est principalement pour l'affichage des barres / bat correctement lorsqu'il est ouvert dans un séquenceur MIDI.

En outre, en dehors de pyPortMidi, il y a deux autres modules midi python autour.

[hmmm ... il semble que je ne peux poster sur le lien par courrier, étant un nouvel utilisateur. Je vais essayer de poster les liens vers les modules Python dans un commentaire couple ou d'une autre réponse couple ...]

Vous pouvez utiliser music21 pour ce faire, bien que je n'ai testé sur 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') 

Décalages sont comme les horodatages de chaque note, et la durée est combien de temps la note retentit, je crois que le même facteur présente une demande d'échelle à chacun est un peu comme le réglage du tempo.

Si vous êtes comme moi, vous écoutez les mêmes chansons 7 ans plus tard et peut donner à ce essayer! Sinon, j'espère que cela aide quelqu'un d'autre qui me suis réveillé aujourd'hui comme moi et était me gratter la tête en essayant de résoudre ce problème facilement.

J'ai un intérêt similaire à votre poste. Je viens suis tombé sur cette bibliothèque qui semble très prometteur:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top