Dear Members,(adsbygoogle = window.adsbygoogle || []).push({});

I am trying to apply a windowing function to a group of notes that I have created in MATLAB.

For example, a piecewise linear function that looks like this:

[img=http://img168.imageshack.us/img168/2058/adsrenvelopepg0.th.jpg]

(No specific slopes defined).

%I first define the sampling frequency.

Fs = 8000;

%Define n.

n1 = [0:(1/Fs):(1/2)]

n2 = [0:(1/Fs):(1/4)]

n3 = [0:(1/Fs):(1)]

%Create the notes.

note1 = sin(2*pi*220*n1);

note2 = sin(2*pi*220*n2);

note3 = sin(2*pi*(220*(2^(7/12))*n2);

note3 = sin(2*pi*(220*(2^(7/12)))*n2);

note4 = sin(2*pi*(220*(2^(2/12)))*n2);

note5 = sin(2*pi*(220*(2^(3/12)))*n2);

note6 = sin(2*pi*220*n3);

%Generate 0.25 second rest.

rest = zeros(1,(Fs/4));

%Generate song.

song = [note1 rest note2 rest note3 rest note3 rest note3 rest note4 rest note5 rest note4 rest note6 rest];

This part works... and the song is heard with the appropriate rest.

Now, if I want to apply an ADSR envelope to a note, I tried this:

A = linspace(0, 1, 0.1*(Fs));

D = linspace(1, 0.8, 0.15*(Fs));

S = linspace(0.8, 0.8, 0.6*(Fs));

R = linspace(0.8, 0, 0.15*(Fs));

%I then concatenate

ADSR = [A D S R];

%Then I try applying the envelope to a note

newnote1 = ADSR .* note1;

But I am given an error saying the Matrix dimensions do not agree. Does anyone happen to know how I can fix this problem? I am rather new to Matlab in general so I am having difficulty using any other command to properly apply the ADSR envelope with the note.

Thank you kindly in advance for your response.

**Physics Forums | Science Articles, Homework Help, Discussion**

The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

# Using an ADSR Envelope in MATLAB

**Physics Forums | Science Articles, Homework Help, Discussion**