よもやもダンプ

気が向いた時にアウトプットしておくところ

雑記#47

ボカロを触っていくうち、人間のボーカルのピッチ・ダイナミクスを可視化したうえでピアノロール上に音符と一緒に表示させてどんな変化をしているか確認して、人間の癖を知りたくなってきた。
VocalShifterというソフトがあるけど、自分が欲しいものにピッタリ、というわけではなく、特に音符の表示機能がもうちょっと欲しかった。
ここで「ないものは作る」が信条なので、ボーカル分析ソフトを自作してみようと思う。

考えとしてはWorldを使ってピッチとダイナミクスを分析するつもり。 WorldはコードがCなので、BambooTrackerみたいにQt+C++ベースでGUIソフトを作るのも考えたけど、今回はWebブラウザで動くものとして作ってみる。
BambooTrackerを作った後に、JavaScriptベースのWeb上で動くBassonTrackerとかDeepSIDみたいなサイトを見つけて、こういう形のマルチプラットフォームなアプリ(?)も作ってみたいと思っていた。
C++のコードをJavaScriptに変換するEmscriptenの存在を知っていたので、将来的にはBambooTrackerのWebプレイヤーみたいなのを動かせるかもしれないし、いつかは作りたいピアノロール・シーケンサもWebでやってみたいと思ったので、それらのための実証実験として取り組むことにした。
正直Web系の技術はHTML5とCSS3、Javascriptを少しかじった程度しかわかっていないけど、ここ2週間Docker、node.js、Webpack、TypeScript、Emscripten、SCSSを勉強し続けて、やっと開発環境の構築ができてきた。 Dockerも最近よく聞くから勉強してみたいと思っていながら全然手を出してこなかったけど、今回はいい機会になるのでWSL上でDockerを動かして試している。 GitHubリポジトリをプッシュするときはGitHub ActionsとDockerを組み合わせて、コードを変更したら自動でデプロイできるようなワークフローを組んでおきたい。
今はEmscriptenJavaScript、TypeScript、node.jsあたりの知識がなさ過ぎて四苦八苦しながらコードを書いては試している。 Common JSだったりES6だったり、なんだかよくわからないけど知っておかないとまともに動かないので、知らない単語・動きをググれば、さらに知らない知識が出てきてググり、の繰り返しをしていて、なかなかボーカル分析ソフトの開発までたどり着けない。 この後もブラウザでローカルのファイルをどうやって読み込むのか調べたり、Web上での音声ストリーミング処理について調べないといけないので、完成はまだまだ先になりそう。