見出し画像

【GAS】演奏アプリ :「簡単コード鍵盤Ⅱ」〔解説編〕「Tone.js」でメロディーを奏でる方法!

(アイキャッチ画像:Photo by Omid Armin on Unsplash )

鍵盤をクリックすると分散和音(ド・ソ・ミ・ソ・・・と鳴ります)が鳴るWEBアプリの解説記事を書きました。


この記事は、GoogleAppsScriptで作成した以下のWEBアプリの解説記事となります。
このアプリは、以下の和音を出すアプリのバージョンアップ版です。

単音の時よりも難解な、メロディーを奏でるための「Tone.js」のコード

「Tone.js」を用いて、WEBブラウザから発音させる場合、単音であればとても簡単で、オブジェクトとして音源を定義すれば、

音源.triggerAttackRelease()

こういう記述一発で音を出す事ができます。

一方で、メロディーを奏でるとなると、これがずっと難解になります。

まず上記の記述を含んだ関数を無理やりでも定義しなければなりません。仮に演奏関数としますが、それをこんな風に定義しなければなりません。

function 演奏関数(time, note) {
 音源.triggerAttackRelease( );
}

素のままの 音源.triggerAttackRelease( ) をわざわざ 別の関数にしなければならない。引数を、time(発音タイミング)とnote(音階)という様式に無理やりもっていくための措置だと理解していますが、回りくどい感じがいたします。

更に、それを内包したオブジェクトを、Sequenceという関数で定義します。引数はさきほどの演奏関数と、音の並び、つまりメロディーです。

シークエンスSequence(演奏関数( ), 音の並び)

このシークエンスという構造体を使ってようやく、メロディーを奏でる事ができます。

今のところは残念ながら、サンプル音源は取り込めない(=楽器の音色が選べない)

メロディーが奏でられるとなれば、次に当然、ピアノやギターなど、楽器固有の音色を出したいという要求が出てくると思います。こういう固有の音色を外部から「サンプル音源」として取り込んで色々鳴らす機能は、「Tone.js」に備わっています。

ところが、GASで書いたプログラムで、ライブラリを使ったアプリを作ると、この「外部から取り込む」ことが上手くできない事が多くて、残念ながら今回のアプリでも、音源ファイルをGoogoleドライブに置いたり、自前のサーバーに置いたりしたのですが、どうもうまくできませんでした。

この事は、解決可能なことなのか、いまだによくわかりません。ひょっとしたら、GASで外部のライブラリを使う事そのものが、かなり特殊な使い方なのかもしれません。

楽器が選べるライブラリがあった

Javascriptの良いところは、WEBアプリに利用できるライブラリが様々にあることです。それで、いろんな楽器を奏でる事に特化したライブラリがあるのでは・・・、と探すと、ありました。

その名も「Ongaq.js」です。(多分、日本語の「音楽」ですよね)

サンプルコードを探してみると結構手軽そうで、しかもCDN(URLを指定するだけでインストールしなくて利用できる)で配信されています。

いずれ、このライブラリでも試そうと思いました。

次回の記事ではまずは、今作ったアプリのコードを掲載する予定です。

画像1


この記事が気に入ったらサポートをしてみませんか?