DAW悪戦苦闘記

DAWやMIDIを通じてちまちまとDTMを楽しむ記録+MIDI検定1級到達記

2018年MIDI検定1級試験を振り返る (3) - 音色

以下記事の続き。最後の締めくくりとして、割と苦労した音源・音色について書き記す。

daw-jones.hatenablog.com

毎度お馴染みの西洋管弦楽器系については Studio One 付属の Presence XT サンプリング音色で十分対応可能であるが、今回楽曲で一番課題となったのは、龍笛と中国伝統楽器の扱いである。

龍笛および中国伝統楽器

オリエンタル楽器としては、主として雅楽で使われる龍笛と、中国伝統楽器の以下の2種類であった。

龍笛

Presence XT にはなく、またその他のプラグイン音源でもこの音色を保有していなかったので、止むを得ずピッコロで代用することにした。非常に高い音域を担うせいか、幸いなことに聴感上はほとんど同じような印象で、なんとか誤魔化せたと思われる。

なお、PresenceXT のピッコロのサンプリング音色には、ブツブツとリップ・ノイズのような雑音が若干混入しているため、ローパス・フィルター(Presence XT に音色パラメータあり)を適用して削り、丸みを出す。

二胡 (Erhu)

これはそのものずばりな音色が GarageBand にある。これをオーディオで書き出したものを再び Studio One に取り込んでミックスした。

揚琴 (Yangqin) または Dulcimer

今回個人的に一番苦心惨憺した音色である。他の受験者でもNI社のKontaktサンプラー音源等を保有していない人は非常に難しい工夫対応を迫られたのではないかと思う。

私は同音色を保有していなかったので、類似音色を合成することで対策を講じた。すなわち、ピアノ音色と、GarageBand にある古箏 (Guzheng) を混ぜ合わせる。幸い本曲では高域だけで鳴らしているために、結果としては当たらずと言えども遠からずな音色になったように思う。

しかしもし中低域で鳴らしているような楽曲だと代用が難しかった可能性がある。というのも、揚琴は中低域では一段とオリエンタルな雰囲気が加わり、なんとも言えない独特のエキゾチックな印象を抱かせるからである。私が言うのもなんだが、正直なところ高域ばかり使っている編曲はもったいない感じがした。

この楽器パートはトレモロを多用するが、ベロシティやボリューム変化で抑揚をうまく付けてあげないとシンセのように非常に機械的に聴こえる難点がある。この辺の調整には結構苦心した印象がある。

ドラム

譜面や制作規定書に明記はされていないのだが、編曲者コメントから類推するに、明らかに中国の打楽器を想定しているので、私は GarageBand の Chinese Kit 音色で差し替えた。ただし、これ単独だと線が細い印象があったため、通常のドラムキット音色を微かに上乗せ合成した。

譜面上シンバル連打の指定がある小節は銅鑼の音色に差し替えている。おそらく編曲者の意図としてはその通りなのだろうと想定する。因みに銅鑼の連打音色は上記の Chinese Kit に含まれている。

ミックスダウン

今回課題曲は、どちらかと言えば高域で鳴らすパートが多く、そのまま素で混ぜ合わせると、干渉し合って棘が出たりノイジーな感じが否めなかった。管楽器などは適度にローパス・フィルターを適用するなどして幾分まろやかに仕上げることもした。

抑揚表現が重要ポイントとなるクラシック系楽曲であることから、マスター含めてほとんどコンプレッサーは掛けないで編集し、ダイナミックレンジ維持を重視する。

受験対策めいた話

1級の楽曲は生楽器のシミュレートに偏重しているため、どういう方法であれ(有償無償を問わず)生楽器音源をある程度充実させておいた方が対応しやすい。

もっとも、Macユーザは GarageBand の付属音源で相当程度カバーできるからあまり心配は要らないかもしれない。自主制作におけるジャンルの守備範囲にもよるが、この辺はできるだけ無償音源で対応した方が賢明であろう。音源対策が必要と言いつつも、MIDI検定のためだけに高価な音源を導入するのは費用対効果の面から正当化できないだろうから。

