音音是好音 〜 布施音人のブログ

最近作ったアプリ「Lead Sheeter」

no thumbnail image

概要

ジャズのセッションやライブでは、リードシートと呼ばれる楽譜をよく使う。メロディとコードだけが書かれた楽譜である。

オリジナル曲を演る場合や採譜した場合、移調して演る場合など、リードシートを自分で作ることになるが、楽譜作成ソフト、たとえば Finale や Sibelius、無料どころでは MuseScore などを使ってリードシートを作ると、以下のような点が不便だったりする。

なので、リードシートを作ることに特化し、機能を減らした分このあたりが強化されたような楽譜作成ソフトがあったらいいな、と前から思っていたし、ある程度の使用に耐えうるものができれば需要はあるかもしれない。

ので、自分で作ろうとしている。

作りたいもの

作りたいものの要件は:

以前作ったもの

前にも一度作ろうとした→ Lead Sheet Maker

これは、プログラミング言語RustでSPA(シングルページアプリケーション)を作るフレームワーク「Seed」というものを知って、Rustの勉強がてら作ったものだった。

だが、

ので、途中でやめてしまった。

今回作っているもの

今回作っているのは→ Lead Sheeter

今回はRustは使わず、Svelte+TypeScriptで全部作っている。

Svelteは、VueやReactのようなコンポーネントベースのフロントエンドフレームワークで、「State of JS 2020」でもっとも開発者満足度の高いフレームワークにも選ばれている。ダントツで爆速という話もあり、前々から少しずつ調べてはいたが、せっかくなのでこれを使ってみた。

楽譜の各要素をSvelteの要素として作っているので、変更があった部分のみ再描画されている(と思う...)。

使い方

簡単に書き方を整理する。調号や拍子、小節線も決められる。

コードの書き方

コードの書き方は、次のようにしている:

つまり、(音名)_(右下につけるもの)^(右上につけるもの)

また、bや#はフラットやシャープに置き換わる。

音符の書き方

音符の書き方は、次のようにしている:

つまり、(音名)(オクターブ).(音価を分数で書く)

また、末尾に :t を付けると次の音との間にタイを描く(ちゃんと小節線を跨いでくれる)。

変化記号について

変化記号、すなわちシャープ、フラット、ナチュラルなどは、実際に楽譜に書くかどうかと対応させるようにした。つまり、調号が何かや、同じ小節で既にその音が登場したかどうかに関わらず、bをつけたらその音符にフラットがつき、#をつけたらその音符にシャープがつき、nをつけたらその音符にナチュラルがつく

今後の展望

とりあえずある程度までのものができたので、もう少し真面目に要件をまとめて、また作り直したい。

改善、実現したいこと:

技術的には、SvelteKit(Vueに対するNuxt.js、Reactに対するNext.jsのようなものとしてSvelteに対するSvelteKitがある。まだベータ版。)を使えば、今回使ったSvelteコンポーネントを使い回せるし、SSR(サーバーサイドレンダリング)でよしなにやってくれるのではないかと考えている(まだ不明)ので、SvelteKitで作ってみる予定。

ちなみに、このブログもSvelteKitで作っている。