DAW悪戦苦闘記

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

バッハ気分に浸るツール

夏休みの自動作曲探求シリーズの第3弾。

daw-jones.hatenablog.com

今回は、アルゴリズム作曲ツールの変わり種である Abundant Music を試してみる。これは一言で言えば、バロック音楽生成機である。

最初にサンプルを聞いた方が雰囲気が伝わると思うので、以下に私がアレンジしたサンプル小品を掲載しておく。Abundant Music から書き出したMIDIデータをベースに*1、Studio One でミックス加工したものである。

使い方

上記URLにアクセスして所定のコンテンツ*2がロード完了すると、以下のようなメイン画面が表示される。

f:id:daw_jones:20170811195532p:plain

最も基本的な操作手順としては、

  1. "Song Settings" で生成パラメータを適当に調整・設定する。
  2. "Compose" ボタン押下で楽曲を生成する。
  3. 生成結果を "Player" にて再生確認する。
  4. 気に入ったら "Export" メニューよりMIDIデータをダウンロードする。

パラメータの設定と楽曲生成

このモデル*3はやたらにパラメータが多く、中でも擬似乱数発生のシード値を多数要求するが、基本的にはボタン一発のランダム生成によるお任せでよい(下図参照)。適当に設定したら、メイン・メニューの一番右端にある "Compose" ボタンを押してシステムに楽曲を生成させる。

f:id:daw_jones:20170811200910p:plain

再生確認

楽曲の生成が完了したら、再生確認してみる。非常に原始的なものだが内臓プレイヤーが付いているので、とりあえずそれで再生してみるとよい(下図参照)。インストゥルメントはデフォルトのままで問題ない。

f:id:daw_jones:20170811201625p:plain

再生音色はとてつもなくチープなピコピコ・サウンドだが、曲調は概ね確認できると思う。これはこれで味わい深いものがあり、ほとんど Switched-On Bach の世界を彷彿とさせる。もっとゴージャスなクラシック風楽曲に仕上げるのであれば、MIDIを書き出してクラシック用の音源音色を使うべきだろう(後述)。

MIDIデータの書き出し

気に入ったら "Export" メニューより "Export Midi" ボタンを押下してMIDIデータを書き出す。その際、下部のパラメータ群は特に触る必要はなく、デフォルトのままでよい。

f:id:daw_jones:20170811202503p:plain

サーバ側での書き出し処理後、下図に示すようなダウンロード用リンクが出現したら、そこをクリックして落とす。

f:id:daw_jones:20170811204945p:plain

生成されるMIDIデータ

本システムより書き出したMIDIデータに見られる特徴あるいは特異なところは、私が気づいた範囲では以下の3点である:

  • テンポ表現が細かく、メタイベントのテンポ設定メッセージ (Set Tempo) が多数書き込まれる。ただし、これはDominoでは反映されるが、Studio One に読み込んでも無視されるため、DAW側のテンポ・トラックで別途設定が必要となる。
  • コントロール・チェンジでコーラス(CC#93)やフィルター・レゾナンス(CC#71)といった音色調整メッセージが曲中でも書き出されるが、これに対応したGM音源を使用しない限りは効果を発揮しない。
  • 生成楽曲は十中八九クラシックなのに、律儀にも漏れなくリズム・トラック(チャネル10)が付いて来るのは奇異な感じがする。これはどう考えてもマッチしないので、削除するかミュートしてしまう方がいいと思う。

なお、生成された曲やデータはCC0著作権放棄)でライセンスされるため、ユーザが自由に使用または加工しても支障はない。

個人的な印象

面白いことに、何回トライしてもバロック音楽、あるいは、なんちゃってバッハな曲しか生成されない。おそらく、その種の音楽の分析データだけを集めて、各構成要素をマルコフ・チェーン的に合成しているのだろうと想像もできるが、和声、というか対位法のロジックがかなり厳密に適用されているようで、全体として不思議と違和感がない。いや、ひょっとしたら学習データは皆無で、初期値を乱数で与えて後はロジックだけで生成しているのかもしれない。

