Plugins-soundmanager-example code
From Bcontrol
% The following code runs stand-alone (assuming newstartup.m has been run).
%
%
% First, make sure that dispatcher exists and is up:
dispatcher('init');
% Now let's make an object that is of the @soundmanager class. Normally,
% this would be your protocol object, and you would inherit @soundmanager;
% (e.g., "obj = class(struct, 'myprotocol', soundmanager)".
% But here, we're just exemplifying @soundmanager, so we won't use a
% protocol. The simplest object that is also a @soundmanager is @soundmanager
% itself:
gu = soundmanager
% Now start up the soundmanager:
SoundManagerSection(gu, 'init')
% Before making any sounds, let's get the sample rate:
srate = SoundManagerSection(gu, 'get_sample_rate')
% Let's declare a sound and make it a 1-second 2 Khz pure tone on the left speaker. The
% 0.2 factor is just so it isn't too loud.
SoundManagerSection(gu, 'declare_new_sound', 'ptone', [0.2*sin(2*pi*2000*(1:srate)/srate) ; zeros(1, srate)])
% Let's hear it (this call will also automatically upload the sound to the
% SoundServer):
SoundManagerSection(gu, 'play_sound', 'ptone');
% Let's change the sound with the name 'ptone' to a 1-sec, 4 KHz sound on
% the right speaker:
SoundManagerSection(gu, 'set_sound', 'ptone', [zeros(1, srate) ; 0.2*sin(2*pi*4000*(1:srate)/srate)])
% If we want to upload it (so that, for example, it is in the SoundServer,
% ready to be triggered by the StateMachine, we use this call:
SoundManagerSection(gu, 'send_not_yet_uploaded_sounds');
% If we want to know what integer id our sound is, so as to use
% that when constructing a StateMachine that will trigger it:
SoundManagerSection(gu, 'get_sound_id', 'ptone')