ランダムキーボードを作ってみよう!
2016年10月31日 (月) 投稿者: メディア技術コース
みなさん、こんにちは、
メディア学部の授業「音声音響メディア処理」では信号処理ソフトを使って、いろいろな音を体験します。今日は、音あそびとして Scilab を使って、メチャメチャなキー配置の「ランダムキーボード」を作ってみましょう。
1秒間のディジタル音の数(サンプリング周波数)をコンパクトディスクの音質の半分の22050個にして、0.5秒の音を鳴らします。半音も含ませた1オクターブ分の鍵盤を作りましょう。音の高さの範囲はC5(523Hz)からC6(1046Hz)までにします。
ここで、grandという関数を使って、キーの順序をメチャメチャにします。
Matplotという関数を使って、色鍵盤を作ります。
色のついている領域をマウスクリックすると、その色鍵盤に対応した音が出ます。色鍵盤の外をマウスクリックすると、停止します。locateというのが、座標を読み込む関数です。色表示は13段階のjetと呼ばれるカラーマップ(色と値の対応)を使います。whileというのは、条件が満たされている間endまでのプログラムを繰り返し実行するということです。%piは円周率3.14です。roundは四捨五入で左からのキー番号が求められます。
以下を、コンソールに打ち込んでください。
fs = 22050 ; //1秒間の音サンプルの数
t = 0 : 1/fs : 0.5 ; //時間刻みの目盛
se = 2 ^ ( 1 / 12 ) ; //半音周波数比
f = 523 * se . ^ ( 0 : 12 ) ; //1オクターブ分の半音刻み周波数
as = grand( 1 , "prm" , ( 1 : 13 ) ) ; //ランダムな順列
Matplot( as ) ; //色表示
xset( 'colormap', jetcolormap( 13 ) ) ; //jetカラーマップ
x = 1 ; y = 1 ;
while x > 0.5 & x < 13.5 & y > 0.5 & y < 1.5 ; //鍵盤内
i = round( x ) ; //横軸座標四捨五入
sound( sin( 2 * %pi * f( as( i ) ) * t ) , fs ) ; //指定の音を発音
p = locate(1) ; //座標をマウスクリックで読み込み
x = p( 1 ) ; y = p( 2 ) ;
end ;
さて、動作しましたか?
こんな鍵盤ができたと思います。初めに初期音が鳴ります。鍵盤をマウスクリックすると音が鳴ります。音は鳴りましたか?この鍵盤は音の高さの並びがメチャメチャです。何か曲を演奏してみてください。
もし、順序がわからなくなってしまったら、
Matplot( 1 : 13 ) ;
xset( 'colormap', jetcolormap( 13 ) ) ;
をやってみてください。次のずのような正しい順序が表示されます。つまり、低いドが濃い青、高いドが濃い赤ということです。ただし、これは、色の順番を示すだけですから、これをマウスクリックしても音は鳴りません!
「授業紹介」カテゴリの記事
- トップレベルの論文を読み込む「CG技術特論」(大学院授業紹介)(2019.03.13)
- 大学院授業:プロシージャルアニメーション特論の紹介(2019.03.08)
- 専門演習「空間インタラクティブコンテンツ」2018後期(3)(2019.02.22)
- タンジブルインタラクションデザイン最終発表(2019.02.13)
- 専門演習「空間インタラクティブコンテンツ」2018後期(2)(2019.02.12)
「高校生向け」カテゴリの記事
- チュラロンコン大学からのインターン学生との再会(2019.03.14)
- 大学院授業:プロシージャルアニメーション特論の紹介(2019.03.08)
- ゲームの学会?!(2019.03.07)
- 香港理工大学デザイン学部の紹介(2019.03.04)
- 香港理工大学デザイン学部を訪問し、学部長Lee先生にお会いしました!(2019.03.03)