midiと歌詞からmusicxmlを生成してNEUTRINOに渡したい(ひとまず完結、まとめ)
midi2musicxml、なんとか最低限動くものができてきたかな、と思います。
NEUTRINOにとりあえず歌わせるには、多分これが一番早いと思います。…という狙いで作りました。
まだ荒削りです。お気軽にお問い合わせください。https://t.co/tdcT2ZhOIu
DL https://t.co/VMjS1WbCfC— kaiba (@kaiba) May 3, 2020
詳しくはGitHubまで。
なんとか最低限のところまで持っていくことができました!
改めまして、まとめておきます。
これは何?
ニューラルネットワークを用いた歌声シンセサイザーNEUTRINOに「とりあえず早く歌わせる」をコンセプトにしたアプリケーションです。
midiと歌詞のテキストを指定するとNEUTRINOが歌ってくれます。
何のために作ったの?
NEUTRINOに歌ってもらうには以下の手順を踏む必要があります。
- DTMアプリでmidiを出力する
- musecoreで開く
- 歌詞を入力する
- NEUTRINOに食わせる
- できあがる(が大抵の場合1に戻る)
musecoreは楽譜を作るソフトで、音楽知識の乏しい僕には楽譜、歌詞の入力は耐え難いものがありました。
機械向けに歌詞を書くのは結構面倒です。
例えば「ヨーロッパ」は音符に乗せると「よろぱ」になります。
「っ」は音符の切れ目になるし、「ー」は音符の長さが変わるだけ、などなど。
なれるとスムーズにいくのかもしれませんが、僕はトライアンドエラーがどうしても必要です。
この辺をよしなにしてくれるアプリがほしかったのです。
バグ報告など
Twitter @kaiba もしくは GitHub issueまでお気軽にどうぞ。
完走した感想
- 多くの環境でGUI付きで動かしたかったので、Kotlin + JavaFXを選択したのですが完全に失敗
- JavaFXは最近のJavaには同梱されていない
- 同梱されないのでOpenJFXを使うが、当然OSごとにビルドする必要がある…。
- public JREは8までしか配布されていない
- じゃあどうすればいいのかというとjpackageを使用してJREを同梱する形で配布する
- しかし、WindowsではWIXのインストールが必要でCIでやるのは困難
- まともなインストーラのAPIを用意しない(ように見える)Windowsがいけない気もするし、バージョン8以降のJREを配布しないOracleもいけない気もする
- 今後GUIをやるなら Electron かなぁ…
- JavaでマルチプラットフォームでやるならSwingがよいでしょう
- コード署名は興味ないのとハマりそうなので目をつぶった…
- Kotlin + JavaFX、書き心地はよかった。Scene Builderで用意されているし。細かいデザインをしようとなると話は変わってくるでしょうけど。JavaFxはCSSでデザインができるんだけど、文法がCSSなだけでCSSではない気がする。
- 自動テストを書いたので開発がスムーズだった。最初のハードルが高いけど、真似て書くのはかんたんだし、トライアンドエラーが早い。
- CIにGitHub Actionsを使った。CircleCIやDroneと大差なく迷うところはなかった。Mac、Windowsにも対応しててありがたみを噛み締めてバイナリをビルドした。
- GUI, CUI, I18n、アプリケーションでよくある機能を一通り触れて学びがあった。