拍手。 JSとHTML5を使用したDIYコードチャート

アイデア


私はどういうわけか、これらの和音が何を食べるかを人に伝えるために、和音の独自のウェブベースのラベルを作成することに着手しました。

はい、シンプルなタブレットは欲しくありませんでしたが、次のような機能が豊富なタブレットが必要です。
そして、これは私がそれをやった方法です...

手段


考えられた機会の計画の最後のポイントのおかげで、私はすべてJavaScriptを使用してすべてを行うことにしました。
オーディオ出力には、最も有望なテクノロジーとしてHTML5オーディオを使用しました。 簡単に言えば、私はFlash統合をいじくり回すことにまったく笑っていませんでした。これは、オープンソース愛好者として、私は常に疑っていました。
HTML5キャンバスは、コードの運指のレンダリングに最適です。 自由にスケーラブルなコードグリッドが必要でした。

実装


最初のステップは、シンプルな仮想キーボードを作成することでした。 キーはonClickイベントを持つ多数のdivです。スライダーはjQuery-UIを使用して作成されます。

キーボード

その後、実際には、コード表、単純なメロディー(メロディーは多くの音符とそれらの間のミリ秒単位の遅延として記述される)のプレーヤー、ギターフィンガービューアーが追加されました。

問題と解決策



いつものように、最初の問題はプロジェクトの作業の最初の成功で現れました。 当初、コードの演奏は非常に簡単でした。ページがロードされると、JSは49個のオーディオ要素を生成しました。シンセサイザーキーごとに1つで、それぞれがサウンドフラグメントに対応します。 そして、すべてがうまくいきますが、結局のところ、ChromeもOperaも49のオープンオーディオストリームを消化することができず、いくつかのメモが食べられました。 問題を非常に簡単に解決しました。オーディオ要素の数を8に制限し、ラウンドロビンによってそれらの負荷を分散しました。 このようなスキームの明らかな欠点は、オーディオ要素のソースを変更する必要があることです。 はい、ローカルマシンではこれは問題ではありませんが、サーバーからのサウンドファイルの読み込みはすぐにはできません。 この種の遅延を最小限に抑えるために、ブラウザーキャッシュにオーディオファイルをプリロードしました。 それは非常に簡単です。 追加のオーディオ要素が作成され、キーボードで使用されるすべてのオーディオファイルが順次転送されます。 もちろん、遅延は残りましたが、すでにかなり許容できます。

ギターコード運指

私にとって別の重要な問題は、ギターの運指でした。 そして、ここでは、コードグリッドの美しいレンダリングでさえありません。これは、難しいよりも退屈な傾向があります。 ポイントは、 便利な運指の選択です。

私が強調した利便性基準:
これはすべて、私のテーブルに最適なギターコードの運指を選択する1つの式に勇敢に刻まれていました。 Cコードのスクリプト生成の運指:
ギターコード運指
運指の選択により、アプリケーションが少し遅くなる可能性があります。 弦のコードの音符の完全な検索があります。 Web Workersを介した別のスレッドで選択が行われるため、問題はそれほど深刻ではありません。

結果


その結果、和音を見つけて構築し、適切な運指を検索するための便利なツールを手に入れました。これは、上記の人を示すのは恥ずべきことではありません。 プロジェクトコードはgithub.comCC BY-NC-SA 3.0ライセンスで入手できます。 貴重なアドバイスであろうと既製のパッチであろうと、私はプロジェクトの助けに感謝します。
作業中のコードはgithub: demoで直接試すことができます。

Source: https://habr.com/ru/post/J148314/


All Articles