2009-01-01から1年間の記事一覧

コードを読み込む

小技ですが、SCの起動と同時にコードを読み込む方法。 例えばこのようなコードがあって SynthDef("hoge", { o = SinOsc.ar(80,0,SinOsc.ar(1)); Out.ar(0, o!2); }).send(s); 「mogehoge」というファイルに書いて保存してあるとしますと、startup.scに以下の…

MIDIコンつなげる

nanoKONTROL買ったぜ! もはや楽器とは思えぬ値段で笑ける。凄い時代であります。 というわけで早速つなげてみます。まずnanoKONTROL挿した状態でboot、次に CCResponder({|src,ch,num,val| [src,ch,num,val].postln }); としますと MIDI Sources: MIDIEndPo…

メモリサイズ

時間が足りない コードが長大になってくると、時々ディレイを使いすぎるということが起こります。 個々のディレイが短くても、合計時間には上限があるらしい。何十秒もあれば充分だろうと思うかもしれないが、そんなことはない。って俺だけか これは23秒ディ…

クラス書いてみる

一連の処理をクラスという形にまとめておくと、使い回しが効いて便利らしいです。 PsyColliderの起動時に、猛烈な勢いで文字が流れてますが、あの中に「compiling class library..」「compile done」といった文言があって、どうもクラスというのは起動時に読…

Routineで作曲とレンダリング

サイコロを使わない作曲法を考えてますが、考えはじめると難しい というか適当を以って旨とする本文の趣旨とはだいぶかけ離れてきますな。 ( ~va = [0,0,0,0,1]; // 音列 ~sc = [0,2,3,5,7,9,10]; // 音階 SynthDef("hoge", { arg nn; var e = EnvGen.ar(Env…

Routineで作曲?

作曲と言ってもどうやるんだよという話ですが、せっかくプログラム言語でやってるので、メロディー書くとか心を込めて歌い上げるとか、そうした方向ではないものを目指したい。 うまく行くかどうかはともかく、どんな方法が可能なのかだけを血も涙もなしに考…

制御文

一般にプログラムというものは、通常上から順に処理するところを、制御文を使って、処理をループさせたり、条件によって処理を変えたりできる。 かつそこに時間が挟まると、制御構造=楽曲構造、みたいな面白げなことができるのではー と妄想するのだが、い…

バスなど

バスというのはチャンネルとかシールドみたいな理解でいいのか。 通常の左右2チャンネルの環境だと、0番と1番は音が出ます。 ところが2番以降は音が出ない。これを使ってシンセからシンセに音(とかコントロールレート)を渡してやることが出来るという。 例…

ファイル再生

PlayBuf もうひとつ憶えといたらよさそうなのがファイル再生関連のUGen。 なのだが、これを使うには最初にファイルの読み込みをしなければならんらしい。事前にこれやれと。 Buffer.read(s, "hoge.wav", bufnum:10); // バッファ10番に読み込む bufnumという…

リズムマシンヌ

へぼいドラム エンベロープと基本波形の組み合わせでドラム音が作れるのでは。 SynthDef("kk", { var e = EnvGen.ar(Env.perc(0, 0.2)); o = SinOsc.ar(e**10*1000+60, 0, e); Out.ar(0, Pan2.ar(o, 0)); }).play; キックです。アタックのノイズっぽい感じは…

エンベロープ

以前UGenの説明なんかやってられっか、と書きましたが 音作りの基本的に押さえといたらいいんではないか、というのはいくつかある。 例えばEnvGenはエンベロープを生じせしめるものですが、エンベロープが何かというと、音量の変化と言うか、音の輪郭と言う…

スコアとレンダリング

疲れるのは嫌なので、もっとこう、マシンぽく自動的にできないものか、ということでした。 スコア x = [ [0.0, [ \s_new, \hoge, 1000, 0, 0, \nn, 60 ]], // 0.0秒後、ノード1000番としてhogeを立ち上げる。nnは60 [0.5, [ \n_set, 1000, \nn, 62 ]], // 0.…

SynthDef

箇条書き(と言うのかわからないけど)を使っていろいろ音作りができそうなことはわかった。 これをSynthDef(「シンセの定義」だろうか)というものの中に入れると、名前をつけたり、出し入れできたり、ひとつの音源のように扱うことができる。 SynthDef("h…

計算

関数 randとかmidicpsというのは関数だろう。 (Operatorsヘルプによると単項演算子と二項演算子という言い方なんだが) 関数とは、ある数をくれてやると、計算した結果を返してくれるというやつ。 60.midicps.postln; 関数のふるまいを手っ取り早く見るには…

Mixの用法

{ SinOsc.ar([400, 500]) }.play; こう書くと左右別々に鳴らせる。ほほー { SinOsc.ar([400, 500, 600]) }.play; 三つ同時は無理だったもよう。右の次というのはないもんな { Mix(SinOsc.ar([400, 500, 600])) }.play; Mixで三つ同時に鳴らせる。ただしこれ…

箇条書き

{ SinOsc.ar(SinOsc.ar(1, 0, 1000)) }.play; 入れ子でもずらずら書けるんだけど、見にくいよね。 { a = SinOsc.ar(1, 0, 1000); b = SinOsc.ar(a); // 周波数をaにする }.play; さっきと同じ意味だが、こんな感じに分解して書ける。 箇条書き、と言うのかわ…

波形など

入れ子 またまたWin32Tests.sc { SinOsc.ar(LFNoise0.kr([8, 12], 200, [300, 400]), 0, 0.1) }.play; これというのはもしかして、SinOscの中にLFNoise0が入れ子になってるっていう。 気になったらすぐ書いて試してみる。 { SinOsc.ar(1000, 0, SinOsc.ar(1)…

基本操作など

勉強しながらいろいろ書こうと思いますが 勉強しながらですので、もし変なこととか書いてましたらお許しを。 わかり次第修正します。 さてフォルダの中を見てまわって判明したのですが、大変素晴らしいことに日本語ドキュメントが既にあるのですよ。何ともあ…

導入

SuperColliderは、音響合成用プログラミング環境および言語である。 何でも、プログラミングで音が作れるもののようです。 なんだそれはー ではやってみますか。 筆者はWindowsなのでそれ用のをもらってきます。→sourceforge 以後これに従って書くが、コード…