2013/02/01

SineWave合成プラグイン Nyquist

先月LADSPAプラグイン同じようなものを作ったのだけど、より手軽にNyquistでも作ってみた。Nyquistはインタプリタなので、初期設定を簡単にいじれるよさがある。8つの任意の周波数とゲインのサイン波を合成して生成するプラグイン。AudacityではGenerateタイプになる。この種類のプラグインは、はじめて作った。

インストール

使用するにはテキストエディタに下記ソースコード内容をコピー。名前はnamagi_sinewave.nyとして保存。Audacity/Plug-Insフォルダの中に入れれば使えるようになる。

使いかた

AudacityのGenerateメニューからNamagi: SineWaveを選択すると以下のウィンドウが表示されるので、8つの周波数とゲインを調整し、生成する時間を入れてOKを押せば、合成波形が作られる。

上記の設定のまま実行すると、以下のような複雑な波形が10秒作られる。


ソースコードはとても単純。使っているのはNyquistに用意されたものだけなので、あまりプログラムとは呼べないレベル。stretchで生成する時間を指定して、あとはひたすらsineを足していくという内容。

Namagi SineWave Nyquist ソースコード

;nyquist plug-in
;version 1
;type generate
;name "Namagi: SineWave ver.130201..."
;action "Namagi: SineWave ver.130201..."
;info ""

;control time "length(sec)" real "" 10 0 600
;control freq1 "freq1" real "" 100 0 22050
;control gain1 "gain1" real "" 0.2 0 1.0
;control freq2 "freq2" real "" 200 30 22050
;control gain2 "gain2" real "" 0.2 0 1.0
;control freq3 "freq3" real "" 400 0 22050
;control gain3 "gain3" real "" 0.2 0 1.0
;control freq4 "freq4" real "" 800 0 22050
;control gain4 "gain4" real "" 0.2 0 1.0
;control freq5 "freq5" real "" 1600 0 22050
;control gain5 "gain5" real "" 0.2 0 1.0
;control freq6 "freq6" real "" 3200 0 22050
;control gain6 "gain6" real "" 0.2 0 1.0
;control freq7 "freq7" real "" 6400 0 22050
;control gain7 "gain7" real "" 0.2 0 1.0
;control freq8 "freq8" real "" 12800 0 22050
;control gain8 "gain8" real "" 0.2 0 1.0

(stretch time 
(sim 
(scale gain1 (sine (hz-to-step freq1)))
(scale gain2 (sine (hz-to-step freq2)))
(scale gain3 (sine (hz-to-step freq3)))
(scale gain4 (sine (hz-to-step freq4)))
(scale gain5 (sine (hz-to-step freq5)))
(scale gain6 (sine (hz-to-step freq6)))
(scale gain7 (sine (hz-to-step freq7)))
(scale gain8 (sine (hz-to-step freq8)))))


ゲインは何かとdBの方が便利に思えたので、dB版も作ってみた。

Namagi SineWave Nyquist dB ソースコード

;nyquist plug-in
;version 1
;type generate
;name "Namagi: SineWave dB ver.130201..."
;action "Namagi: SineWave dB ver.130201..."
;info ""

;control time "length" real "sec" 10 0 600
;control freq1 "freq1" real "Hz" 100 0 22050
;control gain1 "gain1" real "dB" -20 -120 0
;control freq2 "freq2" real "Hz" 200 30 22050
;control gain2 "gain2" real "dB" -20 -120 0
;control freq3 "freq3" real "Hz" 400 0 22050
;control gain3 "gain3" real "dB" -20 -120 0
;control freq4 "freq4" real "Hz" 800 0 22050
;control gain4 "gain4" real "dB" -20 -120 0
;control freq5 "freq5" real "Hz" 1600 0 22050
;control gain5 "gain5" real "dB" -20 -120 0
;control freq6 "freq6" real "Hz" 3200 0 22050
;control gain6 "gain6" real "dB" -20 -120 0
;control freq7 "freq7" real "Hz" 6400 0 22050
;control gain7 "gain7" real "dB" -20 -120 0
;control freq8 "freq8" real "Hz" 12800 0 22050
;control gain8 "gain8" real "dB" -20 -120 0

(stretch time 
(sim 
(scale-db gain1 (sine (hz-to-step freq1)))
(scale-db gain2 (sine (hz-to-step freq2)))
(scale-db gain3 (sine (hz-to-step freq3)))
(scale-db gain4 (sine (hz-to-step freq4)))
(scale-db gain5 (sine (hz-to-step freq5)))
(scale-db gain6 (sine (hz-to-step freq6)))
(scale-db gain7 (sine (hz-to-step freq7)))
(scale-db gain8 (sine (hz-to-step freq8)))))


sound programming 目次