DAW悪戦苦闘記

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

譜面解釈とMIDI表現 (4) トリル

MIDI検定1級課題曲では、トレモロ (tremolo) と並んでトリル (trill) も頻出表現の一つである。2016年課題曲では、ピッコロ等管楽器パートに1箇所出現する(下例参照)。

f:id:daw_jones:20170706185328p:plain

 

通常は、親音符からスタートして2度上の音*1と素早く交互に弾き、最後のみ3連符にして親音符に戻ることで終止する。スピードは楽曲によりけりだが、通常は16分音符か32分音符とすることが多いようだ*2

上記譜例では、トリル記号の上に小さくシャープの臨時記号が追記されている。ピッコロだけ親音符がB3で2度上の音はC4となるが、さらにもう半音上げてC#4と指定する例である。したがって、上例の場合は親音符B3とC#4の組み合わせで奏でることになる。以上より、MIDI打ち込みの例は下図のようになる(32分音符で演奏した場合)*3。 

f:id:daw_jones:20170709130423p:plain

 

MIDIで再現する際、機械的な印象をできるだけ避けるために、ヒューマナイズを適用して発音タイミングを微妙にズラすのも一法である(出だし最初のノートは除く)。ただし、刻んでいる各ノートが重ならないように注意する。

*1:ピアノの鍵盤で言うと、隣り合う白鍵同士の関係。

*2:詳しくは、楽典.comの記事を参照。

*3:1級1次審査では、最初の親音符のピッチとタイミングだけチェックされると思うので、後は自由に表現できる。スピードを途中で変えるような演奏も考えられ、16分音符で始まって途中から32分音符にするなどの工夫も可能。

苦境のSoundCloud

SoundCloudの経営が危機的状況にあることは以下の過去記事で少し触れた通り、すでに周知の事実である。

daw-jones.hatenablog.com

 

これに加えて、つい先日大規模なリストラ策が公表された。

www.itmedia.co.jp

元ネタはBloombergの配信ニュースである。

www.bloomberg.com

 

Bloomberg記事の末尾パラグラフ(以下引用)で締め括られている通り、SoundCloudに限らず音楽コミュニティのフリーミアム・モデルはどの業者も総じて収益化に辿り着いていない惨状が露わになっている。呼び水としてのマーケティング・ツールにこそなれ単独での事業化は相当厳しい印象を拭えない。

Pandora Media Inc. has never had an annual profit, and just sold a minority stake to online radio company SiriusXM. Spotify’s losses have grown despite rapid consumer adoption. Meanwhile, companies such as Apple and Amazon.com Inc. use music to draw users for their broader businesses.

こうした収益化に苦しんでいる状況は、Tumblrの先行き不透明感とかなり重なるものがあり、以下の New York Magazine 記事はいろいろと考えさせられた。あくまで結果論だが、SoundCloudにしてももっと早い段階で有料モデルを主軸として導入した方がよかった可能性はある(スパム対策も含めて)。

nymag.com

追記 (7/14):

上記大規模リストラ策公表後のフォローアップ記事が TechCrunch に上がっていた。社員の生々しいコメントが取材されている。

想像以上に厳しい状況のようで驚愕した。キャッシュは50日持つか持たないかのレベルにも関わらず、大手他社による買収策は除外して独立を保つことに固執しているようで、社員の士気も地に落ちている。

破綻後にタダ同然で大手に吸収される可能性もあるが、リニューアル等の目的で一時的にせよサイトが閉鎖されるケースもありうるのではないか。バックアップ取ってないユーザは早めに確保した方がいいかも。

jp.techcrunch.com

techcrunch.com

%表記から値(バリュー)表記への変更 (Studio One)

Studio One の知っているようで知らないかもしれない小技について2回目。

Studio One でのベロシティやコントロール・チェンジなどの編集において、レベルの表記はデフォルトではパーセント単位(0%〜100%)になっており、MIDI検定等への対応で苦慮する場合がある*1

実はこの表記は切り替え可能で、ベロシティなどのゲージ領域で右クリックし、"Percent" か "MIDI" のいずれかを選択できる。デフォルトのパーセント表記ではなく値表記(0〜127)にしたい場合は、後者の "MIDI" を選ぶ(下図参照)*2

f:id:daw_jones:20170707220250p:plain

 

