2014年10月5日日曜日

MIDIにおいて再生時間を算出する数式・公式のメモ

MIDI関連のソフトやプレーヤーが如何にして再生時間を算出しているか考えたが、きっかけは1分30秒などに制約された音楽を作る際に己の頭で数字を割り出したいという探究心だ。

結果、見出した数式(何分何秒ではなく秒数を割り出す式)
小節数×拍子数÷(テンポ÷60)=秒数である。
最後に余った拍を計算に加えると、もう少し正確な数字(1~数秒単位補正される)になるが、まあそこまでこだわる必要もないとは思う。

例えばここにテンポ222、小節数125、4分の4拍子の曲があるとする。
125 * 4 = 500、 222 / 60 = 3.7、 500 / 3.7 = 約135秒が算出された。
その曲のMIDIファイルは、DominoやTMIDI Playerには2分14秒と表示されるが秒数換算で134秒になる為、この計算式は極近い数字を堅実に算出できるわけだ。


次に、特定の再生時間にしたくて、テンポを調整してその再生時間に変えるための数式も書く。
もしここに1分41秒でテンポ106、45小節4拍子の曲があって、1分30秒(1分半)にしたい場合は?

それぞれの時間を秒数にして101 / 90 = 約1.12ということはパーセンテージ112%。
テンポの106 * 1.12 = 約119でテンポ119を指定すれば約1分30秒になろう。
この計算で用いたのは、曲テンポと秒数と変えたい秒数のみであるが、最初の公式と同じ要領で証明すると、119 / 60 = 1.98、 45 * 4 = 180 / 1.98 = 約91 (1分31秒)となる。
1秒余りが不満ならばテンポを上げるなど適宜調整。

逆の例で、1分30秒より短い曲を1分30秒に変えるにはどうすればいいか?
1分16秒(76秒)でテンポ94、30小節4拍子の曲があるとする。
先ほどの例と同じように計算「76 / 90 = 約0.84、 94 * 0.84 = 約79(ここで当該テンポ確定)、 79 / 60 = 約1.32、 小節30 * 拍子4 =120、 120 / 1.32 = 約91」。
こうしてまたも約91秒(1分31秒)が算出されたがこれも不満な場合テンポを上げるなど適宜調整。

いずれも公式は「曲テンポ×(曲の秒数÷変えたい秒数)=変える為のテンポ」である。
その証明が最初の公式「小節数×拍子数÷(変えたテンポ÷60)=秒数」だ。


↓記事書きながら電卓打った様子(誤入力も含まれてるので参考にしちゃいけない)


実用数学講座「實數講 MIDI音楽での証明」

計算に用いた良サイト様「電卓ノート」→http://calculator.keydam.com/


※注釈※
公式に唯一固定された数字として「60」が書かれてるわけだが、無論この60は再生時間(秒数)基準の六十進法であるため必ず60でなければならない。
ただ、体感のテンポ200だが、定義が100とされる曲の場合には60ではなく倍の120などの倍数か約数を用いる必要があるので適宜、臨機応変に変える。
「適宜、臨機応変」というと、4拍子以外の曲で同じように計算したい人も各自におまかせ。
MIDIファイルの無い楽曲で試したい場合、最低限テンポと再生時間だけは知る必要があるが、これは各自でその好きな曲を調べるか、テンポBPM計測のツールで計ってもらいたい。


0 件のコメント:

コメントを投稿

当ブログのコメント欄は、読者から、当ブログ記事の誤字・脱字の報告や、記事の話題に関する建設的な提案がされる、との期待で解放されていました。
しかし、当ブログ開設以来5年間に一度もそのような利用がされませんでした (e.g. article-20170125, article-20170315, article-20190406)。
よって、2019年5月12日からコメントを受け付けなくしました。
あしからず。

注: コメントを投稿できるのは、このブログのメンバーだけです。