逆に冨田勲ばりに敢えて全パートをシンセ音色でアレンジしてしまうという手もなくはないが、2次審査でどういう評価を受けるかは知りません(苦笑)。

2018年MIDI検定1級試験を振り返る (2) - MIDIデータ

以下記事の続きで、先日終了した本年度MIDI検定1級試験を振り返る。今回は、同検定の本丸とも言える譜面解釈やMIDIデータの打ち込みに焦点を絞る。

daw-jones.hatenablog.com

前回指摘した通り、本年度課題曲は比較的音数が少なかったのと、それに加えて9割方レガートの音運びであるせいで、ほとんどのノートを音価100%のままゲートタイム無修正で済ませたという事情も手伝い、打ち込み作業自体は非常に楽であった。

譜面解釈の要注意箇所

今回の楽曲で譜面解釈の観点から肝になると思われた表現は、以下の2点に絞られると思う。

ハープのアルペジオ

アルペジオについては以前に下記記事で書いた通りである。なお、ギターの例ではあるが、公式ガイドブックのp.228にも同様の概説が掲載されている。

daw-jones.hatenablog.com

1次審査上は、発音タイミングについては出だし最初の音のみ、ピッチについては全構成音でチェックされると思われる。ここは上例の通りに各構成音の下から(ルートに近い方から)発音タイミングを徐々にずらしていかないとアルペジオにならないので、横着して和音で入れるなどするとレギュレーション違反に引っかかるはずである。

トレモロ

トレモロは、単音のトレモロと2音間トレモロの2種類が出現する。単音トレモロは過年度課題曲演習で何度か取り上げた通りで、今回特筆すべき点はない。

daw-jones.hatenablog.com

その一方で、2音間トレモロは(確証はないが)おそらく今回初登場ではないだろうか。解釈・展開方法については、以下の楽典.comの解説を参考にした。例えるならば、結果としてトリルに似た表現となる。

楽典:略記法

移調楽器

今回楽曲ではクラリネット(Bb)が移調楽器に該当する。実音であるMIDIノートは記譜より2半音下げて入れることになる。私は過年度課題曲演習で体験済みだったので今回慌てずに対応することができた*1。上述のアルペジオトレモロもそうだが、やはり過去作品で何度か演習しておけば本番で焦らずに済む。

daw-jones.hatenablog.com

その他にはオクターブ調整が必要な楽器が2種類あった。すなわち、龍笛は1オクターブ上げて、コントラバスは1オクターブ下げて入力する。

コンティニュアス・データについて

本年度は抑揚表現が非常に大事な楽曲であったため、音量の変化をどう実現するかが一つの課題となる。いくつか方法はあるのだが、今回私は CC#11 Expression は使わずに Presence XT のパラメータである Gain のオートメーションと、トラック・ボリュームのオートメーションを組み合わせて編集してみた。

ここで Gain オートメーションを使う利点は以下の3点である:

  • CC#11と異なり、いちいちモジュレーション・マトリックスを定義する必要がない。
  • デフォルト値が真ん中の64になっており、音量上げ下げの相対位置を把握しやすい。CC#11だとデフォルトがゼロ値なので*2その辺の尺度解釈が難解になり、フェーダーの音圧レベルとの関係もわかりにくい。
  • カーブ・データは各MIDIイベントに紐付いたCC#7のデータとなるので*3、編集画面上でMIDIイベントごとコピペしやすい。すなわち、類似箇所に対して抑揚表現一体でイベントをコピーできる。これはCC#11と同じ。

ただし、1次審査用のSMFでは不要となるため*4、後で Domino などを使って手動削除する必要があった(その方が無難)。

f:id:daw_jones:20180823163245p:plain

f:id:daw_jones:20180823163341p:plain

ピッチベンド

ピッチベンド・チェンジについては、私は今回はまったく不使用であった。譜面上にスクープなどの指示が一切なかったので、少なくとも1次審査上は不要であると判断した。逆に下手に入れると思わぬ減点を食らう懸念がある*5

