2006-07-01から1ヶ月間の記事一覧

GUIその2(ボタン入力)

Linuxの音楽環境のセットアップと夏風邪で前回の日記からちょい間があきました。しかし少しづつ地味に続けていきます。今日はGUIのボタンを作ってそれを1度押すと正弦波が鳴り、もう1度押すと鳴り止む、それの繰り返し。 import wx from sndobj import * tab…

GUIその1(キー入力)

PySndObjそのものにはGUIを持ちえていません。そこでwxPythonを使ってパソコンキーボードのpを押せば正弦波が鳴る、sを押せば鳴り止む、最後にqを押せば終了する。以上を作ってみる。wxPythonの入門には以下のページを参考にしました。 import wx from sndob…

MIDI入力

MIDIキーボードなどのデバイスからOscili()の周波数を変えてみましょう。 from sndobj import * import time MidiDeviceList() #利用可能なMIDIデバイスを表示します port = int(raw_input("Enter MIDI port:")) #入力待ち midi = SndMidiIn(port) note = Mi…

スレッドを使わない

昨日の日記の修正に時間を使ったので今日はサクッと。基本的にPythonで対話的に音を作れるのが嬉しいPySndObjなのでSndThreadというスレッドを使うのが1番ですが、使わない方法もあります。 from sndobj import * import time tab = HarmTable(256, 3, 4) os…

オーディオレートとコントロールレートとベクトルの大きさ

大幅に書き換えました。(2007 4/13) 昨日の日記で取り上げたローパスフィルタは引数が省略されていました。多くの(すべてではない)SndObjにおいて最後2つの引数はvector sizeとサンプリングレートです。 まずvector size(ベクトルの大きさ)ですが、これはコ…

フィルタ

PySndObjにはたくさんのフィルタがありますが、基本のローパスフィルタを使ってみる。カットオフ周波数が定数のLowPass()ではなく、オシレータなどでコントロールできるButtLP()を、例によって4つ目の引数以上は省略。 ButtLP(fr, SndObj, SndObj) #3つ目の…

エンベロープ

例として1つ取り上げます。残念ながらちょっと物足りない感じではありますが、そのうち、もうちょっといい方法が思いつくかもしれません。 エンベロープはADSRを使います。以下は8つ目の引数以上は省略しています。 ADSR(att, maxamp, dec, sus, rel, dur, S…

ファイル書き込み

正弦波をpyo.wavに書き込む。昨日の日記、SndWaveをファイル書き込みに使用します。再生しながらファイルに書き込む方法は今調査中。 from sndobj import * import time tab = HarmTable() osc = Oscili(tab, 440, 3000) write = SndWave("pyo.wav", OVERWRI…

ファイルの読み込み

何通りかの方法が考えられるんですが、PySndObjにはSndObjクラスの下にSndReadがあり、SndIOクラスの下にはSndWaveなどがあって、多くの入出力がSndObjをあつかうので、SndWaveは1度SndInに突っ込んでからになってします。ちょっと面倒くさいのでSndReadから…

周波数変調

正弦波の次はその周波数変調。調べたところ2通りあるようで、その1つはOsciliの4番目の引数に周波数をコントロールするためにサウンドオブジェクトを代入できる、下のコードではmodですね。 from sndobj import * import time tab = HarmTable() mod = Oscil…