見出し画像

【DTM】NEUTRINOの個人的面倒を軽減してみる

まえがき

NEUTRINOを使い始めて2年余りになるが例えばSynthesizerVなどのDAWと統合される快適さを知ってしまうと正直うわーと感じてしまう。基本的にはMuseScoreに音符と歌詞を入力して.musicxmlファイルを生成し、そのファイルと歌声ライブラリを指定して.wavファイルをアウトプットさせた上でそれをDAWに読み込む。あ、歌詞間違ってるわーとかここ息継ぎ入れた方がいいなとなるとこの手順を繰り返さなくてはならない。

この一連の操作については馴れたらそんなもんかレベルなのだが全く関係の無いツールを連携させて使っているだけに過ぎず、言ってしまえば1曲作りたいだけなのにどうしてもついて回る余計だが必須な作業なのだ。

誰に歌わせるかについてはクリエイターによってそう思うタイミングはまちまちとは思うが、つまり歌声ライブラリを変えて聞き比べてみたいことがある。きりたんにするのかめろうにするのか、それとも今回はずん子にするのか・・・。

普通にやると

NEUTRINOにはUIが無いので実行はバッチファイル(Run.bat)で行う。

@echo off
setlocal enabledelayedexpansion
cd /d %~dp0

: Project settings
set BASENAME=sample1
set NumThreads=4
set InferenceMode=3

: musicXML_to_label
set SUFFIX=musicxml

: NEUTRINO
set ModelDir=MERROW
<以下略>

6行目のBASENAME=の右辺がMuseScoreで生成した.musicxmlのファイル名、14行目のModelDirの右辺がモデル名(正確にはその歌声ライブラリを格納しているフォルダ名)なのでこれを毎回書き換えてバッチファイルを実行しなくてはいけないので正直面倒だ。

バッチファイルの良いところ


一見融通の利かない仕組みに見えるが実はそうでもない。普通に実行する時はコマンドプロンプトで

C:\Users\hoge>Run[ENTER]

だが、バッチファイルは実行時に変化させたい部分をパラメータとして複数与えることができる(勿論バッチファイルの方もパラメータを受けられるように修正が必要) 例えばこんな感じ

C:\Users\hoge>Run sample1 MERROW[ENTER]

一つ目のパラメータが.musicxmlのファイル名、二つ目の引数が歌声ライブラリ名。となれば毎回バッチファイルを書き換えなくても与えるパラメータを変えれば良いだけになる。

バッチファイルを書き換える

以下のようにRun.batを書き換えて実行時パラメータで指定できるようにしておくと毎回Run.batを書き換える呪いからは解き放たれる。

@echo off
setlocal enabledelayedexpansion
cd /d %~dp0

: Project settings
set B1ASENAME=%1
set NumThreads=4
set InferenceMode=3

: musicXML_to_label
set SUFFIX=musicxml

: NEUTRINO
set ModelDir=%2
<以下略>

BASENAME=の右辺を%1に、ModelDir=の右辺を%2にした。これで%1は実行時引数の一つ目に、%2は二つ目に置換されて実行される。

ツールを作りました

勿論コマンドプロンプトにも履歴機能はあるので[↑]キーで前回のコマンドラインを呼び出してライブラリ名だけ書き換えるのもありだが、できればコマンドプロンプトすら使いたくない。

そこでC#でサクサクっと作ってみた。やることはシンプルなので興味のある方は得意な言語で書かれてはどうか。

NLauncher

なんのことはないScoreで.musicxmlファイルを、Modelで歌声ライブラリを選択して[START]をポチっとするだけ。

これで歌声ライブラリを変えて.wavファイルを生成し、聞き比べする手間が多少なりとも軽減されるようになるがアウトプットファイル名をそのままにしているので上記例でいくと歌声ライブラリを変更しても出力されるファイル名は常にsample1.wavになり上書きされてよろしくない。
アウトプットされるたびにsample1.wav->sample1(MERROW).wavのようにファイル名を変えないと後になって「この歌声が一番いいけど、これ誰だっけ?」になってしまう。バッチファイルを書き換えよう。

echo %date% %time% : start NSF
bin\NSF.exe output\%BASENAME%.f0 output\%BASENAME%.melspec .\model\%ModelDir%\%NsfModel%.bin output\%BASENAME%.wav -l score\label\timing\%BASENAME%.lab -n 1 -p %NumThreads% -s %SamplingFreq% -f %PitchShiftNsf% -t

これをこうする(いつもNSFを使っているので)

echo %date% %time% : start NSF
bin\NSF.exe output\%BASENAME%.f0 output\%BASENAME%.melspec .\model\%ModelDir%\%NsfModel%.bin output\%BASENAME%(%ModelDir%).wav -l score\label\timing\%BASENAME%.lab -n 1 -p %NumThreads% -s %SamplingFreq% -f %PitchShiftNsf% -t

出力ファイル名は output\%BASENAME%.wav というように生成されるのでこいつを output\%BASENAME%(%ModelDir%).wav と書き換える。14行目で設定してある環境変数をそのまま利用すれば sample1.wav だったところ sample1(MERROW).wav というファイル名でアウトプットされることになりめでたしめでたし。

あとがき

本音は「曲作りだけに集中したい!」に尽きる。なのに今回の記事のような細かい面倒なことの類を多くのDTMerの方々は何かしら抱えているのではないかと思う。世に数多あるVSTについてもそうだ。ソフトウェアとしてのインターフェースは流石に統一されているがインストール方法やアップデート方法がバラバラで酷い状況と言わざるを得ない。大手メーカーも自社製品についてはマネージャーもVSTも自動更新若しくは更新通知を出したりするが個人開発的なものでzipで配布&自分で適切なディレクトリにコピーしてねなタイプではそれも絶望的だ。まったくどうにかならんものか・・・

この記事でチラ見せしたツールは需要無いと思って公開・配布していません(需要あればGitHubでの公開・配布も考えますけど)

いいなと思ったら応援しよう!