Creating audio clips: createwav

### 15.1.1 Creating audio clips: createwav

The createwav command creates an audio object with specified parameters.

- createwav takes its arguments as key=value pairs, in no particular order. The following arguments are all optional:
  - size=n resp. duration=T, where n resp. T is the total number of samples resp. the length in seconds.
  - bit_depth=b, where b is the number of bits reserved for each sample value and may be 8 or 16 (by default 16).
  - samplerate=r, where r is the number of samples per second (by default 44100).
  - channels=c where c is the number of channels (by default 1).
  - D or channel_data=D, where D is a list or a matrix.
    If D is a matrix, it should contain the k-th sample in the j-th channel at position (j,k). The value of each sample must be a real number in range [−1.0,1.0]. Any value outside this interval is clamped to it (the resulting effect is called clipping).
    If D is a single list, it is copied across channels.
    D may be truncated or padded with zeros to match the appropriate number of samples or seconds.
  - normalize=db, where db≤ 0 is a real number representing the amplitude peak level in dB FS (decibel "full scale") units. If this option is given, audio data is normalized to the specified level prior to conversion. This can be used to avoid clipping.
- createwav(⟨keys=values⟩) returns an audio object with the requested parameters.

#### Examples.

(See Section 15.1.4 for a description of playsnd and Section 15.1.14 for a description of soundsec):

- Input:

  wave:=sin(2*pi*440*soundsec(2))
  s:=createwav(channel_data=wave,samplerate=48000)
  playsnd(s)

  Output:
  Two seconds of the 440 Hz sine wave at rate 48000.
- Input:

  t:=soundsec(3)
  L,R:=sin(2*pi*440*t),sin(2*pi*445*t)
  s:=createwav([L,R])
  playsnd(s)

  Output:
  Three seconds of a vibrato effect on a sine wave (stereo).