スレッドを使わない
昨日の日記の修正に時間を使ったので今日はサクッと。基本的にPythonで対話的に音を作れるのが嬉しいPySndObjなのでSndThreadというスレッドを使うのが1番ですが、使わない方法もあります。
from sndobj import * import time tab = HarmTable(256, 3, 4) osc = Oscili(tab, 440, 3000) outp = SndRTIO(1, SND_OUTPUT) outp.SetOutput(1, osc) for n in range(1722): osc.DoProcess() outp.Write()
音が鳴るのはおよそ10秒です。なぜならSndObj標準で1度に計算するサンプル数は256ですのでサンプリングレート44100を256で割ると、1秒に172回、10秒なら1722回DoProcess()しているから。スレッドを使わないので多少コードは短くなりますが、対話でプログラミングしている場合for文が終了するまで手持ち無沙汰ということも。