2次審査対策としては、強いて言うなら龍笛(およびその他の管楽器)はピッチベンドで音程変化させるとよりリアルな感じになりそうなところもあるにはあったのだが、聴感上ほとんど区別がつかない可能性もあり、結局譜面通りに音符ノートで入れた。ここは時間的な制約も考慮して判断を下す。

セットアップ・データ

各トラックのボリュームとパンは制作レポートの参考例通りに入れた。どうせ審査には関係ないので考えるだけ時間の無駄だという判断である。

また2級実技では定義されるリバーブとコーラスについては特に要請がないため、私は一切指定なしでデフォルトに委ねた。これらをセットアップで入力した場合、制作レポートにいちいち定義値を記入する必要があるかもしれず、かえって面倒臭いことになる。

なお、今回は珍しくも特定トラック(Jingle Bell)のみセットアップ・データなしの指示があった。これは Drums と共にチャネル10の指定になっており、Drumsの方で両者共通のセットアップ・データを送信するからである。

ノート・データの見直し方法

全ノートの正誤チェックに関しては、私は GarageBand のスコア機能を援用した。これについては下記記事でも書いたことがある。

daw-jones.hatenablog.com

この記事でも書いたように、ピアノロール上でのチェックはとても視認性が悪いので、作業非効率に加えて肝心なミスそれ自体の見落としリスクが高い。一方でスコア化した場合、単に見比べるだけで譜面との一致・不一致が一目瞭然となり、あっという間に検証できた。

*1:クラリネット(Bb)の移調は2016年課題曲でも出現した。

*2:Studio One ではそうなっているようである。他の音源やDAWだと異なる可能性がある。

*3:したがって、Studio One から GarageBand 等他のDAWにインポートしても捨てられずに残り、きちんと再生される。

*4:MIDI標準の流儀として、楽曲途中の抑揚表現はCC#7ではなくCC#11を使うことが通例となっているため。1次審査ではコントロール・チェンジは評価対象外だから放置しても問題はないが、一応念のために削除した。

*5:一般規定として、譜面指示があるところ以外はピッチベンドを使用してはならないというルールになっている。

2018年MIDI検定1級試験を振り返る (1) - 全体総括

先日の20日本年度第10回MIDI検定1級試験の制作期間が終了した。私もこの度受験・作品提出に臨んだ一人であり、体験者の端くれとして今回の課題曲と制作過程に関して3回に分けて振り返ってみることにしたい。合否は2ヶ月先の10月中下旬頃に到るまで不明の状態であるが、今後受験を検討される方の参考になれば幸いである。

オリエンタルな曲調が初登場

今回の楽曲は黄河をイメージした中国風なモチーフの作品*1で、作曲者は大浜先生、編曲者はおなじみ外山先生という初の組み合わせである。これは10回記念の例外なのかどうか、今後も作編曲者ペアの課題曲となるのかどうかは不明である*2

昨年度はラテン音楽がモチーフだったので、偶然ではあるが2年続けてエスニック・ミュージックがテーマとなった。ひょっとしたら2020年の東京五輪開催年には日本のエスニシティ、つまり邦楽とか音頭などの土着音楽がテーマとして取り上げられるかもしれない。まぁこれは私の勝手な妄想ですが。

少なかったボリューム

今回は16パート(トラック)、全部で41小節と格段にボリュームが少なく、スコアも4ページしかなかった。ページ数的には過去最少だったのではないか。

どうやら1級課題曲はその再生時間を2分30秒前後に統一しているようで、本曲はBPM=66*3と非常にゆったりペースであったために総小節数が抑えられた格好である。

この点は私を含めて本年受験者はとてもラッキーだったと思う*4。おかげで私は週末の10日から12日まで3日程度でほぼ完成することができた*5

GarageBandに救われる

今回の制作ではGarageBandに非常に助けられた一面があった。具体的には、MIDIデータのスコア化によるチェック検証と音色差し替えであるが、長くなるので詳細は追って記すことにしたい。

