블로그 이미지
Leeway is... the freedom that someone has to take the action they want to or to change their plans.
maetel

Notice

Recent Post

Recent Comment

Recent Trackback

Archive

calendar

1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
  • total
  • today
  • yesterday

Category

'Techne/문성준: SuperCollider'에 해당되는 글 5건

  1. 2008.05.28 week 4: Envelop Generator in SuperCollider
  2. 2008.05.21 week 3: B. Synthesis I - Envelopes
  3. 2008.05.21 week 2: B. Synthesis I - Modulation
  4. 2008.05.21 week 1: A. Basic
  5. 2008.05.17 SupperCollider
2008. 5. 28. 19:25 Techne/문성준: SuperCollider
2008-05-28 물 늦은 다섯 시 @추계음악대학교 전자음악실


EnvGen.kr

SynthDef Syntax

Recording


'Techne > 문성준: SuperCollider' 카테고리의 다른 글

week 3: B. Synthesis I - Envelopes  (0) 2008.05.21
week 2: B. Synthesis I - Modulation  (0) 2008.05.21
week 1: A. Basic  (0) 2008.05.21
SupperCollider  (0) 2008.05.17
posted by maetel
2008. 5. 21. 18:14 Techne/문성준: SuperCollider
B. Synthesis I

3. Envelopes


2008-05-21 물 늦은 다섯 시@추계예술대학교 전자음악실

http://en.wikipedia.org/wiki/ADSR_envelope
The envelope may be a discrete circuit or module (in the case of analog devices), or implemented as part of the unit's software (in the case of digital devices).
When a mechanical musical instrument produces sound, the volume of the sound produced changes over time in a way that varies from instrument to instrument.
A synthesizer's ADSR envelope is a way to tailor the timbre for the synth, sometimes to make it sound more like a mechanical instrument.

사용자 삽입 이미지


- 특별하게 duration에 관한 설정을 하지 않는다면 SC는 합성을 무한히 지속한다.


Line            line generator

Line.ar(start, end, dur, mul, add, doneAction)
Line.kr(start, end, dur, mul, add, doneAction)

Generates a line from the start value to the end value.
start - starting value
end - ending value
dur - duration in seconds
doneAction - a doneAction to be evaluated when the Line is completed. See UGen-doneActions for more detail.

// XLine is usually better than Line for frequency
play({ SinOsc.ar(Line.kr(200,17000,10),0,0.1) });

XLine의 start value가 0이면 안 된다.
XLine            exponential line generator

XLine.ar(start, end, dur, mul, add, doneAction)
XLine.kr(start, end, dur, mul, add, doneAction)

Generates an exponential curve from the start value to the end value. Both the start and end values
must be non-zero and have the same sign.
start - starting value
end - ending value
dur - duration in seconds
doneAction - a doneAction to be evaluated when the Line is completed. See UGen-doneActions for more detail.

play({ SinOsc.ar(XLine.kr(200,17000,10),0,0.1) });

{XLine.ar(0.01, 1, 1)}.plot(1);
// XLine의 start value가 0이면 안 된다.
{Line.ar(0, 1, 1,)}.plot(1);





'Techne > 문성준: SuperCollider' 카테고리의 다른 글

week 4: Envelop Generator in SuperCollider  (0) 2008.05.28
week 2: B. Synthesis I - Modulation  (0) 2008.05.21
week 1: A. Basic  (0) 2008.05.21
SupperCollider  (0) 2008.05.17
posted by maetel
2008. 5. 21. 17:00 Techne/문성준: SuperCollider
week 2
B. Synthesis I

1. Tone generator & argument

많은 종류의 tone generator들을 SC에서는 UGEN(Unit Generator)으로 분류한다.

UGEN(Unit Generator)
http://en.wikipedia.org/wiki/Unit_generator
Unit Generators form the building blocks for designing synthesis and signal processing algorithms in software. For example, a simple unit generator called OSC could generate a sinusoidal waveform of a specific frequency (given as an input or argument to the function or class that represents the unit generator).
ref.
Computer Music: Synthesis, Composition, and Performance
by Charles Dodge and Thomas A. Jerse

unit generator: an algorithm that performs a particular function of sound generation, modification, or combination. It is controlled by parameters obtained from a score or transducer. (438p)

Each unit generator has input parameters and at least one output. Each performs a specific function of signal generation or modification, or the combination of signals. Many music languages express synthesis algorithms in terms of unit generators, using them as the building blocks with which instruments are made. The internal algorithm of each unit generator has been determined and encoded by the music systems programmer. The musician's task is to interconnect the inputs and outputs of the unit generators to achieve an overall synthesis algorithm that produces the desired result. (72p)

ref.
ChucK : Unit Generators Reference
(all)
ChucK : Language Specification > Unit Generators
Unit Generators are function generators that output signals that can be used as audio or control signals.

{Saw.ar}.play
{FSinOsc.ar}.play
{Pulse.ar}.play


Saw            band limited sawtooth

Saw.ar(freq, mul, add)

Band limited sawtooth wave generator.
freq - Frequency in Hertz (control rate).

See also: LFSaw

// modulating the frequency

{ Saw.ar(XLine.kr(40,4000,6),0.2) }.play;

// two band limited sawtooth waves through a resonant low pass filter

{ RLPF.ar(Saw.ar([100,250],0.1), XLine.kr(8000,400,5), 0.05) }.play;

http://en.wikipedia.org/wiki/Sawtooth
A more general form, in the range −1 to 1, and with period a, is
x(t) = 2 \left( {t \over a} - \operatorname{floor} \left ( {t \over a} + {1 \over 2} \right ) \right )

