ランダムキーボードを作ってみよう!
| 固定リンク
みなさん、こんにちは、
メディア学部の授業「音声音響メディア処理」では信号処理ソフトを使って、いろいろな音を体験します。今日は、音あそびとして 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 ) ) ;
をやってみてください。次のずのような正しい順序が表示されます。つまり、低いドが濃い青、高いドが濃い赤ということです。ただし、これは、色の順番を示すだけですから、これをマウスクリックしても音は鳴りません!
「授業紹介」カテゴリの記事
- Webをプログラムで読む(2018.04.19)
- 集中実技 I (スキー)体験レポート!(2018.04.02)
- 大学 1 年生で CG-ARTS 賞受賞!(2018.03.23)
- インドネシア弾丸旅行2018(その3) University of AMIKOM Yogyakartaにおける講義(2018.03.19)
- プロジェクト演習「実践的プログラミング基礎」の紹介(2018.02.27)
「高校生向け」カテゴリの記事
- フランスのパリで有名な建造物は? 【パリ出張報告その1】(2018.04.22)
- 2018年3月卒業の「プロダクトデザイン」の皆さんを紹介します(その1)(2018.04.18)
- インドネシア弾丸旅行2018(その6)ジャカルタの提携校マルチメディア大学(UMN)訪問(2018.04.07)
- インドネシア弾丸旅行2018(その5)Semarangの提携校UDINUSにおける講義(2018.04.06)
- インドネシア弾丸旅行2018(その4) University of AMIKOM Yogyakartaの施設紹介と産学連携(2018.04.03)