音色については、GarageBandの付属音源に含まれる二胡と中国打楽器キットがなければ苦しい事態に陥っていた可能性が高い。以前も指摘したことがあるのだが、GarageBandはまったく侮れない無償DAWだと痛感した次第である。

daw-jones.hatenablog.com

1次審査突破は容易だとは思うが...

MIDI検定1級の合否については1次審査で大方決まってしまう配点基準であることは周知の事実である。今回は上述の通り全体的に音数が少なく、また不協和音や臨時記号もほとんどない譜面であったため、アウトになる可能性は低いという感触は持っている。

2級実技でMIDIデータの見直しをサボった私もさすがに今回は2回見直したので大丈夫だとは思うものの、忘れた頃にやってくる10月中下旬の結果発表まではなんとも不安なままである。これだけ色々と書いておいて落第なら正直恥ずかしいですが。しかし約2万円の受験料もばかにならないのでなんとか1回でパスしたいところである。ともかく神経使って疲れたので当面は忘れていたい気分だ。

*1:主旋律はどこかで聴いたことがあるような割と凡庸な(!)フレーズの印象。なんとなくホルストの惑星組曲「ジュピター」中盤あたりの有名なメロディに似た感じがなくはなかった。

*2:昨年までは外山先生が単独で作編曲を手掛けていたと思われる。

*3:終盤でリタルダントによるテンポ変化あり。

*4:逆に例えば2017年楽曲は非常にボリュームが多かった。この種の当たり外れは如何ともし難いのだが、協会はもう少し年毎のムラをなくす配慮があってもよさそうなものだ。

*5:その後の見直し編集に伴い実際に提出したのは20日締め切り日ギリギリではあったが。

Courseraの機械学習入門講座雑感 (2)

前回記事の続き。今回は講義の中身に関して具体的な気づきなどを書いておこうと思う(ややマニアックです)。

daw-jones.hatenablog.com

講義内容に関して気になったところなど

Back Propagation

これが難解だという感想はよく見かけるのだが、要は計算がややこしいだけであって、基本的な考え方自体は割と単純だと思う。合成関数の偏微分が幾重にも入れ子になっている関係上数式の処理がやたらに煩雑なだけではなかろうか。

これは本講座ではきれいに整理された結果を簡潔明瞭に提示してくれているので、プログラミング課題ではその結果通りにコーディングすれば問題はなく、また実務レベルでは導出過程まで逐一なぞる必要はなかろう。結果の導出が気になる人は以下の資料などが参考なると思う:

Machine Learning Cheatsheet — ML Cheatsheet documentation

SVM

SVMの基本コンセプトそれ自体は大変わかりやすい解説がなされるが、その一方で kernel trick の説明はやや不十分に感じた。非線形性対応のための高次元写像というkernel関数の役目と援用理由についてちょっと説明不足で、一体何をやろうとしているのか趣旨がよくわからない、という印象を受ける。

ここは実務上それほど深く掘る必要はないとは思うが(通例使用するkernel関数は概ね決まり切っているので)、他の教科書をあたるか、またはネット上にわんさか転がっているチュートリアル動画や入門資料等を参照する必要がある。たとえば、以下のQuoraの資料などが参考になった:

What is the kernel trick?

PCM(主成分分析)

本講座では共分散行列から変数合成のためのウェイト・ベクトルを導出する方法が提示されており、これを特異値分解 (SVD; singular value decomposition) と呼んでいる。しかし他の教材では、共分散行列を経ずに元の特徴変数行列Xを直接分解して求める方法をSVDと呼称し、共分散行列のUV行列分解を固有値分解と呼ぶような例もある(こちら方が一般的であろうか)。ここは他書をあたるときにややもすれば混乱する可能性があると感じた。

あと、行列の添字とかタイポらしき混乱が少々あって、特徴変数行列Xの値を次元縮約して変換する数式の説明が若干わかりにくい。UV分解の結果、行列Uからk列抜き出してウエイト行列Wとして解釈すると X*W で新しい合成変数が m x k 行列として求まることがわかれば問題ないのだが。

