diskin

diskin

Description
audio data를 외부로부터 읽어와서 pitch를 변경할 수 있다.

Syntax
ar1 [,ar2] [, ar3] [, ar4] diskin    ifilcod, kpitch [, iskiptim] [, iwraparound] [, iformat] [, iskipinit]

Initialization
ifilcod – 정수 또는 character-문자열은 source soundfile name. 정수는 soundin.filcod ; 하나의 character-문자열(쌍 따옴표 내에, spaces 허용) 은 filename, 파일경로를 사용할 수 있는데, 경로를 써주지 않으면 현재 directory내에 파일이 있어야 함. 또는 SSDIR또는, SFDIR에 따라서.

iskptim (optional) – 사운드 파일에서 스킵 될 시간(초단위). 기본값은 0.

iformat (optional) – 파일 포맷에 대한 설정:
•        1 = 8-bit signed char (high-order 8 bits of a 16-bit integer)
•        2 = 8-bit A-law bytes
•        3 = 8-bit U-law bytes
•        4 = 16-bit short integers
•        5 = 32-bit long integers
•        6 = 32-bit floats

iwraparound – 1 = on, 0 = off (looping키고 끄기)

iskipinit  – 0이 아니면 모든 초기화(initialization)를 끈다. (4_23f13 와 csound5의 새 기능)
만약 iformat = 0 이면 soundfile header로부터 읽어들인다. 헤더가 없으면 command-line flag -o 에서 읽어들임. 기본값은 0.
Performance
kpitch – 어떤 숫자든 가능. 음수의 숫자는 뒤로 플레이한다. 주어진 숫자는 pitch ratio이다, where:
•        1 = 기본 pitch
•        2 = 1 octave 높게 (그러나 속도도 빨라짐)
•        3 = 2 octaves, (숫자는 계속 높아질수있음).
•        .5 = 1 octave 낮게
•        .25 = 2 octaves 낮게, etc.
•        -1 = 기본 pitch로 뒤로연주
•        -2 = 1 octave 높게 backwards, etc.
diskin 은 soundin과 거의 동일하지만 pitch를 변경할수 있다는점에서 다르다.

Note to Windows users
Windows users들은 일반적으로 절대경로 설정시에back-slashes, “”, 를 사용하는데, 예에서 처럼 Windows user가 만약 “c:musicsamplesloop001.wav”. 라고 하면 문제가 발생할수 있다.
따라서 다음과 같이 해야.
•        Use forward slashes: c:/music/samples/loop001.wav
•        Use back-slash special characters, “\”: c:\music\samples\loop001.wav

Example 103. Example of the diskin opcode.
/* diskin.orc */
; Initialize the global variables.
sr = 44100
kr = 44100
ksmps = 1
nchnls = 1

; Instrument #1 – play an audio file.
instr 1
  ; Play the audio file backwards.
  asig diskin “beats.wav”, -1
  out asig
endin
/* diskin.orc */

        
/* diskin.sco */
; Play Instrument #1, the audio file, for three seconds.
i 1 0 3
e
/* diskin.sco */

Harmon

Harmon
harmon — Audio input을 분석하고 화성을 입힌다.

Syntax
ar        harmon         asig,         kestfrq,        kmaxvar,        kgenfreq1,        kgenfreq2,        
imode,         iminfrq,        iprd

Initialization
imode — kgenfreq1, kgenfreq2.에서 들어오는 첨가되어질 frequency에 내삽의 방식을 선택하는 기능.
0: 입력값이 audio signal analyzed frequency 에 관계된 비율로 실행
1: 입력값이 frequency에 명시된 Hz로 실행.
iminfrq – 입력 오디오의 가장 낮게 위치하는 frequency 값(in Hz) of the audio input. 이 값이 입력의 얼마나 많은 부분이 분석을 위해 저장될 것인지를 결정하고 internal pitch tracker 에 더 낮은 영역으로 설정한다.
iprd — 분석할 주기(초seconds). internal pitch analysis는 시간소비 값이라 볼 수 있으므로 입력값은 전형적으로 20~50ms값 정도로 분석된다.

Performance
kestfrq — 입력의 예상된(원하는) frequency.
kmaxvar — 최대 변화값
kgenfreq1 — first generated frequency.
kgenfreq2 — second generated frequency.