蛇足ながらベロシティについては、選択範囲のノートに対して一括変更を適用することも可能である。ノート選択後に右クリックでコンテキスト・メニューから Velocity を選ぶと、下図のような一括編集パネルが開く。たとえば、現状の半分の値にしたい場合は、Compress 項目において "1:2" と入れる。

f:id:daw_jones:20170707220317p:plain

f:id:daw_jones:20170707220340p:plain

 

自主制作上はパーセント表記でもまったく問題なく、またMIDI検定1級では受験者が自由に表現可能なのでこれもパーセント表記でなんら支障はない。

しかし、強弱記号は種類がそこそこ多い上に、個別のノートにアクセント記号も付くため、拠り所としてなんらかの基準に従っておいた方があれこれ迷う必要がなく作業を円滑に進められる。なので、一応は協会推奨のルール*3に準拠しておいた方が楽であり、そのためには値表記の方が好都合である。

*1:MIDI検定1級は受験者の自由に委ねられているので大きな問題にはならないが、指定値入力が必須である2級実技の場合はこのままではちょっと困ると思う。もっとも、2級実技でのベロシティやコントロール・チェンジ等に関してはDominoで一括編集するという手もある(私はこのやり方を採用)。

*2:ただし、ピッチベンドについては常時 -1.0〜0〜1.0 表示である。

*3:mfを80とし、上下16ずつ加減する。たとえば、f は 96 (=80+16) とする。

譜面入力にMuseScoreを使う

MIDI検定1級課題曲のスコアは、残念ながら紙の印刷物のみでPDFファイルでは提供されないため*1、本ブログで譜例を作成する際には別途スコア入力ソフトを使って再現している。ここで私が愛用しているのは、オープンソースでフリーの MuseScore である。

musescore.org

2015年にバージョン2に上がってから大きく機能強化が図られ、洗練されたUIで使いやすくなった。本年5月にさらに2.1へ上がり、譜面作成用途では定番の有償ソフトである FinaleSibelius と比べても、もはや遜色ないレベルではないか。よほど特殊なニーズでもない限りはプロの使用にも耐えうると思う。現在、次期バージョン3の開発が鋭意進行中で、将来的には Finale などよりも MuseScore が主流になる可能性も秘めている。

もっとも、最近の主たるDAWでは上位バージョンでスコア編集機能を備えているものが多いので*2、わざわざ別個のスコア入力ソフトを導入するインセンティブは小さいかもしれないが。

*1:2級2次試験実技の本番課題曲は試験当日の紙配布のみで、2次筆記含めて過去問は一切公開されていない。その代わりに本番直前の練習曲のみPDFで無償ダウンロード可(過去3年分)。

*2:Studio One は、Artist版またはProfessional版のオプションで楽譜作成(+α)ソフトの Notion をバンドルすることもできる。Cubase や Logic Pro X なども譜面作成機能がある。

譜面解釈とMIDI表現 (3) トレモロ

2016年のMIDI検定1級課題曲では、バイオリン・パートでトレモロ (tremolo) が2箇所出現する。譜面上は、下図のように、基音に対して斜線を何本か追記することで音符の刻み方(速さ)が指定される。下例の場合、追記斜線2本含めて旗が合計3本ということになるので、32分音符で刻みながら半音ずつ下がっていくというフレーズ、という解釈になる*1

f:id:daw_jones:20170705200547p:plain

したがって、ノートの打ち込み例としては、以下のような感じになる(縦グリッド線は32分音符単位)。

f:id:daw_jones:20170706103631p:plain

 

基本は上例のようにMIDI表現のみで対応できると思うが、音源によりトレモロ用の音色が別途用意されている場合はそれを使う(または重ねる)方がよいこともある。通常音色で刻むと機械的で不自然に聞こえる場合は特にそうである。

Studio One の内蔵音源 Presence XT で備えている弦楽器系音色は結構クオリティが高く、たとえば "15 Violins Legato" で上述のようにトレモロを刻んでもそれほど不自然には聞こえない。なお、トレモロ用に "Tremolo Strings" も用意されているので、トレモロ箇所についてはこちらを鳴らしてもいい(あるいは通常レガート音色に重ねて発音させる)。

音源によっては、トレモロその他アーティキュレーション用のスイッチを音域外のキーに割り当ててオン・オフできるものも少なくない。この種の機能は積極的に併用すると効果が出ると思われる。