なお、主成分分析が固有値問題に帰着することの証明・解説は割愛しているので、その辺をもう少し深掘りしたい人は別の資料をあたって理解する必要がある。個人的には以下の記事が参考になった:

blog.aidemy.net

異常値検知 (anomaly detection)

ここでは正規分布確率密度関数上の各一点をあたかも確率値のごとく解釈した使い方があり、ちょっと違和感を覚えたのだが実務的には問題ないということだろうか。本来確率は積分値で与える(定義される)はずなので、理論的に正当化できるのかどうか私にはわからず。この辺は一般的な統計仮説検定と分布の考え方や使い方が異なるように思う。

今後学習すべき領域(本コースでは足りないところ)

機械学習の基本理解と土台は本講座で十分過ぎるぐらい十分だと思う。ニューラルネットについてもいわゆる多層パーセプトロンまではカバーされるので、もっと高度なディープ・ラーニング手法を学習する出発点としてふさわしいレベルと内容である。

とは言うものの、一方で割とよく使われる方法・ツール等で割愛されたものも少なくない。これらは必要に応じて別の講座や教科書などで補足学習する必要があろうかと思う。

Pythonプログラミング

Octaveは研修やプロトタイピングならばともかくも、今日では実務で使われることはまずないようで、どういうパッケージを使うかも含めてPythonコーディングによる機械学習の実践演習が別途必要になってくる。

古典的な機械学習アルゴリズムやデータの前準備処理などについては scikit-learn が定番で、ディープ・ラーニングについては Keras を使用したプログラミングが標準的かと思う*1

Naive Bayes

ナイーブ・ベイズは非常に単純でひょっとしたら小中学生でも理解できるんじゃないかと思うぐらいだが(言い過ぎか)、テキスト解析ではいまだによく使われると聞いたことがある。

ベイズはさらに掘り下げるとベイズ統計学の広大な領域に踏み込むことになるが、データ・サイエンス一般では必須科目かもしれない。PyMC3 などのパッケージを使ったプログラミング講座があれば是非受講してみたいものである。

決定木 (Decision Tree)

特にその発展形でもあるアンサンブル学習の random forest は実務では頻繁に使われるようなので、実務家は勉強しておく必要はあろう。個人的にも非常に興味がある分野ではある。

ニューラルネットの発展とディープ・ラーニング

現在の花形であることは言わずもがな。音楽においても、MIDIデータのみならず音声・オーディオ解析でいろいろ応用の余地があるところでとても興味深い。

周知の通り、昨年夏に試用した Magenta の土台にもなっている。時系列データへの応用に適した RNN (Recurrent Neural Network) は Magenta でも使われており、音楽データの解析では盛んに使われているようである。

*1:バックエンドは Tensorflow とか CNTK などが代表的なものである。Theanoもバックエンド対象ではあるが、開発終了で命脈を断たれてしまったので今後の新規開発では依存しない方がよい。

Courseraの機械学習入門講座雑感 (1)

昨年夏に Magenta を試用するなどして機械学習を援用した楽曲制作の一端に触れる機会があったせいもあり、今後ますます音楽との接点が増えるであろう機械学習それ自体にも興味が湧いてきた。

daw-jones.hatenablog.com

もう少し掘り下げて勉強せねばと思いつつ、その後MIDI検定2級試験の準備などに時間を取られて遠ざかっていたが、機械学習入門のMOOCの中では最も定評のある Machine Learning by Andrew Ng (Coursera) の聴講を6月末より始め、ちょうどMIDI検定1級試験の本番を迎える直前頃に完走したので、ここで改めて振り返ってみることにしたい(ややマニアックな話です)。

ja.coursera.org

なお、本コースはさすが人気があるだけあって、受講体験記や感想記事の類をネット上で多数見かけるのだが(私もある程度参考にさせていただいた)、ここではなるべく他であまり指摘されていない点を中心に、屋上屋を架さぬよう簡潔にまとめようと思う。今後受講される方の参考になれば幸いである。

受講にあたっての前提知識について

数学