ジャンルの限界はあるが、出来栄えがそれほど悪くはないので、音色さえ上手くアレンジすれば、案外と劇伴とかゲーム音楽に使える可能性はある。少なくとも、私のように作曲技法の専門教育を受けていない者は絶対に自力で制作できない領域の音楽ではある。

*1:ごく一部でオクターブ調整やコードの微修正、補完パートの追加をやった以外はオリジナル・データそのままである。

*2:FlashとかJavaではなく、JavaScriptの塊のようである。特定のプラグインは不要。

*3:残念ながら生成アルゴリズムに関する解説資料は見当たらず。

本年度のMIDI検定1級試験がスタート

本日より11日間の締め切り日程で、第9回MIDI検定1級の実技試験がスタートした。私は来年受験予定のため今年は傍観者を決め込むしかないが、今回受験される方は猛暑に負けずに是非頑張ってください。

毎年盆休み連休に当てて実施してくれるが、休暇を取ったとしても実質10日間の制作期間をフルに使える受験者はそう多くはいないだろうと思う。今年のカレンダーでは15日までの5日間程度という人が大多数かもしれない。5日だと楽曲によってはちょっとギリギリな感じもする。

そういえば今年は受験者数は多少は増えたのだろうか。例年通りだと40〜50人という水準だろうが、小岩井ことりさん効果で激増、なんてことはないか(苦笑)。

以下記事でも書いた通り、昨年度の課題曲はクラシック調であったため、おそらく今年はポピュラーのジャンルで攻めてくると予想されるが、その分音数が格段に増えてノート打ち込みの労苦が増す可能性がある。昨年はリズム・セクションがなかったということも比較的打ち込み自体は楽であった一因だ。しかし今年はそうも行かないだろう。

daw-jones.hatenablog.com

いずれにせよ、年度毎のジャンル等に起因した難易度のブレは避けられず、またヤマを張ることもできないので、受験者としてはどのジャンルが来ても対応できるようにしておくぐらいしか有効策はない。そういう意味でも過年度課題曲の制作練習あるのみ、ということになる。個人的には難解なジャズ曲はできれば避けたいところだが。

WolframTonesの不思議な世界

夏休みの自動作曲探求シリーズの続き。

daw-jones.hatenablog.com

 

自動作曲とかアルゴリズム作曲と呼ばれる分野では、近年はニューラルネットをベースにした機械学習モデルが主役に躍り出た感があるが、それ以外の手法を使ったモデルも結構昔から多数存在している。

その中でもモデルが比較的単純明快で、なおかつWebサービスの形で気軽にお試しできるものとしてWolframTonesをちょっと検証してみる。

tones.wolfram.com

 

これの考え方の基本はセルラーオートマトンで、予測可能な何らかの規則性を持ったパターンと、完全なランダムとの中間の複雑性を持つため、音楽との相性が良いと期待される。

かなり雑駁に言ってしまえば、各楽曲ジャンルに特徴的な進行パターンを、隣接するセルの塗りつぶし推移規則に置き換えることでメロディやリズムの時系列を生成しているようである(当たらずといえども遠からず?)*1

アルゴリズムの詳細については本ブログの趣旨を大幅に逸脱してしまうのでこれ以上の深掘りは避ける。そこは別に知らなくとも触って楽しんだり実験したりすることは可能である。

使い方

誰でも直感的に使えるインターフェースなので操作法は自明だと思うが、参考までに下図を参照されたい。

f:id:daw_jones:20170805153158p:plain

基本操作は、"Music Style"セクションのジャンル・ボタンを押す毎にセルラーオートマトンを生成し、GM音源再生でその適否を耳で確かめる。この繰り返しである。生成パラメータや再生音色などはシステム側で適度に設定してくれるため、原則としてユーザが細かく調整をする必要はないように思う。

