拍手。 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で直接試すことができます。



All Articles