ChucKによる1bit音楽

ChucK http://chuck.cs.princeton.edu/ 長じてminiAudicleが装備され、使いやすくなった。 pdやscと比較してChucKで注目した点 サンプル単位の演算 物理モデル音源 制御構造 特にサンプル単位の演算というのはpdのfexpr~以来で、何に使うんだという話だが、 …

謎の楽器

キー入力が使えるということがわかったので、鍵盤楽器のようなものを作ってみた。 ( // 音源 SynthDef("wave", {|note,amp| f = note.lag(0.02).midicps; g = amp.lag(0.2); o = SinOsc.ar(f)!2*g; Out.ar(0,o/2); }).store; // 音源はじめる s.sendMsg(\s_n…

pdをやりなおす(5)

乱数 #N canvas 0 0 667 306 12; #X obj 71 123 random 100; #X obj 71 50 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 ; #X floatatom 71 162 5 0 0 0 - - -; #X obj 71 85 metro 200; #X obj 244 85 samphold~; #X obj 304 45 phasor~ 5; #X …

pdをやりなおす(4)

ディレイ #N canvas 0 0 450 300 12; #X obj 150 104 *~; #X obj 168 68 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 149 24 adc~; #N canvas 0 0 482 383 wow 0; #X obj 67 203 phasor~; #X obj 69 77 samphold~; #X obj 68 34 noise~…

外部との連携(OpenSound Control:OSC)

OSCを使って、様々なアプリケーションの間で通信、連携することができる。 対応ライブラリの一覧 http://opensoundcontrol.org/implementations 対応アプリケーションは多岐に亘るが、今回はpdとSuperCollider(sc)との連携例を考える。 pdでは拡張オブジェク…

pdをやりなおす(3)

制御オブジェクト #N canvas 0 0 450 300 12; #X obj 200 71 key; #X floatatom 119 127 5 0 0 0 - - -; #X obj 200 131 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 200 169 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0…

pdをやりなおす(2)

効率的なプログラミング #N canvas 0 0 450 300 12; #N canvas 0 0 450 300 hoge 0; #X obj 97 46 inlet; #X obj 232 468 dac~; #X obj 233 416 *~; #X obj 251 181 line~; #X obj 98 367 osc~; #X msg 251 142 1 \, 0 400; #X obj 115 242 expr~ pow($v1 \,…

pdをやりなおす(1)

参考 オーディオプログラミング言語の比較 http://en.wikipedia.org/wiki/Comparison_of_audio_synthesis_environments 開発者Miller Puckette氏サイト http://crca.ucsd.edu/~msp/ 「電子音楽の理論とテクニック」http://crca.ucsd.edu/~msp/techniques.htm…

関数など

関数とはこのようなものであった。 f = {arg a,b; a+b }; この「f」なる関数は「a+b」をする。引数のところは以下のように書き換え可 f = {|a,b| a+b }; 二つは同じ意味である。引数に数をくれるには以下のごとく f.(2,3); めでたく「5」と出ます。 ただしこ…

エフェクト(2)

波形の演算 前回はディレイでもっていろいろなエフェクトを作ってみましたが、今度は波形を演算する方法を考える。音データとは波形であり、波形は数字で表現されているのであった。というわけで音量を上げ下げするには単に掛け算すればよい、となります。 S…

近況、エフェクト(1)

sc3.3 for win 些か旧聞ですがwin版sc3.3の安定版が出ました。 SuperCollider (SourceForge) SuperCollider 3.3.1 win版について でもって本文導入部分に多少の変更を要するとは思うのですが、各自よしなにお願い致す。 sc文法一覧 加えてこちらの記事が大変…

コードを読み込む

小技ですが、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 以後これに従って書くが、コード…