This sawtooth function has the same phase as the sine function.
A sawtooth wave's sound is harsh and clear.


http://en.wikipedia.org/wiki/440_Hz
A440
is the 440 Hz tone that serves as the standard for musical pitch. A440 is the musical note A above middle C (A4).



FSinOsc        fast sine oscillator

FSinOsc.ar(freq, iphase,mul, add)

Very fast sine wave generator (2 PowerPC instructions per output sample!) implemented using a ringing
filter.  This generates a much cleaner sine wave than a table lookup oscillator and is a lot faster.
However, the amplitude of the wave will vary with frequency. Generally the amplitude will go down as
you raise the frequency and go up as you lower the frequency.
WARNING: In the current implementation, the amplitude can blow up if the frequency is modulated
by certain alternating signals.
freq - frequency in Hertz

{ FSinOsc.ar(800, 0.0, 0.25) }.play;

{ FSinOsc.ar(XLine.kr(200,4000,1),0.0, 0.25) }.play;

// loses amplitude towards the end
{ FSinOsc.ar(FSinOsc.ar(XLine.kr(4,401,8),0.0, 200,800),0.0, 0.25) }.play;

http://en.wikipedia.org/wiki/Electronic_oscillator

http://en.wikipedia.org/wiki/Sine_wave


Pulse            band limited pulse wave

Pulse.ar(freq, width, mul, add)

Band limited pulse wave generator with pulse width modulation.
freq - Frequency in Hertz (control rate)
width - Pulse width ratio from zero to one. 0.5 makes a square wave (control rate)

See also: LFPulse

// modulate frequency
{ Pulse.ar(XLine.kr(40,4000,6),0.1, 0.2) }.play;

// modulate pulse width
{ Pulse.ar(200, Line.kr(0.01,0.99,8), 0.2) }.play;

// two band limited square waves thru a resonant low pass filter
{ RLPF.ar(Pulse.ar([100,250],0.5,0.1), XLine.kr(8000,400,5), 0.05) }.play;


ref.
invalid-file

<Band-Limited Pulse Generator> Ed Doering

 
invalid-file

<Arbitrary Band-Limited Pulse Generation for Built-in Self-test Applications> Benoit Dufort & Gordon W. Roberts, McGill University




'Techne > 문성준: SuperCollider' 카테고리의 다른 글

week 4: Envelop Generator in SuperCollider  (0) 2008.05.28
week 3: B. Synthesis I - Envelopes  (0) 2008.05.21
week 1: A. Basic  (0) 2008.05.21
SupperCollider  (0) 2008.05.17
posted by maetel
2008. 5. 21. 15:01 Techne/문성준: SuperCollider
1. SuperCollider 3 개요

- 음악 프로그래밍 언어 (cp. CSound, Max/MSP, PD)
- SmallTalk에 기반,  James McCartney 개발
- 활용: Calculator, Sound Synthesis & Analysis, DSP(Effector), Algorithmic Composition, ...
- 특장점:
    - object-oriented style
    - real-time interpreter
    - 하나의 package 안에서 GUI를 활용한 real-time 제어
    - on-the-fly 프로그래밍
    - OSC (Open Sound Control) protocol 지원
    - 낮은 CPU 점유율

2. SuperCollider 설치
    home: http://audiosynth.com/
    tutorial: http://swiki.hfbk-hamburg.de:8888/MusicTechnology/6
    forum: http://www.newscores.com/scforum/

invalid-file

Computer Music with examples in SuperCollider 3 David Michael Cottle



3. Post Window & Basic Key command
- Post Window: booting 과정에서 로딩되는 라이브러리의 상태를 보여 주며, interpreter의 메시지, 프로그래밍의 에러 등을 보여 준다.
- key command
    enter (return 아님): run
    command + . : stop playing
    command + D : help

4. Basic Syntax
colons: keyword arguments
semi-colons: statement의 끝
commas: list에서 item을 분리할 때 사용
periods: 메시지를 처리할 때 사용

- delimiters:
    parenthes () : argument list를 전달하거나 연산처리에서 사용
    curly brackets {} : function을 정의할 때 사용

5. Basic Synthesis

// week 1

246*456

"hello".speak

rrand(64,127)

3.rand

{SinOsc.ar(440,0,0,1)}.play;

{SinOsc.ar(440,0,0,1)}.scope;

SinOsc.ar(440,0,0,1).play;

{SinOsc.ar(440,0,0,1}.play;



// 5. Basic Synthesis

{SinOsc.ar(440,0,0,1)}.play

(// double click on the inside of any bracket to highlight the code contained within
)

(// select this code within the outer parentheses
// then press the ENTER key on the numberic keypad
{SinOsc.ar(440,0,0,1)
+
Pulse.ar(443,0,6,0,0.05)
}.play
)

{SinOsc.ar(300,0.5)}.scope

{Saw.ar(4000,0.2)}.scope

{Pulse.ar(440,0.6,0,1)}.scope


'Techne > 문성준: SuperCollider' 카테고리의 다른 글

week 4: Envelop Generator in SuperCollider  (0) 2008.05.28
week 3: B. Synthesis I - Envelopes  (0) 2008.05.21
week 2: B. Synthesis I - Modulation  (0) 2008.05.21
SupperCollider  (0) 2008.05.17
posted by maetel
2008. 5. 17. 18:02 Techne/문성준: SuperCollider

'Techne > 문성준: SuperCollider' 카테고리의 다른 글

week 4: Envelop Generator in SuperCollider  (0) 2008.05.28
week 3: B. Synthesis I - Envelopes  (0) 2008.05.21
week 2: B. Synthesis I - Modulation  (0) 2008.05.21
week 1: A. Basic  (0) 2008.05.21
posted by maetel