ならば

音とかで遊んでいたログ

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

波の合成

一般にいくつかの波を合成して別の波を作ることができる。まずは全く同じサイン波を足して振幅(波の振動の大きさ)が二倍のサイン波を鳴らすコード。10月8日追記:複数のオシレータの出力をdacに直につなぐと歪みが生じてしまう。これを避けるには途中でGai…

サウンドバッファ

メディアファイルを処理したり再生するには、まずSndBufというユニットジェネレータにデータを読み込む。"foo.wav"というファイルを読み込んで再生するだけなら、 SndBuf buf => dac; "foo.wav" => buf.read; buf.samples()::samp => now;readにファイル名を…

サンプリング周波数

前に時間について書いたときには分からなかったdur型のsampについて。調べてみるとsampは信号(音)の標本化のとき、データを取る間隔を表しているようだ。そして一秒間にデータを取る回数はサンプリング周波数という。使用環境のサンプリング周波数は、 <<<second/samp>></second/samp>…

関数

関数は「fun 返り値の型 名前」で定義する。 fun int sqr(int x) { return x*x; }オーバーロードも可能。なのに何故かStdでは rand(), randf() と rand2(int min, int max), rand2f(float min, float max) がわざわざ別名で実装されている。開発者が使う気な…

ステレオ

ChucKではデフォルトでステレオオーディオを使える。ステレオなユニットジェネレータは、leftとrightでそれぞれのチャンネルにアクセスできる。つまり左右で違うエフェクトをかけたりできる。 JCRev rl => dac.left; JCRev rr => dac.right;Pan2というユニッ…

耳で聴くハノイの塔

「耳で聴く」という表現は当然だから変かなと一瞬思ったけど骨振動ってのがあるので無問題。

ユニットジェネレータ

SinOscやらdacやらはユニットジェネレータ。これもオブジェクト。ユニットジェネレータとは信号(音)を作ったり処理したりするもので、一覧を見ると色々な種類が用意されている。これを適当に持ってきてつないで設定してやれば好きな音が作れる。つなぎ方は…

配列

配列の仕様を全部読んでも大した量ではないが今必要で独特なところだけメモ。配列はオブジェクト。基本型の配列は明示的に初期化しない場合、要素はデフォルト値*1にセットされる。指定したいときは下のコードのようにする。演算子「@=>」はオブジェクトの参…

乱数

チュートリアルで「昔のSF映画に出てくる大型コンピュータっぽい音」を出すといってるコード。 SinOsc s => dac; while( true ) { 100::ms => now; //30.0から1000.0までのランダムな数を周波数に設定 Std.rand2f(30.0, 1000.0) => s.freq; }ぎりぎりな高周…

音を鳴らす

今のままだとジョン・ケージの有名な曲くらいしか再現できないので音の鳴らし方を。チュートリアルを見ると、まずはサイン波を作って鳴らそう、と書いてある…。音は波だそうで、波の形とか高さによって異なる音になるらしい。つまり適当な波を作ってそれをい…

時間

ChucKは時間の概念が言語の根幹に組み込まれて*1いて、プログラマがコントロールできる。内部型として時 time と継続期間 dur がある。dur として用意されている単位はミリ秒から週までのms、second、minute、hour、day、weekと自分には意味不明なsamp。例え…

ライブ・コーディング

広義(?)のライブ・コーディングではなく、ChucKを開発しているところが提唱するOn-the-fly Programmingについて。 Using Code as an Expressive Musical Instrument ってことで、即興演奏をコーディングでという話だと思う。ソロだけでなく例えば二人による…

第一歩

まず環境構築。フリーソフトウェア。ChucK自体はCUIだが、GUIに毒された身には辛いので簡易開発環境のminiAudicle*1を導入。ChucKのランタイムエンジンも含まれているので単にminiAudicleのzipファイルをダウンロードして解凍するだけで全て完了。起動すると…

スタンスとか

無能力、無気力、無計画、無推敲、無保証 あらゆる面で適当。

ChucK

音響プログラミング言語ChucKが面白げなので好奇心のみで手を出してみたがGoogleで検索した限り日本語での情報が少ないので自ら吐くことにした。公式サイトによれば、 ChucK is a new (and developing) audio programming language for real-time synthesis,…