bleeck@3
|
1 % method of class @signal
|
bleeck@3
|
2 %
|
bleeck@3
|
3 % INPUT VALUES:
|
bleeck@3
|
4 % sig,attenuation,ramp
|
bleeck@3
|
5 % sig is the signal or a array of two signals for stereo
|
bleeck@3
|
6 % attenuation is the attenuation against the lowdest possible tone
|
bleeck@3
|
7 % with amplitude =1
|
bleeck@3
|
8 % default=1
|
bleeck@3
|
9 %
|
bleeck@3
|
10 % RETURN VALUE:
|
bleeck@3
|
11 %
|
bleeck@3
|
12 %
|
bleeck@3
|
13 % This external file is included as part of the 'aim-mat' distribution package
|
bleeck@3
|
14 % (c) 2011, University of Southampton
|
bleeck@3
|
15 % Maintained by Stefan Bleeck (bleeck@gmail.com)
|
bleeck@3
|
16 % download of current version is on the soundsoftware site:
|
bleeck@3
|
17 % http://code.soundsoftware.ac.uk/projects/aimmat
|
bleeck@3
|
18 % documentation and everything is on http://www.acousticscale.org
|
bleeck@3
|
19
|
bleeck@3
|
20
|
bleeck@3
|
21 % function play(sig,attenuation,ramp)
|
bleeck@3
|
22 function play(sig,attenuation,ramp)
|
bleeck@3
|
23
|
bleeck@3
|
24 if nargin < 3
|
bleeck@3
|
25 ramp=0;
|
bleeck@3
|
26 end
|
bleeck@3
|
27 if nargin < 2
|
bleeck@3
|
28 attenuation=0;
|
bleeck@3
|
29 end
|
bleeck@3
|
30 if attenuation > 0
|
bleeck@3
|
31 % error('cant play sounds louder then maximum, reduce attenuation!');
|
bleeck@3
|
32 disp('warning: signal\play:: play sounds louder then maximum, reduce attenuation!');
|
bleeck@3
|
33 end
|
bleeck@3
|
34
|
bleeck@3
|
35 if length(sig)>1 % stereo!
|
bleeck@3
|
36 sig(1)=attenuate(sig(1),attenuation);
|
bleeck@3
|
37 sig(2)=attenuate(sig(2),attenuation);
|
bleeck@3
|
38
|
bleeck@3
|
39 values1=getvalues(sig(1));
|
bleeck@3
|
40 values2=getvalues(sig(2));
|
bleeck@3
|
41
|
bleeck@3
|
42 finvals=[values1 values2];
|
bleeck@3
|
43 sr=getsr(sig(1));
|
bleeck@3
|
44
|
bleeck@3
|
45 sound(finvals,sr);
|
bleeck@3
|
46 pause(getlength(sig(1)));
|
bleeck@3
|
47 else
|
bleeck@3
|
48
|
bleeck@3
|
49
|
bleeck@3
|
50 % beware of playing a NULL-stimulus!
|
bleeck@3
|
51 if getlength(sig)<=1/getsr(sig)
|
bleeck@3
|
52 return
|
bleeck@3
|
53 end
|
bleeck@3
|
54
|
bleeck@3
|
55 if ramp>0
|
bleeck@3
|
56 sig=rampamplitude(sig,ramp);
|
bleeck@3
|
57 end
|
bleeck@3
|
58
|
bleeck@3
|
59 sig=attenuate(sig,attenuation);
|
bleeck@3
|
60
|
bleeck@3
|
61 if max(sig)>1
|
bleeck@3
|
62 disp('warning: signal\play:: clipping in signal');
|
bleeck@3
|
63 end
|
bleeck@3
|
64 sound(sig.werte,sig.samplerate);
|
bleeck@3
|
65
|
bleeck@3
|
66 pause(getlength(sig));
|
bleeck@3
|
67 end |