2017.12.04 Mon |

Pythonを使ってWindowsのビープ音で遊んでみる(その2)

shutterstock_449870014

 

Windowsのビープ音はプログラムで周波数と長さを制御できるという発見から,引き続き,Pythonを使ってWindowsのビープ音で録音再生機能付きのピアノを作ってみた話です.

前回はプログラムコード全体を見せ,ビープ音を鳴らすためのコードと,音程を決めるための手法の話をしたと思います.

前回の記事はこちらのリンクをご参照ください.

Pythonを使ってWindowsのビープ音で遊んでみる


 

今回は実際に作ったアプリの機能と,そのプログラムの中身の説明に入っていきます.

動作環境はPython2.7,Windows8.1です.
※Windowsのビープ音と書いてある通り,Macなど他のOSでの動作は確認できていません.

 

さて,まずアプリの中身ですが,PCのキーボードの写真を用いて説明します.

 

キーボード説明

キーボードと鍵盤

 

PCキーボードの真ん中の段(AからKまで)とその上段(Rを除くWからUまで)がピアノの鍵盤に相当します.下段が白鍵,上段が黒鍵です.

キーボード写真の下に,実際のピアノの鍵盤とキーを対応させた写真を載せました.
これらのキーを押すことで前回指定した1オクターブ分の周波数の音が,250msの間再生されます.

なぜ250msかというと,今回試してみたところ重音の再生ができなかったために,単音で鳴らして短くなりすぎずある程度の連打が可能な長さをいろいろ試した結果そうなりました.

いつか和音を可能にして音色も調整し,本物のピアノに近づけていければいいなと,漠然と考えております.

 

さて,アプリには他にオクターブ調整のキーもついています.

写真の左下,Zキーを押すことでオクターブをひとつ下げ,Xキーを押すことでひとつあげることができます.基本のオクターブに加え,上下ひとつづつを加えた計3オクターブがこのアプリで鳴らすことのできる音程です.

 

さらに最初にも述べた通り,録音再生機能を備えております.

Vキーを押すことでカウントダウン音が流れたのち,録音モードに入ります.
録音モードでは通常時と同様にピアノを弾くことができます.
再びVキーを押すことで録音モードを終了します.

録音終了後,右隣のBキーを押すことで録音内容の再生ができます.

録音時間上限はとくにありません.というよりまだそこまで長時間の録音をしたことがないので何ともいえません…

再びVキーを押して録音しない限りは録音内容は保存されているので,Bキーを押すことでいつでも再生できるようになっています.

 

機能がわかったところで,次は実際にアプリを起動してみます.

前回のプログラムを起動すると以下のような画面が出ます.

 

ビープ音画面

説明書きなどはオプションで追加したものです.

 

起動にはコマンドプロンプトを用いています.それまで私がよく使っていた統合開発環境(IDLE)ではうまく動きませんでした.

アプリを立ち上げた状態で鍵盤に相当するキーを押すと音が出ます.

Now key : 0
となっているのが現在のオクターブキーを表しています.

0が基本オクターブ
+1がひとつ上(Xキーを押すことで移動)
-1がひとつ下(Zキーを押すことで移動)

となっています.

これらを押すごとにオクターブが更新され,現在の値が一番下に追記されていきます.
(次の写真を参照)

 

ビープ音画面2

 

Vキーを押すと

prepare to record

と表示されたのちカウントダウン音が鳴り,その後録音モードに入ります.

 

再びVキーを押して録音モードを終了すると

stop recording

と表示がなされます.

 

Bキーを押すことで録音内容の再生が開始され,

playing music

と表示がされます.

 

再生が終わると

finish playing

と表示がなされます.

 

ビープ音画面6

 

実はこの表示がなされ再生モードが終了するまでの間,一切のキー操作を行うことができなくなります.長時間録音を試していないのはこのような理由もあります…

何かしらコードを追記して解決すればいいのですが,今回は軽い気持ちで試したこともあり放置してしまいました(笑)

 

アプリの説明だけで長くなってプログラムの中身に入れませんでした.次回に持ち越しです.

次の記事はこちらです.

Pythonを使ってWindowsのビープ音で遊んでみる(その3)

 

K.M

東京大学 工学系研究科 修士課程1年

2024.1  
給料も教育もガッツリと!メンター制度開始します  詳しく