2010年02月27日
このブログはこちら
に移転しました
///SuperColliderデビューしてみた
///適度なランダムが楽しい
s = Server.default;
SynthDef("bd", {
arg outbus = 0, vol = 0.4, vel = 1.0;
var freq, enva, envf, osc, out;
freq = EnvGen.kr(Env.new([2000, 80, 30], [0.010, 0.30], 'linear'));
envf = EnvGen.kr(Env.new([4000, 1000, 10], [0.015, 0.3], 'linear'));
enva = EnvGen.kr(Env.perc(0.001, 0.7, 1, -4), doneAction:2);
osc = LFPulse.ar(freq, 0, 0.8) + SinOsc.ar(freq, 0);
osc = LPF.ar(osc, envf);
osc = LPF.ar(osc, envf, enva);
out = clip2(osc, 0.8);
Out.ar(outbus, Pan2.ar(out, rand(0.5, -0.5), vol*vel));
}).send(s);
SynthDef("sd", {
arg outbus = 0, vol = 0.5, vel = 1.0, freqmul = 1, pan = 0;
var freq, enva, envf, osc, noise, out;
freq = EnvGen.kr(Env.new([200, 130, 80], [0.008, 0.30], 'linear')) * freqmul;
envf = EnvGen.kr(Env.new([4000, 1000, 10], [0.015, 0.3], 'linear'));
enva = EnvGen.kr(Env.perc(0.001, 0.3, 1, -4), doneAction:2);
osc = LFPulse.ar(freq, 0, 0.5) + LFPulse.ar(freq*0.8, 0, 0.4) * 0.2 + SinOsc.ar(freq*1.2, 0);
osc = LPF.ar(osc, envf);
osc = LPF.ar(osc, envf, enva);
noise = WhiteNoise.ar(1);
noise = BPF.ar(noise, 120, 40) + LPF.ar(noise, envf*2, enva.squared);
noise = noise * enva.squared * 0.5;
out = clip2(osc + noise, 1);
Out.ar(outbus, Pan2.ar(out, pan, vol*vel*0.8));
}).send(s);
SynthDef("hh", {
arg outbus = 0, vol = 0.2, vel = 1.0, freqmul = 1, pan = 0;
var freq, enva, envf, osc, noise, out;
freq = EnvGen.kr(Env.new([200, 130, 80], [0.008, 0.30], 'linear')) * freqmul;
envf = EnvGen.kr(Env.new([4000, 1000, 10], [0.015, 0.3], 'linear'));
enva = EnvGen.kr(Env.perc(0.001, 0.1, 1, -4), doneAction:2);
//osc = LFPulse.ar(freq, 0, 0.5) + LFPulse.ar(freq*0.8, 0, 0.4) * 0.2 + SinOsc.ar(freq*1.2, 0);
//osc = LPF.ar(osc, envf);
//osc = LPF.ar(osc, envf, enva);
noise = WhiteNoise.ar(1);
noise = BPF.ar(noise, 900, 100) + LPF.ar(noise, envf*7, enva.squared);
noise = noise * enva.squared ;
out = clip2(noise, 1);
Out.ar(outbus, Pan2.ar(out, pan, vol*vel*0.8));
}).send(s);
SynthDef("syn", {
arg outbus = 0, vol = 1.0, vel = 1.0, note = 60, gate = 1;
var enva, envf, freq, osc, out;
freq = note.midicps;
envf = (EnvGen.kr(Env.adsr(0.02, 0.2, 0.7, 0.2, 1, -9))) * 1000;
enva = EnvGen.kr(Env.adsr(0.02, 0.2, 0.7, 0.1, 1, -9), gate);
osc = LFPulse.ar(freq, 0, 0.5);
//osc = LPF.ar(osc, envf);
osc = LPF.ar(osc, envf, enva);
osc = MoogFF.ar(osc, SinOsc.kr(0.2, 0, 500, 1200), 1.87);
out = clip2(osc * 1.2, 1);
Out.ar(outbus, Pan2.ar(out, 0, vol*vel*0.8));
}).send(s);
SynthDef("mo", {
arg outBus=0,
var out;
out = In.ar(outBus, 2);
out = HPF.ar(out * 1.2, 40);
out = Limiter.ar(out, 1.0, 0.02);
ReplaceOut.ar(outBus, out);
}).send(s);
~bpm = 136;
~spb = 48; //step per beat
~clock = TempoClock(~bpm/60);
~firsttime = 1;
~cp = 0;
~step = 192;
//[note, step, gatetime, vel(0-1)]
~synseq = [
[26,12,8,1],
[50,12,8,0.5],
[26,24,24,0.8],
[100,12,48,0.7],
[62,36,8,1],
[20,48,24,1],
[62,12,24,1],
[28,24,24,1],
[32,12,24,1]
];
~synseq_c = 0; //counter
~synseq_n = 0; //next position
~synseq_f = 0; //gateoff flag
//[step, vel(0-1)]
~bdseq = [
[36,1],
[12,0.7],
[48,1],
[48,1],
[32,1],
[16,0.7],
];
~bdseq_c = 0; //counter
~bdseq_n = 0; //next position
~sdseq = [
[48,0],
[48,1],
[16,0],
[16,0],
[16,0],
[12,1],
[24,0],
[12,0.5]
];
~sdseq_c = 0; //counter
~sdseq_n = 0; //next position
~clock.sched(0.0, {
var seqrow, v;
////// 初期設定
if (~firsttime == 1) {
~group = Group.new;
~syn = Synth.head(~group, "syn", [\gate, 0]);
~fx = Synth.tail(~group, "mo", [\gate, 0]);
~firsttime = 0;
};
////// Synth部
if (~synseq_n == ~cp) {
seqrow = ~synseq.wrapAt(~synseq_c);
//synrow.postln;
switch ((~synseq_f),
{0}, {
if (seqrow[3] == 0) {
~syn.set(\gate, 0);
~synseq_n = ~cp + seqrow[1];
~synseq_c = ~synseq_c + 1;
};
if (seqrow[3] != 0) {
//"noteon".postln;
~syn.set(\gate, 1, \note, seqrow[0], \vel, seqrow[3]);
~synseq_n = ~cp + min(seqrow[1], seqrow[2]);
~synseq_c = ~synseq_c + 1;
if (seqrow[1] > seqrow[2]){~synseq_f = 1; ~synseq_c = ~synseq_c - 1;};
};
},
{1},{
//"noteoff".postln;
~syn.set(\gate, 0);
~synseq_n = ~cp + seqrow[1] - seqrow[2];
~synseq_c = ~synseq_c + 1;
~synseq_f = 0;
});
};
/// Perc部
if ((~cp % 12 ) == 0) {
if (10.rand < 2) {
Synth.tail(~group,"bd",[\vel,rrand(0.2, 1)]);
};
};
if (~sdseq_n == ~cp) {
seqrow = ~sdseq.wrapAt(~sdseq_c);
Synth.tail(~group,"sd",[\vel,seqrow[1]]);
~sdseq_n = ~cp + seqrow[0];
~sdseq_c = ~sdseq_c + 1
};
if ((~cp % 12 ) == 0) {
if (10.rand < 3) {
Synth.tail(~group,"hh",[\vel,rrand(0.2, 0.5), \freqmul, 6, \pan, [-1, 1].choose ]);
};
};
/// Counter制御
//~cp.postln;
~cp = ~cp + 1;
(~cp == (~step)).if{
~cp=0;
~synseq_n = 0; //next position
~synseq_c = 0;
~bdseq_n = 0;
~bdseq_c = 0;
~sdseq_n = 0;
~sdseq_c = 0;
};
1/~spb;
})
2009年09月10日
このブログはこちら
に移転しました
ヴィオラをはじめて4ヶ月が経ちました。
いまだボーイングが安定しないし、ファーストポジションもピッチ合わないんだよね…。
コントラバスとの違いは予想より大きかったです。
まあ練習のしがいがあるってものですよ。
これから少しずつ練習日記を書くかも。
いまだボーイングが安定しないし、ファーストポジションもピッチ合わないんだよね…。
コントラバスとの違いは予想より大きかったです。
まあ練習のしがいがあるってものですよ。
これから少しずつ練習日記を書くかも。
2009年08月11日
このブログはこちら
に移転しました
ubuntuでUA25の設定をした際の試行錯誤の記録です。
私はLinux初心者ですから大した参考にはならないでしょう。あしからず。
まずサウンドの認識順序を固定してみる。
でalsa-base.confを開いて
を記述。
(デバイス名は /proc/asound/modules 参照)
うちの場合は
HDMI(たぶんオンボードのデバイス)も存在していてややこしかったので、同ファイルに
の行を追加して読み込まれないようにしてみた。
あとDefaultのデバイスを設定するために、
でわかったデバイス名を
そして再起動。
しかしここまでやっても音は鳴らなかった。
ログイン時しか音が鳴らないってどういうこと(泣
端末上でspeaker-testをやるとしっかりと音が鳴るってのも訳分からん。
諦め半分にLinuxのサウンド周辺の文章を漁っていると、
どうやらPulseaudioがALSAの出力を横取りしているような気がしてきたので、
Ubuntu 8.10 で PulseAudio を システムから取り除く方法
を参考にPulseaudioを削除。
システム>設定>サウンドのデフォルトのミキサ・トラックの欄が空になってしまった(UA25にはハードウェアミキサがついてない)ので、
ALSA wikiを参考に.asoundrcをホームディレクトリに作成して再起動。
(Resulting .asoundrc file の内容をコピペしただけ)
これでソフトウェアミキサが入りました。
そうしたら音が出ましたとさ。めでたしめでたし。
きっと他の方法もあったんだろうね。
結局Pulseaudioは消しちゃったんだが良かったのだろうか。
Pulseaudioを消さなくてもソフトウェアミキサを導入していれば音がでたんじゃないかと思ったけど、試すのが面倒くさいのでそのままにしてます。
FirefoxでFlashムービーが再生できなかった問題も解消されました。
音声と映像の同期をとろうとして失敗してたんだろうか。
私はLinux初心者ですから大した参考にはならないでしょう。あしからず。
まずサウンドの認識順序を固定してみる。
sudo gedit /etc/modprobe.d/alsa-base.confでalsa-base.confを開いて
options デバイス名 index=読み込み順を記述。
(デバイス名は /proc/asound/modules 参照)
うちの場合は
options UA25 index=0HDMI(たぶんオンボードのデバイス)も存在していてややこしかったので、同ファイルに
blacklist hda-intel-audioの行を追加して読み込まれないようにしてみた。
あとDefaultのデバイスを設定するために、
asoundconf listでわかったデバイス名を
asoundconf set-default-card デバイス名そして再起動。
しかしここまでやっても音は鳴らなかった。
ログイン時しか音が鳴らないってどういうこと(泣
端末上でspeaker-testをやるとしっかりと音が鳴るってのも訳分からん。
諦め半分にLinuxのサウンド周辺の文章を漁っていると、
どうやらPulseaudioがALSAの出力を横取りしているような気がしてきたので、
Ubuntu 8.10 で PulseAudio を システムから取り除く方法
を参考にPulseaudioを削除。
システム>設定>サウンドのデフォルトのミキサ・トラックの欄が空になってしまった(UA25にはハードウェアミキサがついてない)ので、
ALSA wikiを参考に.asoundrcをホームディレクトリに作成して再起動。
(Resulting .asoundrc file の内容をコピペしただけ)
これでソフトウェアミキサが入りました。
そうしたら音が出ましたとさ。めでたしめでたし。
きっと他の方法もあったんだろうね。
結局Pulseaudioは消しちゃったんだが良かったのだろうか。
Pulseaudioを消さなくてもソフトウェアミキサを導入していれば音がでたんじゃないかと思ったけど、試すのが面倒くさいのでそのままにしてます。
FirefoxでFlashムービーが再生できなかった問題も解消されました。
音声と映像の同期をとろうとして失敗してたんだろうか。