その他、トレモロ効果を出すプラグインエフェクターも数多く存在するが*2、すべての楽器音色でしっくり当てはまるかどうかは聴いてみないとわからない。下手な使い方をすると、かえって機械的で滑稽な印象を与える可能性もある。

*1:詳しくは、楽典.comの記事などを参照。

*2:どちらかというとパッド系シンセ音に適用するためのEDM用主体なので、生楽器音色にはふさわしくないかもしれない。

PythonでSMFを操作する (1) 下準備と読み込み

今回より、少々マニアックにはなるが、PythonによるSMFの加工編集処理について何度かに分けて(五月雨式に)書いていく。なんでそんなことするの?、という根拠については以下に記す。なお最初に断っておくが、以下の話はあくまでMIDI検定実技対策上の要請であり、自主制作では一切必要ない。

今回は、使用するパッケージの紹介と、それを使ったSMFの中身の確認までをやってみる。

Pythonで自動処理する目的

Studio One から書き出したSMFは、そのままではSysExメッセージとセットアップ・データが書かれていないので*1、DominoなどのMIDI専用エディター兼シーケンサーなどを使って追加編集する必要がある。もちろん、ここまで機能対応しているDAWであれば、わざわざDominoに取り込まずとも自己完結することは言うまでもない。

問題は、1級の場合、トラック(楽器パート)の数が多いので、Domino上での手動によるコピーや編集が非常に面倒くさい、ということである。また繰り返し作業が多いということは、ミスを誘発する可能性もそれだけ高まる懸念がある。

なので、セットアップ・データの追加部分については、Pythonによる定型バッチ処理で対応して効率化を図りたい。そうすると、Dominoでの追加編集はボリュームやパンの微調整ぐらいで済む。

使用するパッケージ

PythonMIDIデータを読み書きするためのパッケージとしては、今現在は pretty_midi が主流であり、また一番使いやすいAPIだと思われる(3系対応)。

実はpretty_midiのベースはmidoパッケージらしく、SysExメッセージの追加挿入といったpretty_midiでは扱えない一部特殊な処理に関してはmidoを直接使わないと対応できない。

実際に試してみるとわかるが、midoパッケージ自体シンプルなデータ構造とAPIなので、MIDI検定3級以上の知識があれば難なく使いこなせる。なので、ここではすべてmidoパッケージを直接使ってみることにする。

さしあたりは、以下の2つのクラスしか使わないため、midoパッケージよりインポートしておく。

from mido import MidiFile, Message

SMFの中身を覗いてみる

試しにサンプルとして2級2次試験の2017年2月期練習曲No.1で制作したSMFを俎上に乗せる。

Studio One から書き出した直後のSMF

何度か繰り返し使うことになるので、各トラック内の全メッセージ内訳表示と、SMF全体の中身の表示させる関数を定義する。

# 各トラック毎の全メッセージを表示する
def dump_track(track_obj):
    for msg in track_obj:
        print(msg)

# 全トラックの全メッセージをトラック毎に表示する
def dump_smf(midi_obj):
    for i, track in enumerate(midi_obj.tracks):
        print(f"Track {i}: {track.name}")
        dump_track(track)

トラック・オブジェクトは、実態としてはMIDIメッセージのリスト構造になっているので、Pythonの通常のリスト操作をそのまま使うことで簡単に編集加工できる。

上記の定義関数を呼び出して、まずは Studio One から書き出したSMFの中身を見てみるとする。

# Studio One から書き出したSMFを mid に読み込む
mid = MidiFile('smf_studio1.mid')
dump_smf(mid)

これを実行すると、以下のような感じに表示される(jupyter notebook  上での実行結果):

f:id:daw_jones:20170704144229p:plain

