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**

Join Physics Forums Today!

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

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**