Filter löschen
Filter löschen

How to iterate and play sinewaves in succession..

4 Ansichten (letzte 30 Tage)
Edmund Paul Malinowski
Edmund Paul Malinowski am 17 Nov. 2015
Kommentiert: Star Strider am 12 Feb. 2019
Hey all,
Slowly getting there with my program but would like some advice on the best method to preform the sine wave generation. So far it works but all waves play at the same time and i want each one to play for 1 sec in turn. Obviously my code for this is so far clumsy and long so i'd need to iterate through something to reduce my code and to get it so do the desired thing..
Below is my full code, just so you can see where some of the data and variables come from:
prompt={'1st Note:','2nd Note:','3rd Note:','4th Note:','5th Note:','6th Note:','7th Note:'};
name='Enter Note Values (C-B)..';
defaultans={'C','D','E','F','G','A','B'};
answer=inputdlg(prompt,name,[1,50],defaultans);
% These three lines replace all of your loop and elseif statements:
V = 'CDEFGAB';
idx = cellfun(@(c)find(V==c),answer);
frq = [261.626,293.665,329.628,349.228,391.995,440.000,493.883];
out = frq(idx);
% GENERATE SINE WAVES..
%samples
N = T*Fs;
Fs = 44100;
%samples vector
tX1 = 0:1/Fs:1;
tX2 = 1:1/Fs:2;
tX3 = 2:1/Fs:3;
tX4 = 3:1/Fs:4;
tX5 = 4:1/Fs:5;
tX6 = 5:1/Fs:6;
tX7 = 6:1/Fs:7;
% CREATE SINE WAVES..
Sine1 = sin(2*pi*out(1)*tX1);
Sine2 = sin(2*pi*out(2)*tX2);
Sine3 = sin(2*pi*out(3)*tX3);
Sine4 = sin(2*pi*out(4)*tX4);
Sine5 = sin(2*pi*out(5)*tX5);
Sine6 = sin(2*pi*out(6)*tX6);
Sine7 = sin(2*pi*out(7)*tX7);
% PLAY SOUNDS..
soundsc(Sine1,Fs)
soundsc(Sine2,Fs)
soundsc(Sine3,Fs)
soundsc(Sine4,Fs)
soundsc(Sine5,Fs)
soundsc(Sine6,Fs)
soundsc(Sine7,Fs)
Thanks,
Paul..
  3 Kommentare
N/A
N/A am 12 Feb. 2019
why doesnt this generates a graph of the wave?
Star Strider
Star Strider am 12 Feb. 2019
@Maaz Rao —
Do you see a plot call in that code?
I don’t.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Star Strider
Star Strider am 17 Nov. 2015
I didn’t run your code, but if you want to create an audioplayer object, you can use the playblocking function.
Otherwise, it’s likely easier to insert a pause(n) call (where ‘n’ is the number of seconds each tone lasts) after your soundsc call.
  8 Kommentare
Edmund Paul Malinowski
Edmund Paul Malinowski am 17 Nov. 2015
That's awesome. I need to work on the plots now properly but the main sound generation bit is done. Thanks so much for your help, Star :)
Star Strider
Star Strider am 17 Nov. 2015
As always, my pleasure!
I learn a lot from solving problems here, so it’s a win for all.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Introduction to Installation and Licensing finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by