I want to increase/decrease volume of audio file using the slider,is it necessary to run audio data from slider?

global filename;
[y,Fs] = audioread(filename);
slider_val = get(hObject, 'Value');
if slider_val == 0
x = y/5; % Decrease volume
player = audioplayer(x, Fs);
play(player,[1 (get(player, 'SampleRate')*3)]);
elseif slider_val == 1
x = y*5; % Increase volume
player = audioplayer(x, Fs);
play(player,[1 (get(player, 'SampleRate')*3)]);

 Accepted Answer

You should use the Audio Systems Toolbox. At each point you would fetch a batch of samples and multiply them by the current slider value, and queue them to be played as audio.
Creating a separate audio player for each batch of sounds is too much overhead, and there is no feasible way to update the sound samples of an audioplayer once it is built.

6 Comments

Thank you Sir for your help.But instead of increasing/decreasing the sound ,there is lower in the speed of sound play. What change should I have to do in the following code?
slider_val = get(hObject, 'Value');
disp(get(hObject,'Value'));
k = slider_val;
player = audioplayer(k*x,Fs);
play(player);
guidata(hObject,handles);
if you set k to 1 then do you still hear aa speed change ?If you do then it has something to do with the sampling frequency not being right instead of the sample values .
Yes,Sir.Still there is change in speed in small amount. What might be the solution for this?
[x,Fs]= audioread('G:\Year3\MediaTechnology\Assignment\Sune Khabar.mp3');
slider_val = get(hObject, 'Value'); % for getting the slider value
disp(get(hObject,'Value')); % displaying the slider value
k = slider_val; % Setting slidervalue in k
% player = audioplayer(x,Fs*k);
[loudness,loudnessRange] = integratedLoudness(x,Fs);
volume = [loudness*k,loudnessRange];
player = audioplayer(volume);
play(player); %play
guidata(hObject,handles);

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!