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;
})

Comments(2) | TrackBack(0) │ この記事をクリップ!  (14:28)

2009年09月10日

このブログはこちら に移転しました

ヴィオラをはじめて4ヶ月が経ちました。
いまだボーイングが安定しないし、ファーストポジションもピッチ合わないんだよね…。
コントラバスとの違いは予想より大きかったです。
まあ練習のしがいがあるってものですよ。

これから少しずつ練習日記を書くかも。
Comments(0) | TrackBack(0) │ この記事をクリップ!  (23:45)

2009年08月11日

このブログはこちら に移転しました

ubuntuでUA25の設定をした際の試行錯誤の記録です。
私はLinux初心者ですから大した参考にはならないでしょう。あしからず。

まずサウンドの認識順序を固定してみる。
sudo gedit /etc/modprobe.d/alsa-base.conf
でalsa-base.confを開いて
options デバイス名 index=読み込み順
を記述。
(デバイス名は /proc/asound/modules 参照)

うちの場合は
options UA25 index=0

HDMI(たぶんオンボードのデバイス)も存在していてややこしかったので、同ファイルに
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ムービーが再生できなかった問題も解消されました。
音声と映像の同期をとろうとして失敗してたんだろうか。
Comments(0) | TrackBack(0) │ この記事をクリップ!  (23:15)

プロフィール
Author : 霧末よま
主にベースと鍵盤を弾きます。
あと作曲もします。
ほそぼそと活動中。
このブログはこちら に移転しました


ニコニコ動画Mylist

http://www.nicovideo.jp/mylist/12197901

Twitterはじめました。
http://twitter.com/kirisueyoma
連絡先
cayenneb【atmark】livedoor.com
記事検索
QRコード
QRコード
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

  • ライブドアブログ