09_演奏アプリ

【09B_演奏アプリⅡ】簡単コード鍵盤〔実装編〕スプレッドシート、コード、テンプレートのご紹介

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

記事概要

この記事は、分散和音が鳴らせ、鍵盤の数が可変である、GoogoleドライブGogle以下の簡単コード鍵盤で用いるスプレッドシート、およびGASのスクリプトとテンプレートのコードを記載しています。宜しければ自己責任で試してみてください。

(操作している映像です。再生の場合は音が出ますのでご注意!)

スプレッドシートはリンク先のでエクセルワークブックを圧縮した形で供給していますので、展開した上でGoogleスプレッドシートにインポートして利用ください。

プログラムの著作は著者に帰属します。また、自己責任でご利用ください。何か上手く行かない場合も自力で解決してみてください・・・(公開設定の方法が適切でないとアクセスできない場合があります)。

また、情報漏えいの恐れがあるのでくれぐれもセキュリティーにかかわる情報管理には利用しない様にしてください。

スマートフォンで操作できるので、コードの種類を増やすなどアレンジに挑戦してみて頂ければと思います。

インポートするスプレッドシート

Googleドライブ上でスプレッドシートを新規作成し、以下のリンクからダウンロードしたエクセルファイルをGoogleスプレッドシートにインポートしてください。(圧縮されていますので展開して利用ください)

このエクセルのシートをGoogleスプレッドシートにインポートしてファイル名を適当に付けた後、スプレッドシートのIDを確認しておきます。

インポートするには、Googleドライブ上でスプレッドシートを新規作成し、ファイルメニューから「インポート」を選ぶとできます。

(詳細はメニューに従って進めてください。途中、以下の様にダイアログが表示されますので、「新しいシートを挿入する」を選ぶと取り込めると思います)

取り込んだらファイル名は適当に修正しておきます。

また、シートの下にあるタブの見出しを見ながら以下を確認しておきます。

「設定」シートがあるはずで、これは以下の様なシートになります。ここの黄色いセル範囲に適当な値を入れて使います。

例では6行ですが、今回のアプリでは行方向は増減可能です。

注意点として、隙間が無い様にデータは入力し、最終行より下にはデータも書式も無い様にしておいてください。(最終行を誤って認識してしまうので)

 

 

入れる値は以下の様にします。

  1. 列目 白鍵ならWH、黒鍵ならBK
  2. 列目 鍵盤に表示させる音名
  3. 列目 和音の1つめの音階
  4. 列目 和音の2つめの音階
  5. 列目 和音の3つめの音階

なお、巾方向は黄色いセルの範囲より増やしてもプログラム上表示範囲が広がる訳ではありません。和音は3音しか設定できませんのでご注意ください。

最後に、スプレッドシートのIDをブラウザのヘッダー部分で確認しておきます。

GASのスクリプトファイルとテンプレートファイルの作成

次に以下の外観の簡単コード鍵盤Ⅱを実装するためのプロジェクトを作成します。

Googleドライブ上でプロジェクトを新しく作成し、「コード.gs」と「HTML.html」を作成しておきます。プロジェクト名は適当で結構です。

新しいプロジェクトは、GoogleドライブからGoogleAppsScriptを新規作成して作ります。「コード.gs」はデフォルトで作成されています。

「コード.gs」に以下のコードを貼り付けてください。

//-- --作成者:ParticleMethod-- --
//-- --使用は自由ですが著作権は作成者に帰属します-- --
//-- --配布時は以下の掲載サイトをご紹介ください-- --
//-- https://gas-de-app.info/09b_music1/ --

function doGet(e){

 //アプリケーションを取得|「☆スプレッドシートのID☆」は各自のものを記入
 var myApp = SpreadsheetApp.openById('☆スプレッドシートのID☆');

 //対象シートをシートの名前を指定して取得
 var mySheet = myApp.getSheetByName('設定');
 
 //データ記録範囲として、行数と列数を記載
 var nRow=mySheet.getLastRow();
 var nCol=5;

 //データ記録範囲を指定して範囲を取得
 var myCells = mySheet.getRange(1,1,nRow,nCol);

 //HTMLファイルのテンプレートをファイル名を指定して取得
 var myHTML = HtmlService.createTemplateFromFile('INDEX');
 
 //★★テンプレートに埋め込む変数値を指定する★★  
 myHTML.myMSG ='ボタンをクリックしてください';   
 myHTML.myCells = myCells.getValues();
 myHTML.myRows = nRow;
 myHTML.myCols = nCol;

 //HTMLファイルをホスティング|メタタグを指定してスマホ表示に対応
 return myHTML.evaluate().addMetaTag("viewport", "width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=10.0");
}
 

上記は、doGET関数が含まれており、アクセスするとグラフを表示させるデータをテンプレートに引き渡すスクリプトです。テンプレート内から呼び出して追加のデータを引き渡す関数も含まれています。

☆スプレッドシートのID☆の部分は、ブラウザのヘッドラインを参照してスプレッドシートIDを入れておきます

次に上記コードで呼び出す「INDEX.html」テンプレートには、以下のコードを貼り付けてください。

 

インラインコードによっては、どうしても正しく表示されない文字がある(<?[ が重なるとだめの模様)ため、お手数ですが、上記からダウンロードした単独のテキストファイルを開いてコピーしてください。

 

上記は、スクリプトから引き渡されたデータをもとに、簡単コード鍵盤を表示するHTMLコードです。

----

以上になります。デプロイの方法詳細は、以下を参照してみてください。

不具合があると、何かの拍子で音が止まらなくなる場合があります。

(とじカッコが張り付かないなど。)

問題ない事はためしていますが、万一の場合にリセットできる様、

他の作業中のファイルやサイトは閉じた状態で試してください。