eki_docomokiraiの音楽制作ブログ

作編曲家のえきです。DTM/音楽制作で役立つTIPSを書いています。

(連絡用記事)DAWでテンポをスロープするとMIDI的な互換性が無くなる話

(連絡用記事)資料、雑記です。MIDIやりとりで生じるミスについて書いておきます。今回はテンポ(BPM)の話のみ。

 

 

■結論を先に書く

結論だけ書くと、

BPMに小数点を使わない」

DAWの傾斜機能を使わない」

です。

とは言ったものの、MIDI分解能の都合上、細かすぎるMIDI分解能で作った場合や、細かすぎる位置指定を行った場合には、データ互換性は保証されません。

なので、もう1つ追加して、

「拍ちょうどでテンポ操作する」

の3つに注意するべきです。

 

MIDI分解能とかについては割愛。こんな話に興味を持つなら当然知っていることなので。

 

BPMの僅かな差で個性を出そうとする人がたまにいますが、後々のデータ互換性などを考えるとやめた方が良いです。

「今回の曲のBPMは134、いや、135……うーん個人的には134.5ってとこかな」とか言ってた阿呆がいましたが、そんな些末な違いは曲の出来に何の影響ももたらしません。曲の終わりタイミングをピッタリ合わせなければいけない仕事で必要になることが稀にありますが、そういう時は出来上がったオーディオをストレッチしてすり合わせをした方がスマートです。

 

 

■テンポの傾斜

DAWの独自の機能です。互換性はほぼありません。

偶然一致することもあります。

MIDIシーケンサーによってはBPM1は扱えないので注意が必要。(最低値20や30,最高値が255や300、などの違いがある。)

小数点テンポが正しく扱えない、またはズレる。

傾斜テンポ処理はDAW固有のものである。

MIDI分解能によって誤差がある、というか、「傾斜テンポをどの音符単位で算出するか?」という形式のものもある。Studio Oneとか。

どっちが良いとか悪いとかじゃなくて、方針の違い。個人的にはStudio Oneの方式が「正しい」とは思うが、Cubaseの方が自由度がある。ただし他の環境での再現性に欠けるよ、ということ。

 

■例1

BPM1から2へ、100小節かけて傾斜した例です。

Cubaseでは画面上部の「情報エリア」でテンポの「タイプ」をクリックして「引き寄せ」に切り替えると傾斜モードになります。

f:id:eki_docomokirai:20181003140741p:plain

MIDIエクスポートし、MIDIシーケンサー(XGWorks)で表示してみるとバグってます。

そもそもテンポ1を受け付けません。

最低値として1を扱えないだけではなく、途中で完全にバグっています(中段の赤いか囲み)。

f:id:eki_docomokirai:20181003140809p:plain

これはXGWorksに限ったことではありません。

 

DOMINOでも表示してみます。

DOMINOでは小数点を扱えていますが、はやり数値がバグっています。内容はおおむねXGWorksの数値に近いです。

f:id:eki_docomokirai:20181003143505p:plain

 

■BPM20から21へ、100小節の傾斜

より一般的なMIDIシーケンサーが対応できているBPM20を最低値にしてみます。

同様に100小節かけてテンポを+1する傾斜です。

f:id:eki_docomokirai:20181003140747p:plain

 

当然ですがこれも傾斜が正しく処理しきれません。

20で開始し、20で終了しています。つまりテンポが一切変化していません。

f:id:eki_docomokirai:20181003143752p:plain

 

DOMINOの場合は、傾斜の計算で明らかなミスが出ています。

元データを作ったCubaseでは「1小節目がBPM20」のはずが、DOMINOでは1小節目でいきなり「19.969」になっています。

f:id:eki_docomokirai:20181003144013p:plain

■そこでこんなものを作った

1,テンポを120固定のサンプルを作る。

f:id:eki_docomokirai:20181003160108p:plain

 

2,テンポを120から5分かけて121に傾斜上昇させるサンプルも作る。

f:id:eki_docomokirai:20181003160112p:plain

 

2つのオーディオはどちらも5分ちょうどで終わる。f:id:eki_docomokirai:20181003160115p:plain

 

2つ目のサンプルのためのテンポ位置は、プロジェクト表示を実時間モードにし、終了テンポ位置を実時間で指定すれば良い。情報ラインから正確に入力できる。

 

また、制作したサンプルはゼロクロスポイントを除去し、5分ちょうどで終わるようにカットする。

mp3書き出しだとズレることがあるので、必ずオーディオサンプルの長さを確認する。

通常にwavで書き出せばズレることはまず無い。が、こういう検査ファイルを作る時には必ずデータの詳細を確認する。

 

■暇人は試してみてね!

1。BPM120固定で5分

2。120開始、5分ちょうどで121に向けて傾斜

 

この2つが異なるDAWでどう出力されるかを確認する。

 

ただし、DAWによって書き出された音にはDAWのエンジン差(演算方法の違い)によってわずかな違いが生じるので、タイミングのみを確認する。

 

あー、余談ですが「DAWごとに音が違うのか、同じか」の話題がたまに出てきますが、演算方法によって違います。同じ訳がないです。DAWはファイルを右から左に複製するコピーソフトではなく、オーディオ演算をする計算機です。だから当然違います。論じるまでもありません。DAWにwavを入れて何もエフェクトせずに書き出しをしても、当然違う結果になります。演算上の差が出にくいオーディオなら例外的に同じ内容に出力されます。

OS上でファイルをコピーしてバックアップファイルを残しておく操作とは根本的に違いますよ、という意味です。

同様に、DAW上でファイル(トラック)を複製するのと、書き出す(演算処理させる)のもまったく別の操作です。

DAWによって音が違うのか?」という命題でいろいろ実験してる人がたまにいますが、そういう実験をやっている人は、ほぼ例外なく実験方法を根本的に間違えています。

 

 

 

■以下、報告まとめ

 

FL studio

テンポ管理が独自形式なので完全にNG

近年のFLは途中で拍子を変える機能がついた。劇的な進化である!

 

Ableton Live

テンポ変動データは読み込めるが、おそらく小数点を処理できずにタイミングが完全にズレる。実用レベルの互換性無し。

 

■Studio One

わりとOK、小数点誤差もおそらく大丈夫。

© docomokirai 2017 非常識な無断転載、商用利用を禁ず