June 2012

June 09, 2012

February 17, 2008 ライブマシーン作成日誌:最終章

SC糞食らえ

とまでは言わないが、適材適所があると思いました。僕の中でSCはライブツールじゃなくなってきた。NRTとかしっくりきちゃうし。
自分で組んだコードだと信頼性が怖い。たまたま何か間違えたときの復帰が大変だもんな。
なんかの拍子にnilにメッセージ送信(タイムラグのある処理の途中とかだとこれがたまにある)とかされて全クロック停止とかしたらたまんないもの。
前半普通にやって途中で止めて、中盤SCらしいことやって遊んで、また後半とかやるのも良いよね。

デモ版でHelix突っ込んで、Vengenceのサンプル(手本用)突っ込んで鳴らしたら良すぎた。
あのシンセは、僕がReaktorで作りかけてたシンセのアイディアの大部分を大胆にもパクってやがる。
触ってるとその設計に不思議な共感みたいなものを感じる。融通と効率の間で葛藤してる様とか。
HelixはVST版しかないのでLogicで鳴らせません。悔しい。

Liveの設計に関しては共感というより、手を抜くのが上手くて仕事効率の高い人を見てる感じ。
Live+Helix+Vengenceでハードテクノが10分でぐんぐんできて嫌な感じ。
理論全然勉強してないのに完璧かつ刺激的な和音とか付けるギタリスト見てる感じ。嫌な感じ。
たぶん僕はLiveを買うぞ。

BCR2000とFA-101がいつものパソコンかばんに入るか試してみたら、辛うじてギリギリだが入った。
でかいの買ったのはちょっと後悔だが、このでかさが映えるというのもまた真なり。
持って行けない事も無さそうだが、相当重くなるね。

とかなんとかいってもまだまだ先の話なんだけどね。仕事が遅いので今から準備しても間に合うかどうか分からない俺大丈夫か。
今のままじゃたぶん曲数が足りない。前のボツ曲とか8小節しか作ってないやつとか、サンプルをパラで取り込んで並べたりしてなんとかかんとかしよう。


June 03, 2012

February 16, 2008 ライブマシーン作成日誌:サンプルのテンポクロック同期再生

サンプルをクロックに同期再生させるだけで、おおよそこれだけのコードになる。これは嫌になる。もう死ぬ。
簡単に説明すると、サンプルを16分音符単位で細切れに、クロックでトリガーしているのだが、派手なリズムは兎も角、パッド音等を再生しようとすると、非常にブチる。
ブチりまくっていつもの神経質どころの問題じゃない。

SuperColliderのシーケンス部とオーディオ生成部が独立していて、そこの同期が完璧でないから、どうしてもシーケンス部で計算したサンプルのスタートポイント、命令時刻と、実際のオーディオサンプル単位の再生位置がずれてくる。
サンプラーに細切れのサンプルを取り込んで、シーケンサーとMIDIケーブルで接続して鳴らす事を考えれば割と近い。
なんとか気にならない程度にクロスフェードさせた結果がこれ。当倍速再生でも原音そのまま鳴らせてない。
変にローレベルな計算をさせるもんだからCPU負荷が無駄だらけ。
もっといい方法は無いかいね。

s.boot;
(
SynthDef('test_buffer', {
arg outBus=0, bNum, amp=1.0, sStart=0, fdDur=0.01, sLength=0.5;
var line, fade, out;

line = Sweep.ar(1, 1);
FreeSelf.kr( line >= (sLength+fdDur) );
fade = ((line.min(fdDur)/fdDur)*(1-((line-sLength)/fdDur).max(0).min(1)));
out = BufRd.ar(2, bNum, line+sStart * BufSampleRate.kr(bNum), 0, 0);
out = fade * out;

OffsetOut.ar(outBus, out);
}).send(s);

//Synth('test_buffer', ['bNum', b, 'sStart', 0, 'sLength', 1/2*b.sampleRate])
b = Buffer.read(s,"07072900test2.aif", 0, nil, nil, 10);
)

(
~sPos16 = 0;
~clock = TempoClock(160/60);

~clock.schedAbs(~clock.beats.roundUp(1), {
var msg, syn;
msg = Array.new(16);

syn = Synth.basicNew('test_buffer');
msg.add( syn.newMsg(0, ['bNum', b, 'sStart', ~sPos16%128*(b.duration/128), 'sLength', ~clock.beatDur/4]) );

s.listSendBundle(0.1, msg);

~sPos16 = ~sPos16+1;
1/4;
});
)


Profile

imoutoid◆u2zN8etdHw
イモウトイド
imoutoid is musicoid creatoroid

このブログは、'09年4月に亡くなった imoutoid こと私の息子が書いていた記事を、少しずつ再掲しています。
時々、私が息子の思い出などを書いております。(imoutoid の父)

[mixi] [Banner]
訪問者数
  • 今日:
  • 昨日:
  • 累計:

Recent Comments
livedoor Readerに登録
RSS
livedoor Blog(ブログ)