midiと歌詞からmusicxmlを生成してNEUTRINOに渡したい(4)
またまた前回に引き続き。
GUIを実装した
ちょっとこだわった点は以下。
- 起動時にNEUTRINOのパスを探すようにした。
- 歌詞の改行は残すようにした。この実装のせいで声のことだけ考えていたクラスに表示のことを持ち込む必要が出てきてしまい、実装が汚れた。
- プレビューで歌詞をいじれるようにした。
カイバ小話を一つ。
僕が最初に作りたかったプログラムはGUI(windowがでてきてマウスで操作できるやつ)でした。
大学に入ってゲーム制作サークルでプログラム講座を開いていただいて、ワクワクしながらVisualStudioでCを書いたわけです。
ゲーム、Visualナントカ。
もうGUIな香りがプンプンするわけじゃないですか。
それなのにできたのはstdio.hとかわけわからん呪文と黒い画面に「Hello, World」と出るだけですよ。
正直がっかりしました。
しかし、プログラムの勉強を進めて、ループやファイル入出力を覚えると、プログラム作ってる感がでてきて夢中になっていったものです。
今はGUIより、きれいなインタフェースを持ったCUIの方がいぶし銀な感じで好きです。
そんなわけで今回のGUIはこだわりがなくてやっつけです(笑)
デザイナさんが見たら発狂すると思う。
CIでテストが通らない。
CIはJava14で動こうとしてて、JavaFXはJDK11には同梱されなくなった。でもKotlinはjvmTarget=1.8にする必要がある。古いJavaでしか動きません、とするしかない…?— kaiba (@kaiba) April 29, 2020
…と思ったけど KotlinはjvmTarget=1.8以上でも動く。
tornadefxのガイドラインにちゃんと設定方法が書いてあった。
ちゃんとドキュメント読もうね。
Java8で動かそうとすると以下のエラーになるので、Java11以上が必要になった。
github actions java.lang.UnsupportedClassVersionError: org/openjfx/gradle/JavaFXPlugin has been compiled by a more recent version of the Java Runtime
エンジニアはJava8なんて使ってないと思うけど、JREのバージョンの分布はどんなもんなんでしょうか。
残作業
GUIができたのでみなさんにも使っていただきたい気持ちがでてきましたが、以下がもう一声かな。
- NEUTRINOの実行にそれなりに時間が掛かり、呼び出しが非同期になっていないためGUIが固まる。
- 下手くそな英語のワーニングがでるのでローカライズしたい。
試したい方はダウンロードして試して気軽にissueにてご意見ください。
…と思いましたが、まだ起動すらできませんね。JavaFXがJava11から同梱されなくなったためです。
もお〜