pythonでビープ音を鳴らし、あまつさえ演奏する。
追記
C言語でほぼ同じ事をした記事もあります。
pythonにはwinsoundというのがあって、wav再生したりエラー音再生したりビープ音鳴らしたり出来るらしい。 そう、ビープ音を鳴らせる! これは楽しい! ってことで、ちょっと遊んでみた。
>>> import winsound
>>> winsound.Beep(523, 500)
てやると、523Hz(ド)の音が500ミリ秒鳴る。 37Hzから32,767Hzまで対応とのことで、結構幅広め。
で、こいつを使って演奏してみた・・・っていうか、演奏できるようにしてみた。
#coding:utf-8
#
# ビープ音で演奏するやつ。
#
# 周波数の参考: http://asrite.blog.fc2.com/blog-entry-229.html
#
# MIT License (c)2013 MacRat
from winsound import Beep
from time import sleep
BASE = 500
sound = tuple(sorted((
(u'ド', 523),
(u'レ', 587),
(u'ミ', 659),
(u'ファ', 698),
(u'ソ', 784),
(u'ラ', 880),
(u'シ', 932),
), key=lambda x: len(x[0]), reverse=True))
def Play(l):
while l:
for name, key in sound:
if l.startswith(' '):
l = l[1:]
print
sleep(BASE/1000.0)
if l.startswith(name):
l = l[len(name):]
time = 1
while l.startswith(u'ー'):
l = l[1:]
time += 1
print name + u'ー'*(time-1)
Beep(key, BASE*time)
break
else:
l = l[1:]
if __name__ == '__main__':
#Play(u'ドレミファソラシ')
Play(u'ドレミーレド ドレミレドレー')
ご覧のとおり、ドレミで入力したものを演奏してくれます。 今のところド-シまでの対応だけれど、soundに周波数の情報を追加すれば一オクターブ上も下も鳴らせる。
面白い、けど、意味ないなぁこれ・・・。