ほとんど自明で逐一説明を要しないと思うが、上図はメタイベント・トラックと、オーボエの楽器パートを割り当てているトラック1の冒頭9行までを表示した。注目すべき点としては、

  • メタイベント*2のテンポ値は1拍の長さ(本例では4分音符一つ)をμs(マイクロ秒)単位で表示している。BPMに変換すると、60s/(638298μs/1000000) = 94 となり、BPM = 94 であることがわかる(実際にはこれとは逆方向に変換している)。
  • メタイベントには拍子データ(Time Signature)も書かれている。本例では4/4である。曲中で何度か拍子を変えると、変化するタイミング(Time値)とともにそのデータもすべてここに書かれる*3
  • メタイベント以外の各トラック冒頭2行目には Studio One 固有のメタメッセージ1件が書かれているが、これは特に必要というわけではなく、Dominoに取り込む前に消去してしまっても構わない。
  • トラックの冒頭部分には、SysExメッセージやコントロール・チェンジといったセットアップ・データがまだ何も付け足されていないことがわかる。
  • ノートオン/オフの各メッセージ末尾に書かれているTime値はいわゆるデルタタイムであり、直前メッセージからの送信間隔を示す。実はここではティック単位になっている(ので確認しやすい)。MIDIメッセージが小節の概念を持っていないことがわかると思う。

Dominoで編集後に書き出したSMF

同様に、Dominoで編集した最終成果物としてのSMFの中身を確認してみる。

# Dominoから書き出したSMFを mid2 に読み込む
mid2 = MidiFile('etude_2017-1.mid')
dump_smf(mid2)

これを実行すると、以下のような感じに表示される(メタイベントは上とほぼ同じなので省略):

f:id:daw_jones:20170704153536p:plain

上の Studio One から吐き出したSMFと見比べてみると色々と興味深い。上図で示したように、2級実技用のテンプレでお馴染みのセットアップ・データが付加されている。また、トラック1については冒頭にSysExメッセージも付く(データは10進表記)。目標としては、これら定型の付加データを全トラックについてPythonで追加処理したい、ということである。

ヘッダー情報はどこに

以上はすべてトラック・チャンクに関わるデータであるが、ヘッダー・チャンクの主要データを確認したい場合は、SMFを取り込んだオブジェクトの属性一覧を見ればよい。

# SMFオブジェクトの属性には何が含まれるか確認する
mid.__dict__

すると、以下のように辞書形式で属性一覧が表示される:

f:id:daw_jones:20170704162943p:plain

上図で明らかなように、Studio One から書き出したSMFの分解能は TPQN = 480 であることがわかる。

次は何をやるか

初回なので思ってた以上に長くなってしまったが、次回からはワンポイント・メモのような形でもう少し手短にまとめていきたい。

次はまず一番簡単なところから着手するとして、SysExメッセージの追記をやってみるとする。

*1:私が知らないだけであって、セットアップ・データ等を付加する方法はあるのかもしれない。しかし、たとえ書けたとしても、Studio One はMIDIのイベントリスト表示機能がないため、検証チェックと確認が難しいと思う。

*2:詳しくは、メタイベント一覧表などを参照。

*3:変拍子については、次の過去記事参照: 譜面解釈とMIDI表現 (2) 変拍子の対応 (Studio One)

譜面解釈とMIDI表現 (2) 変拍子の対応 (Studio One)

MIDI検定1級課題曲では変拍子は当たり前のように頻出しており、たとえば昨年の2016年課題曲では、43小節目の1小節だけ4/4から6/4に拍子が変わっている*1

因みに2級実技では、転調は2016年2月期の練習曲で1曲盛り込まれているが、変拍子については私が知る限りまだ出題されていないようである(下記の過去記事参照)。

daw-jones.hatenablog.com

 

Studio One で打ち込む場合の変拍子対応法はいたって簡単で、タイムライン上で拍子を変更したい小節の開始位置にカーソルを移動させ、右クリックでコンテキスト・メニューから Insert Time Signature を選ぶ。

f:id:daw_jones:20170702132034p:plain

その後に下図のような拍子入力ウィンドウで分子分母の値を修正入力すれば、指定の変拍子が挿入され、それにしたがって1小節あたりの拍子グリッド(縦線)の数も変わる。

f:id:daw_jones:20170702132146p:plain

f:id:daw_jones:20170702132450p:plain

 

変拍子は当然ながら書き出したSMFにも反映され、Dominoで取り込むと下例のようにメタイベント(Conductorトラック)で確認できる。なお、譜面のリハーサルマークやページ記録のために Studio One 内で付記したマーカーもこのメタイベントの中に書き出されるようであるが、MIDI検定では審査対象外なのでそのままの状態で問題ない。

f:id:daw_jones:20170702165406p:plain

*1:これは全然大したことない部類。変拍子については、2012年課題曲が非常に大掛かりな応用作品となっているようである。