### 28.2.9 Setting samples in audio clips

The set_channel_data command sets the audio clip samples to desired values.

- set_channel_data takes two mandatory arguments and two optional arguments:
  - A, an audio clip.
  - data, a matrix or vector containing sample data.
  - Optionally, offset, a position in A at which data should be written (by default, offset=0).
  - Optionally, chn, a channel index or specification (left or right) (by default, the same data is written to all channels or data must be a matrix with one row for each channel).
- set_channel_data(A,data⟨,offset,chn⟩) returns a modified copy of A in which data is written to A at the desired offset and channel chn.
- If data is a matrix, then it must have n rows where n is the number of channels in A. In this case, the fourth argument should be dropped.
- If data is a vector, then it is written to the specified channel or to all channels if chn is not given.

#### Example

In the following example we create an audio clip containing the sine wave and add random noise to its portion.

snd:=createwav(sin(2*pi*440*soundsec(4)))

a sound clip with 176400 samples at 44100 Hz (16 bit, mono |  |  |  |  |  |  |  |  |  |

We extract the data after the first and before the third second of the audio.

data:=channel_data(snd,0,range=1.0..3.0):;

Now we create the noise which fades in and out.

noise:=hamming_window(ranv(length(data),normald(0,0.1))):;

Finally we replace the portion of the original clip with the mix of the sine wave and noise.

snd1:=set_channel_data(snd,noise+data,44100,0)

a sound clip with 176400 samples at 44100 Hz (16 bit, mono) |  |  |  |  |  |  |  |  |  |