eki_docomokiraiの音楽制作ブログ

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

Cubase備忘録、ロジカルのバグ攻略(1)

Cubase話。ロジカルエディターのバグ込み挙動について書き溜めるページ。

バグ利用技なのでバージョン違いでの再現性は謎です。

まじめに読む内容ではありません。

f:id:eki_docomokirai:20200601094223p:plain

(2020年6月1日更新)

 

 

■このページの概要

Cubase9.5でロジカルエディタのバグ込み挙動についてメモる。

完全にクソゲーなので、まじめにロジカルの勉強をしたい人は読まない方が良いです。

 

なお「バグ」と決めつけて呼んでいますが、ユーザーから見ればバグでしかないからです。つまり広い意味での「バグ」です。それを「仕様です」という言葉は製作者側の甘え。もし「仕様です」と言い張るなら、一切の修正は必要ないってことになるでしょ?

Cubaseは過去資産が流用できることをメリットにしているが、どこかの段階で抜本的に直すべき。どうせちょこちょこ変更してるし、旧プラグインも捨てているんだし、やっちまえと思ってる。もし旧ロジカルを流用したいならブリッジ的な仕組みを作れば良いだけのこと。(言うは易し)

なお、この記事のように「バグ」を前提として、無茶な方法で道具を使うことを『バッドノウハウ』と呼びます。

makitani.net

 

■経緯

たとえばこういうマクロは挙動が若干重たくなる。

f:id:eki_docomokirai:20200601092738p:plain

いや、重くはないんだけど、先日の作業でちょっと重い気がしてイラついた。

 

・複合、共有化

これについてはFlowlight氏の記事が非常に丁寧に説明している。

flowlight-music.com

偉い!正しい!良い子のインターネッツだ!

 

だが、最大の問題点として、Flowlight氏の組み込み方法では「アフタータッチ」を1ロジカルに記述できない。

今回作っている音色データではどうしてもアフタータッチ(AT)を使う必要が生じた。せっかくなのでATを組み込んでおこう、とロジカル組み作業に取り掛かる。

 

これが思いのほか難航したので、ブログのネタにする。

 

・間違った実装

(これはミス例です!)

変換実行の値2はCC、値1はAT。

良い子のみんなはこれで正解。教科書どおり。楽勝ホイホイ。そう思うかもしれない。

f:id:eki_docomokirai:20200601093358p:plain

(プロパティ 等しい 選択イベント)and

(タイプ 等しい CC or

 タイプ 等しい AT)

--

値2 足す 20

値1 足す 20

が、ダメ・・・!

行けると思うだろ?できねーんだなこれが。

眉間にシワを増やしたい人は実際にやってみてください。

 

 

・値2処理の誤爆対策

値2。正確には「値 2」(半角スペースつき)。

さらに残念なことに値2はピッチベンド(PB)でも使われる関数なので、PBが選択されているとバグった挙動を誘発する。

だからまずPBを除外しなければならない。

ついでにノート(ベロシティ)も除外しなければ、ベロシティも誤爆する。

 

ブール演算子は上段のみなので、「選択CCは処理ccで、選択ATは処理atを」という分岐はできない。

 

つまりこれが上段の正解。

f:id:eki_docomokirai:20200601100133p:plain

選択イベント、つまり全て且つ「ノートとPBを除外」という意味になる。

 

下段を含む正解はこれ。下段の実行対象はまさかの「未設定」。

f:id:eki_docomokirai:20200601100047p:plain

f:id:eki_docomokirai:20200601100050p:plain

よくあるロジ例のように「CCを値2で+20」と「ATを値1で+20」という、異なる操作はできない。やってみれば分かるんだけど、ATだけ動いてCCが動かない「仕様」になっている。

これを打開するために、値1/2を使わずに「未設定」が活躍する。

 

 

・シン・クソゲー開始

上げ時に0.2000を使うのはともかく、下げる時の0.1570とは何か?

f:id:eki_docomokirai:20200601094223p:plain

上げは+0.2000でCC/ATが20上がる。

下げで-0.2000だと元の数値に戻らない。

 

来た。これはアレだ!マジックナンバー攻略だ!

 

マジックナンバー

マジックナンバーとはプログラミングにおける「ゴリ押し」のことです。(おい)

xtech.nikkei.com

+0.2000に対し、-0.2000だと元の数値に戻らない。

じゃあその差分を突き詰めていけば良い。どうせMIDI CCの数値なんて128段階しか無いんだから数回の施行で合わせられる。(※このゴリ押しは、数年後にはMIDI2.0の実装によって必ず崩壊することを意味しています。)*1

 

これは昔のロジカルで正確な12半音ピッチベンドを実装する時に死にものぐるいで算出したマジックナンバー拙著参照)に近い。完全なクソゲーだ。

「先生、授業で習ってません」と女児になじられ、学級崩壊を誘発しそう。ブサメンしか居ないエリート校なら「先生、これは簡単な応用ですね」で通じるかもしれない。

こういうことをやるのは私と相葉氏(@makoto_aiba)くらいしか居ないと思う。本を作る時に何人かに相談したけど、こういう変態実装に対して「なにこれ」と言われた。

なお、過去にヤマハのインストラクターの前でこういうのを実演して見せて、眉間に深いシワを刻み込むエージング攻撃にも成功している。

・マクロ実装は順序が命

先程除外したVelとPBをマクロで追加。以下の順でマクロにまとめる。

f:id:eki_docomokirai:20200601100056p:plain

この順番もどうでも良いと思うかもしれないけれど、「ATとCCを+20」が後段になると動かない。思った通りにマクロが動かない時は順番を入れ替えてみよう。

 

以上のメンテにより、マクロを数行減らすことができた。ほんの少し挙動が軽くなる。はず。

 

なお、Cubase10.5系では順番入れ替えが「削除」を使わずに行えるとのことですが、私はまだ買う予定はありません。

 

クソゲーとはドMではなく、サディストである

昔のゲーム知人が移動中にもPSPクソゲーをやり続けていたので「もしかしてクソゲーが楽しくなってきたか?」と茶化すと、こんなことを言っていた。

「二度とやりたくないから、今やるんだよ。」

 

ゲーム実況配信などでクソゲーばかりやる人のことを「ドMですね」と笑う人は多い。しかし、クソゲーマーとはドMではなく、今この場で全てを征服しようとするサディストだ。しかも他人の力を借りずに自らの手で屈服させようとする極度のサディストなのだと思う。「いつやるのか?今でしょ?」で一斉を風靡した林修氏はたぶんクソゲーに強い。

*1:でもMIDI2.0でビットが増えたら、正確な数値の意味も薄れるから問題無いよね、とも言える

© docomokirai 2017 無断転載、商用利用ならびに「音響DTM系のアフィリエイト広告を主目的としたウェブ活動」での利用を禁ず
レッスン案内はこちら。  寄付はこちら