カテゴリー
日記

移植作業中

というわけで、Nintendo DS 向けに作曲した曲を、他機種に移植するために録音しなおす作業が続いています。先日お話したとおり、Nintendo DS には楽譜データが入っていますので、これを最新のシンセサイザーに演奏させて、一通り録音します。

ところが、最新のシンセサイザーと Nintendo DS のシンセサイザーは、当然ながら仕様が異なります。運よくそれなりに聴こえるパートはいいのですが、さっぱりな演奏になってしまうパートもあります。特にメロディーパートの演奏がさっぱりになってしまうと、曲全体のクオリティが一気に下がってしまいます。

時間と予算のあるプロジェクトなら、全パートをきちんと仕上げるのですが、今回はそうではないプロジェクトです。メロディーと、もう 1 パートぐらいを、僕の演奏で吹き込みなおします。本当は僕自身も楽譜をきちんと練習して、上手になってから吹き込みたいのですが、今回はその時間すらありませんので、ぶっつけ本番です。

カテゴリー
日記

困ったこと

起床後、前日届いていたメールを確認しました。30 通前後のメールに混じって、新手の依頼がありました。依頼の内容は、以前に僕が作った Nintendo DS のゲーム用の音楽を、他機種に移植するために書き直してほしい、というものでした。

Nintendo DS のソフトウェアは、DS カードと呼ばれる独自の ROM カードとして供給されます。DS カードの容量は、他のゲーム機と比べてかなり小さく、PSP でさえ 1.8GB の容量があるのに対し、DS カードはこれまでのところ 256MB が最大です(上限は不明です)。

ですので、データは極力節約しなければなりません。音楽もそのまま録音してしまうとそれだけで 256MB を使い切ってしまいますので、シンセサイザーのソフトウェアと楽譜の組み合わせとして DS カードに保存され、ゲーム中に DS がそれらを解読しながら演奏するようになっています。

それを他機種に移すということは、通常の CD に録音するような形で録音しなおす作業を行うということです。作曲からすでに半年以上経過している曲を録音しなおすという経験がなかったので、「見積もりをください」と言われて逆に弱ってしまいました。

そういうわけで「なんかあったら言ってくれていいよ」と以前に言っていただいていた、同業の大学時代の先輩に相談してみることにしました。そうしましたら無事に解決。先輩がいるというのは本当にありがたいものです。

2009-02-02

カテゴリー
Windows XP

UWSC

UWSC は umiumi さん作の Windows 自動化ソフト(キーボードマクロツール)です。Cakewalk や Finale などは専用のスクリプトがあって、操作を自動化できるのですが、そういった機能を持たないアプリケーションもたくさんあります。僕は特に midiom を使用する場合に活用しています。

Finale で作曲したデータを midiom で編集する前に、余分なごみデータを削除して、Gate の編集に専念するところから始められるスクリプトを作ってみました。Finale で出力した mid ファイルを Cherry で読み込み、分解能を 480 に変更して SMF のエクスポートを行った後 midiom で読み込み、名前が消えている一番上のトラックを N とリネームしておけば、このスクリプトを使えます。ウインドウ上部のツールバーが、下図のようになっていないと使えませんので、これもチェックしておいて下さい。

あとは、下記のスクリプトを使ってデータのごみ掃除ができます。僕以外に使う人がいるとも思えませんが、僕自身の備忘録も兼ねて一応書かせていただきました。

// midiom 用スクリプト
// Finale で出力したデーターの Nintendo DS 向けの成型
// 2008/05/25 Kudo Shinsuke
// ==================================================

// このスクリプトを実行する前に、
// Finale で出力した MIDI ファイルを Cherry で読み込み、
// 分解能を 480 に設定して標準 MIDI ファイルをエクスポートし、
// それを midiom に読み込んでから作業を開始しなければなりません。
// また、マクロを適用するときには、該当トラックの一番先頭のイベントを
// 表示させておかなければなりません。
// さらに、トラック名「N」の Expression データ避難用のトラックを
// 用意しておかなければなりません。
// マクロの実行が終わったら、Gate の編集を行って下さい。

// midiom の ID 取得
// ~~~~~~~~~~~~~~~~~
midiom=GetID("midiom")

// Program の Bank 削除
// ~~~~~~~~~~~~~~~~~~~~
MouseOrg(midiom)
// midiom のウインドウ座標をマウス座標の基準とする。
BTN(LEFT,CLICK,80,208,100)
// トラックの一番最初のイベントがあるはずの座標をクリックする。
KBD(VK_TAB,CLICK,100)
// キーボードの TAB をクリック(押してすぐはなす)。
KBD(VK_RETURN,CLICK,100)

// ピッチベンドレンジ変更データを削除
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// CC100 を削除
KBD(VK_H,Click,100)
SendStr(GetID("サーチ","#32770",100),"/d CC,100,,,",1)
// 「サーチ」ダイアログボックスにテキスト「/d CC,100,,,」を書く。
// 第三引数の「1」は、
// 1 番目のエディットコントロールに書き込むことを指定している。
KBD(VK_RETURN,CLICK,100)

// CC101 を削除
KBD(VK_H,Click,100)
SendStr(GETID("サーチ","#32770",100),"/d CC,101,,,",1)
KBD(VK_RETURN,CLICK,100)

// CC006 を削除
KBD(VK_H,Click,100)
SendStr(GETID("サーチ","#32770",100),"/d CC,006,,,",1)
KBD(VK_RETURN,CLICK,100)

// CC038 を削除
KBD(VK_H,Click,100)
SendStr(GETID("サーチ","#32770",100),"/d CC,038,,,",1)
KBD(VK_RETURN,CLICK,100)

// Volume を Expression に変換したうえでコンプレスする
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
KBD(VK_H,Click,100)
SendStr(GETID("サーチ","#32770",100),"CC:CC,007:011,,,:$3/2+64",1)
KBD(VK_RETURN,CLICK,100)

// Volume 100 を加える
// ~~~~~~~~~~~~~~~~~~~
KBD(VK_OEM_2,CLICK,100)
KBD(VK_V,CLICK,100)
BTN(LEFT,CLICK,280,208,100)
KBD(VK_NUMPAD1,CLICK,100)
KBD(VK_NUMPAD0,CLICK,100)
KBD(VK_NUMPAD0,CLICK,100)
KBD(VK_RETURN,CLICK,100)

// Expression のカット
// ~~~~~~~~~~~~~~~~~~~
KBD(VK_H,CLICK,100)
SendStr(GETID("サーチ","#32770",100),"/t CC,011,,, ",1)
KBD(VK_RETURN,CLICK,100)

// トラックの移動
// ~~~~~~~~~~~~~~
KBD(VK_OEM_1,CLICK,100)
KBD(VK_LEFT,CLICK,100)
KBD(VK_N,CLICK,100)
KBD(VK_RETURN,CLICK,100)

// Expression データの貼り付け
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
KBD(VK_CTRL,DOWN,100)
KBD(VK_V,CLICK,100)
KBD(VK_CTRL,UP,100)