その他私が気づいた注意点としては、

  • 実際のところ生成パラメータを変えても、多くの場合はあまり大きな変化は生まれないようだ。
  • デフォルトは15秒の長さで非常に短い。概ね4小節前後の長さである。最大30秒まで設定できるが、さほど目立ったバリエーションは付け足されない。ただ単にリズム・パターンをそのまま延長しているだけのことが多い。
  • MIDIデータ (SMF) のダウンロードは可能である。上部のダウンロード・ボタンをクリックすると、MIDIおよびMP3、WAV、FLACの4種からファイル形式を選択できる。
  • 私の理解が間違っていなければ、利用規約上、本サイトの生成物の著作権Wolfram Research, Inc. に帰属する。私的利用と非商用利用は自由のようだが、加工した作品を公表したりするのは厳密には無理なようである。しかし、この点は事実上有名無実化しているようにも思う。なぜなら、オーディオであれMIDIであれ、ミックス加工してしまえば出自はまったくわからないからだ。

生成されるMIDIデータ

Chordana Composer 同様にマルチトラックのSMFが書き出される。ただし、1小節目は特にセットアップ用に確保されているわけではなく、冒頭のプログラム・チェンジと楽曲データは渾然一体となっている(下図Domino読み込み例を参照)。一応ベロシティもある程度細かく調整されてはいる。チャネル10はMIDIの標準規定通りにリズム・トラックに割り当てられている。

f:id:daw_jones:20170805183903p:plain

個人的な印象

このツールは楽曲ジャンルの指定が最大のキモだが、私が試した限りでは、Rock/Popと Hip Hop はモチーフとして使えそうなパターンを生成することが多い。結論としては、少なくともループ素材の生成ツールとして活用できそうである。リズムとメロディだけ頂くという手もありだろう。

しかし一方で、他ジャンルはほとんどランダム(デタラメ)な感じが強く、正直言って楽曲活用は厳しいのではなかろうか。むろん、現代音楽ばりに敢えて実験的な作品制作を狙うのであれば使えなくはないだろう。組み合わせる音源音色によってはかなりユニークな楽曲に仕上がる可能性を秘める(好意的に解釈すれば)。

*1:生成ロジックの概要については解説ページを参照。大元の考え方は、Stephen Wolfram の名著 A New Kind of Science が原点である。なお、セルラーオートマトン全般に関してはWikipediaの解説などを参照。

Chordana Composer よりMIDIデータ生成

前回記事を受けて、Chordana ComposerMIDI書き出し機能を試してみたので概要や特徴などをまとめておきたい。

daw-jones.hatenablog.com

なお、MIDI書き出しを含めたアプリ全体の機能概要については、2年前の記事だが下記「DTMステーション」のレビューも参照。

www.dtmstation.com

MIDIデータのエクスポート

手順はいたって簡単で、書き出されたSMFをメールに添付して送受信するだけである。

右上の共有アイコンをタップして「メールで送る」を選ぶと、添付ファイルの形式選択メニューが表示されるので、ここで「MIDI」を指定する。すると、該当のSMFがすでに添付された状態でメール送信画面が開くので、適当な送信先アドレスを入力して「送信」をタップすれば指定のメールアドレスで受信ダウンロードできる。

f:id:daw_jones:20170802153131p:plain

f:id:daw_jones:20170802153306p:plain

f:id:daw_jones:20170802153353p:plain

Studio One に取り込んでみた結果

意外なことに、メロディのみならず伴奏を含めたマルチトラックのSMFがエキスポートされる。どうせ申し訳程度にメロディだけだろうと期待していなかったので、ちょっとびっくりである。

下図のように、各トラックのMIDIイベント名にはチャネル番号が付いており、一応MIDIの標準規格に準拠してチャネル10("CH10")はリズムに割り当てられている。ただし、チャネル番号はあくまで名称レベルであって、後述するDominoと異なり Studio One では実際にMIDIチャネルの設定はされない*1。チャネル9はベースとなり、それ以外はユーザ側で適当な音色を設定すればよい。

f:id:daw_jones:20170802153836p:plain

下図ピアノのMIDIエディター例を見れば一目瞭然だが、楽器パートによってはベロシティが相当細かく設定されている。また微妙にタイミングをズラしてヒューマナイズを適用していることに驚愕する。本例は選択ジャンルがジャズだったので、たぶんスイングさせているのだろうと推測するが、意外なほど芸が細かい。他ジャンルでも後日確認してみたいところである。