이 유닛은 화성을 입히는 기능을 하며, 입력되는 오디오와 같은값의 amplitude와 spectrum에 두 개의 frequency를 첨가할 수 있다. 입력오디오 파일의 분석은 2개의 요소로 수행되는데, 입력되는 오디오 파일의 frequency에서 원하는 frequency로 바꾸기를 원할 경우에 입력되는 frequency kestfrq (in Hz), 그리고 그 frequency값에 대한 maximum 변화값 kmaxvar . 이는 분석의 양을 결정한다. 만약 실제오디오 파일이 가진 input frequency 가 주어지면, 가장 최근의 pulse shape가 요구된 프리퀀시들에 또 다른 화성을 만들어 내기 위하여 사용된다.

3개의 frequency 입력이score file 또는 MIDI source로 부터 사용될 수 있다.
첫 번째 값은 일정하지 않은 유형을 감안한 변화하는 파라메터를 가진frequency; 0으로 주어지면 silence를 초래.
두번째, 세 번째 값은 출력 frequency를 제어한다. 둘 다 0일경 우에는 silence를 초래, 둘 중 하나만 0일 경우에는 0이 아닌 것만 출력. 요구된 frequency 가 입력된 오디오의 값보다 크면 겹쳐지는 출력pulse때문에 또 다른 계산이 요구되기 때문에, 이 부분이 제한적이며, 또 다른 한계로는 단 하나의 음(frequency)만 입력 값보다 높게 설정될 수 있다 것.

이 유닛은 background chorus effect에 쓰이거나 on demand, 오디오 파일의 피치가 불균형하거나, 거친 경우 그것을 바로잡기 위하여 사용되곤 한다. 입력, 출력간의 delay 는 없으며 출력은 단지 만들어진 부분만 (입력된 오디오가 동시에 나오는 것이 아닌) 허용된다.

Examples
/* harmon.orc */
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1

; Instrument #1.
instr 1
  ; 입력오디오의 frequency 설정
  inote = 440

  ; 입력 오디오
  avco vco 20000, inote, 1

  kestfrq = inote
  kmaxvar = 200
  
  ; 입력 오디오값에 3 semitones을 위아래로 첨가
kgenfreq1 = inote * semitone(3)
  kgenfreq2 = inote * semitone(-3)

  imode = 1
  iminfrq = inote – 200
  iprd = 0.1
  
  ; harmon의 사용
  a1 harmon avco, kestfrq, kmaxvar, kgenfreq1, kgenfreq2,
            imode, iminfrq, iprd

  out a1
endin
/* harmon.orc */

        
/* harmon.sco */
; sine wave
f 1 0 16384 10 1

; Instrument #1 을 2초간 재생
i 1 0 2
e
/* harmon.sco */

New Csound5 opcodes: sprintf, puts

여러 옵코드 들을 선정하여 차후에 한글로 올려드리겠습니다.

Sr      sprintf     Sformat, xarg1[, xarg2[, … xarg30]]
Sr      sprintfk    Sformat, xarg1[, xarg2[, … xarg30]]

DESCRIPTION
———–

sprintf and sprintfk write formatted output to a string variable,
similarly to the C function sprintf(). sprintf runs at i-time
only, while sprintfk runs both at initialization and performance
time.

INITIALIZATION
————–

Sr – output string variable

Sformat – format string, has the same format as in printf() and
     other similar C functions, except length modifiers (l, ll, h, etc.)
     are not supported. The following conversion specifiers are
     allowed:
       d, i, o, u, x, X, e, E, f, F, g, G, c, s

xarg1, xarg2, … – input arguments for format, should be i-rate
     for all conversion specifiers except %s, which requires a
     string argument. Integer formats like %d round the input values
     to the nearest integer.

PERFORMANCE
———–

Sr – output string variable (sprintfk)

Sformat – format string for sprintfk

xarg1, xarg2, … – input arguments for format, sprintfk allows the
     use of k-rate variables, however, these should be valid at i-time
     as well

———————————————————————-

         puts Sstr, ktrig[, inonl]

DESCRIPTION
———–

puts prints a string at initialization time, and also at performance
time whenever the k-rate trigger signal is positive and is different
from the previous value. A trailing newline character is printed unless
the optional i-time argument is non-zero.

———————————————————————-

EXAMPLE
——-

iPI     =  4 * taninv(1)
SPI     strcpy “33[1mPI33[m”
S1      sprintf “%s = %f, int(%s) = %dn”, SPI, iPI, SPI, iPI
         puts S1, 1, 1