高校数学で十分との指摘はよく見かけるものの、私の感触では大学教養課程レベルの線型代数微積の素養はあった方が無難だと思った(特に線型代数)。偏微分と高次元行列・ベクトルの操作を扱うからである。高校数学といっても理数系でないと苦しいかもしれない。

これに加え、確率・統計学の基礎も一応はあった方がよい。少なくとも正規分布ぐらいは知っていた方が捗る。いずれも昔やったというレベルで問題ないと思う(私自身数学が得意というわけではなかったので)。しかしこの辺の土台がまったくないと、数式にアレルギー反応を起こしたり、プログラミング課題をクリアできない可能性が高まる。

プログラミング

Octaveは非常に簡便簡潔な言語なので、他の言語経験がなくともすぐに習得できると思うが、肝となる vectorization (行列演算化)に関しては R または Python (Numpy/Pandas) の使用経験があるとスムーズに移行できるはずである。

なお、このvectorizationは線型代数の理解と表裏一体であるから、ここで数学に拒否反応を示すとやはり前に進めなくなってしまう。

Octaveについて

学習言語としての適否

本コースは人気講座ではあるものの、プログラミング課題においてPython (+ Jupyter Notebook) ではなくOctaveMATLABを含む)を用いている点がしばしば批判と不満の対象になっている。

しかし、プログラミングの経験をほとんど問わない入門講座という位置づけを考えると、私個人はOctaveが結局のところベスト・フィットではないかと感じた。行列を多用した数式をそのままコードに落とし込んでサクッとプロトタイプを作り上げるには便利な言語環境だからだ。

インストール方法など

OctaveMacへのインストールに関しては、受講経験者のほとんどがHomebrewを使う方法を書いているようだが、実はOctave公式(?)サイトからIDE込みのバイナリー*1が提供されているので、私はそちらを強く推奨する。というのも、使用するMacの環境によってはHomebrewで入れようにもビルドに失敗して上手くインストールできない場合があるからである(私もなぜかそうだった)。

Octave for macOS - Octave

またOctaveの実行に際しては、ターミナルからではなくIDEを使った方がはるかに効率がよい。シンタックス・ハイライトをしてくれるエディター付きなので、コードの編集・修正も非常にスムーズである。ただし、現行バージョンでは Control + C による実行中断や、コピペなどのショートカット・キーが効かないという不具合がある。

ちょっと長くなったので、講義内容については稿を改めることにしたい。

*1:私が入れたのはSourceforgeからダウンロードできるv4.0.3のもの。

T7が無償開放へ (Tracktion)

Just a quick note だが、旧Tracktionシリーズの最終版にあたるT7が昨日より無償版として提供されるようになった模様である。

www.tracktion.com

合わせて現行主力製品であるWaveformへの乗り換えキャンペーンも実施中のようだが、Tracktion社としてはユーザを早期にWaveformへ移行させたい意図が透けて見える。

www.tracktion.com

T7はオーディオ編集の機能が拡充されて Studio One のPro版と遜色ないレベルに到達していると思われる。MIDI検定1級試験真っ最中の私はまだ試していないので、後日注目すべき点などがあれば試用レポートでも書いてみたいと思う。

明日よりMIDI検定1級試験の本番

いよいよ明日10日より第10回MIDI検定1級試験がスタートする。何を隠そう私も今回受験者の一人である。

1級は会場試験はなく自宅制作のみとなり、今回は8月20日が消印有効の提出期限となる。過年度課題曲演習を踏まえた私の経験では、概ね丸5日程度の制作時間を確保できればなんとか対応できると思われる。もっとも、ドラムまたはリズム・セクションの制作を伴わないクラシック風楽曲の場合は若干負担が軽くなる傾向がある。しかし、今回どのような楽曲で攻めてくるかは神のみぞ知る状況で、まったくのぶっつけ本番であることは言うまでもない。

当然ながら試験期間中は課題曲に関するコメントは差し控えるが、試験期間終了後に落ち着いたら受験体験記がてらに本年度課題曲を振り返ってみたいと思う。なんとか1回でパスしたいものだが...。