f:id:daw_jones:20170802154035p:plain

ピアノは驚くべきことに Sustain (CC#64 Hold1) のデータも書き出している(下図参照)。ちなみに Presence XT は Sustain には対応している。ここまで来ると、ほとんど手弾き演奏をリアルタイム入力したのかと見紛うほどのデータで、これはなかなか侮れないクオリティだと思う。

f:id:daw_jones:20170802154134p:plain

ドラムについては、GM音源配列に準拠しているようで、ここでもベロシティはかなり細かく設定されている。

本例のようなジャズ曲は素人には難しいので、伴奏だけでも結構使えるかもしれない。たとえば、メロディは適当に入れてとりあえず伴奏を生成させ、その伴奏に合ったメロディを再度作り直すという逆運用も効果的な使い方の一つである。

なお、一生成物の曲長は40小節弱と短い。多くの場合これだけでは到底物足りず、楽曲を膨らますための追加の加工編集が必要となろう。一番安直なのは、同じメロディに対していくつかの異なる自動作曲結果を生成し、これらを適当にくっつけてしまうことである。

Dominoに取り込んでみた結果

SMFを取り込んでも Studio One では無視されるデータがあるため、Dominoに取り込んでもう少し詳細を覗いてみる。

まず、各トラック冒頭1小節目はセットアップ・データ用に確保されており、楽曲それ自体は2小節目から始まる。ここは標準的なMIDIデータの作成ルールをきちんと踏襲しているようだ。

f:id:daw_jones:20170802223647p:plain

ユーザによる加工編集用に重宝すると思われるのは、Conductor(メタイベント)トラックに調性やコード表記がマーカーとして書き込まれていることである。これらは Studio One には反映されないので、確認したい場合はChordana本体か、Domino取り込み結果を参照する必要がある。

f:id:daw_jones:20170802223958p:plain

Chordanaは伴奏生成用

曲長が短いこと以外に、Chordanaを使うにあたっての最大のハードルは、鼻歌レベルでもよいから何らかのモチーフのメロディを自分で入力(または録音)する必要があるということ。贅沢を承知で言えば、実際はこれとてかなり面倒臭い。なぜなら、それなりの鼻歌すら思い浮かばず七転八倒するのが素人の素人たる所以だからだ。

上で指摘したように、実はこれは伴奏(あるいはコード進行)生成機として割り切って使うのがベスト、というのが私個人の結論である。というのも、多くの場合は生成されたメロディーが聞くに耐えない珍奇な結果になっているからである*2。逆に皮肉なことに、伴奏だけはなぜか分不相応(?)なほどのクオリティで書き出してくれる。この点は上例のMIDIデータを見ても頷けると思う。

*1:Studio One の内蔵音源 Presence XT はマルチチャネル音源ではないので、いずれにせよMIDIチャネルは無関係。

*2:私が入力した元の鼻歌データがデタラメだということは差し置いておく。

自動作曲の探求 - ざっくりと3方策

MIDI検定の受験対策ばかりでは同じようなネタの繰り返しで飽きてしまうので、夏休みの自由課題研究というわけではないが少し趣向を変え、8月末あたりまで当面は自動作曲ツールについていろいろと集中的に探求しようと思う。

興味の動機

私のような素人かつDTM/DAW初級者がまったく白紙のキャンバスから一曲作り上げるのは非常に困難な上に下手すると苦痛ですらある。過去記事でも書いたように、コード進行理論を援用するという手もあるが、初級者だとコード進行だけではなかなか発想の喚起に繋がらず、正直言ってこの手法は結構上級レベルではないかと思う(私も何回か試してみた結果)。

となると、ある程度お膳立てされているリミックスが初級者には一番ふさわしい題材だとも言えるが、現状リミックスはクラブ・ミュージックがほぼ100%を占め、様式美というか暗黙の御作法みたいな縛りもあって、さすがにこればっかりではマンネリに陥りやすい。

そこで、完全自作とリミックスの中間みたいな塩梅のモチーフ生成手段として、自動作曲ツールに依拠するのも悪くはないか、と思った次第である。

自動作曲支援ツールの種類

ざっと調べてみたところ、私の勝手な理解では、ユーザの立場から見て概ね以下の3種に分類できると思う。

Webサービスやアプリの形態でお手軽にすぐ利用できるもの

これはユーザ側の知識や技量を前提としないタイプが多く、一番取っ付きやすい。有償のみならず無償で使えるものも少なくない。個人的に一番気になっているのはJukedeckであろうか。まだ全然試してはいないが、案の定機械学習モデルがベースとなっており、比較的クオリティが高そうである(制限付きで無償利用可能)。追って試用レポートを書く予定。これ以外にもいくつか試用候補はある。

www.jukedeck.com

 

お手軽アプリであれば、おそらく最も有名なのはカシオの Chordana Composer (iOSアプリ)だろうと思う。実は私もすでにiPadに入れていて何回か使用したことはあるが、今までまったく本気で使ってはいなかった代物である。

機能概要を見ると、創作曲のMIDIデータもメール送信できるらしく(今初めて気づいた)、この辺はもう少し深掘りして試用レポートを書こうかと思う。MIDIデータを Studio One や Tracktion に取り込んで加工編集すれば面白いことができそうだ。

ユーザによるプログラミングを要求するもの

今はニューラルネットを応用した機械学習モデルが主流となっている分野。AI・機械学習ブームのおかげで近年になって盛り上がりを見せている。

この種のものではGoogle発のMagentaプロジェクトが代表的な存在である。ただし、この分野は当然ながらPythonなどのプログラミングが最低限できないとお手上げである。Magentaについては、上手く行くかどうかは未知数だが、後日試してみたいと思う(まさしく夏休みの自由課題研究)。

magenta.tensorflow.org

イマジネーションを掻き立てやすい変わり種のシンセや音源

上記2者とやや趣が異なるが、作曲と呼んでもいいようなモチーフを生成してくれる進化したシンセや音源といった製品も出てきているようで、以前「DTMステーション」で紹介されていた BT PHOBOS などが典型かと思う。Tracktion社が出しているBioTekとかWaverazorなどもそれに近い印象を受ける。

www.dtmstation.com

MIDI検定1級課題曲をDominoで再生

MIDI検定1級課題曲の制作では、Studio One で作成した楽曲データのSMFにセットアップ・データを付け足し、Dominoで微修正を加えて完成形のSMFを書き出す*1。2016年課題曲を例にすれば、最終的には以下のようなMIDIチャネル構成とイベントリスト(一部)が出来上がる。

f:id:daw_jones:20170724194533p:plain

セットアップ・データの追加加工処理については、Pythonを使って一括バッチ処理で対応する手順・方法などを下記シリーズ記事にて書いたので参考まで。もちろんこれは手動編集でも全然問題はない。ただし、1級はトラック数が多いゆえに非常に手間が掛かることになると思う。

daw-jones.hatenablog.com

Dominoでの微修正項目

楽曲の基本データは Studio One 側で完成させるが、SMFとしてはまだ若干不完全なところが残っており、Dominoで最後の修正・調整後に最終成果物としてのSMFを書き出して完成となる。

コントロール・チェンジ等のごく一部修正

各トラック冒頭部分のピッチベンド・チェンジ(PB)およびコントロール・チェンジ(CC)のデータについては、一部でわずかな修正を加える必要がある。

実は Studio One から書き出したSMFでは、上記セットアップ・データとは別にPB/CCの初期値設定などが1小節目に入ってくる場合があるため、これらは削除するか、または必要であれば2小節目以降に移動する。

チェック対象は、PBおよびCCの3種(CC#1 Modulation、CC#11 Expression および、稀に CC#64 Hold1)のみ、しかも各トラックとも頭の部分だけである。したがって、手作業修正でも時間を要さず、きちんと目視確認して編集する方が簡単かつ確実だと思われる*2

注意すべきは、削除・移動する場合にはセットアップ・データの一部ではないことをイベントリストで確認することである(下図CC#11 Expression の例参照)。

f:id:daw_jones:20170723202138p:plain

ボリュームとパン

Studio One でのミキサー設定を相対基準として参考にしつつ、セットアップ・データ上に適当な値を入れる。これはPythonでのバッチ処理で対応を済ませてもよい。

各トラック毎ボリュームとパンの設定値は作業レポートに記入提出する必要があるが、評価の対象には入らないようなので、あまり凝った調整はしなくてもよいと思われる。

バーブとコーラス

バーブは全トラック共通の値(40とか50とか適当に)でも特に問題なかろう。コーラスは必須というわけでもないので全トラックともにゼロ設定で別に支障はないと思う。

なお、リバーブとコーラスについては作業レポートに記入する必要はなく、またどのみち評価対象外だから適当でよい。

ベンドレンジ

特定の楽器パート(トラック)によってはPBを表現手段として使うことがあるので、その場合はベンドレンジの設定を忘れないようにする。Studio One では Presence XT の方でベンドレンジを設定するが、この設定値はSMFには書き出されない。

2016年課題曲では、バスクラリネットで1箇所だけグリッサンドに対してPBを適用しており、ベンドレンジを"5"に設定する(下記記事参照)。

daw-jones.hatenablog.com

2016年MIDI検定1級課題曲をDominoで再生

GM音源再生は2級実技演習では散々やってきたが、今回初めて1級課題曲をGM音源で再生してみた。

案の定あまりにもチープなサウンドで、特にバイオリンが酷い音色であることに絶句するしかなかったが、この再生音質は1次審査の評価対象外だから特に気にする必要はない*3

要は、発音タイミングや、オクターブ等移調後のピッチがおかしくないかどうかを中心に、MIDIデータの正否を耳でざっくりチェックできれば十分と思う。

*1:CubaseSonarなどMIDIイベントリストの表示・編集機能が充実しているDAWを使うのであれば、ここで書いているようなDominoでの後工程処理は不要である。

*2:削除すべきか移動すべきか楽曲やパートによって例外があるため、ここは敢えてPythonでのバッチ処理では対応せず。

*3:1次の審査対象はMIDIデータ(ピッチとタイミング)のみ。また2次の芸術審査についてはGM音源を使わなければよい。

PythonでSMFを操作する (7) 不要メッセージの削除とファイル保存

前回からの続きだが、PythonによるSMFの編集加工シリーズは一旦これで終了とする。ここまでの一連の操作を経た修正後のSMFをDominoに読み込み、再生してみた結果については稿を改める。

daw-jones.hatenablog.com

不要メッセージの削除

前回まで放置したままであったが、Studio One から書き出したSMFに付け足される固有のメタメッセージは特に必要ではないためSMFから削除したい(下図参照)*1

f:id:daw_jones:20170722220059p:plain

 

本例のように、こうした不要メッセージの位置が固定されているのであれば、リストのpopメソッドを使って容易にピンポイントで削除できる。ここでは2番目のメタメッセージを削除する(インデックスはゼロ・ベースなので"1"を指定)。

# 2番目のメッセージを削除する
track1.pop(1)

 

固定位置でない場合は、例えばメッセージ・タイプで特定する(msg.type == 'sequencer_specific' というような条件で絞り込む)などして消去することになろう。ただし、全メッセージを上から下までスキャンするため処理効率は悪くなる。

編集後SMFオブジェクトのファイル保存

SMFオブジェクトは、ファイル書き出し保存のためのsaveメソッドを持つ。したがって、これを呼び出すだけで書き込み完了となる。

なお、ファイル・フォーマット種別はデフォルトではSMFオブジェクトが持つtype属性をそのまま引き継ぐ*2。Studio One から書き出したSMFはタイプ1なので、通常は特に指定しなくともタイプ1を継承して保存される。

# SMFオブジェクトmidをファイル名'smf_studio1_edited.mid'に保存する
mid.save('smf_studio1_edited.mid')

*1:MIDI検定では審査対象にならないのでそのまま放置しても別に問題はない。

*2:SMFオブジェクトの属性については過去記事を参照。