utoroのJS解説

JavaScriptプログラムの解説。動作条件の説明があるので先頭から読んでください。

ルート音を小節内で替えよう

前回ルート音を鳴らすしくみを作りましたが、1小節=1ルートのシンプルなものでした。今回は1小節の中の任意の位置でルート音を切り替えられるように改良してみます。まずは下記のリンクを右クリックして別ウインドウで開いてください。

サンプル13(ルートを小節内でチェンジ)

上部の進行表の行数がさらに増えてますね。「Play」ボタンをクリックしてください。とりあえずてきとうなルート進行でループがスタートし、小節内のいろんなタイミングでルートが切り替わっているのがわかると思います。

ソースを見ていきましょう。htmlは表の行数を2つ増やし、formも2つ増えています。function ded()などの中でform番号の修正が必要になるので、formを増やすときは注意してください(今後は毎回同じ注意になるので割愛します)。

var chtは小節内のどのタイミングでルートが切り替わるかの数値が入ります。表最下段のナンバーから取得され、0でチェンジなし、8なら2拍目の頭で切り替えます。

function tick()内で、count==cht(0以外のとき)の時に発動し、有効なチェンジ指定があるならば、すでに鳴っているルートを消音し、あらたなルートをvar cbnに取得して鳴らします。

有効なチェンジ指定とは、タイミングが0以外でかつRoot Note2が「--」以外の指定がされている場合です。どちらかが満たされていない場合はルートチェンジは行われません。

最後のルート進行サンプルの部分は、16要素の配列に8個ずつのルート選択を仮に入れて読ませています。もうちょっといろんな要素が出揃った時点でリズムパターンと同様に自動保存のしくみを整備する予定です。

これで小節内でルート音を切り替えてベースを鳴らすことができるようになりました。