1 / 2

function createAnimatedGifFromWav(wavFileName, windowLength, Width, framesPerSec) %

function createAnimatedGifFromWav(wavFileName, windowLength, Width, framesPerSec) % % function createAnimatedGifFromWav(wavFileName, windowLength, Width, framesPerSec) % % This function read a .wav audio file and creates an animated gif: in each

kailey
Télécharger la présentation

function createAnimatedGifFromWav(wavFileName, windowLength, Width, framesPerSec) %

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. function createAnimatedGifFromWav(wavFileName, windowLength, Width, framesPerSec) % % function createAnimatedGifFromWav(wavFileName, windowLength, Width, framesPerSec) % % This function read a .wav audio file and creates an animated gif: in each % frame of the gif file, a seperate audio window is presented, along with % the corresponding spectrogram. % % ARGUMENTS: % wavFileName: the name of the .wav file to read % windowLength: the length (in seconds) of each window to be plotted in the gif % Width: the width of the generated .gif file % framesPerSec: frames per second for the gif animated file. % % NOTE: the generated .gif file's name is [wavFileName_animatedGIF.gif] % % EXAMPLE: % The following line will read b.wav, will spitt the file into windows of 2 % seconds (non-overlapping) and will create a gif file (of 450 pixels % width) and 10 frames per seconds: % % >> createAnimatedGifFromWav('b.wav',2,450,10); % % % ---------------------------------- % | Theodoros Giannakopoulos | % | http://www.di.uoa.gr/~tyiannak | % ---------------------------------- % % frame time interval: framesT = 1/framesPerSec; % initial index of audio data: I = 1; % read audio data: [x,fs] = wavread(wavFileName); % convert window value from time to samples: win = windowLength * fs; % initialize figure: h = figure; Loop = {'LoopCount',Inf}; count = 0; % total number of audio windows (and corresponding frames in gif file): total = floor((length(x)-win) / (win)); % gif file name: fn = [wavFileName '_animatedGIF.gif']; % main loop: while (I+win<length(x)) % while reading audio data: count = count + 1; fprintf('Saving Image %d of %d\n',count, total); % get current audio data: tempX = x(I:I+win); % plot audio data: subplot(2,1,1); time = (0:1/fs:(length(tempX)-1)/fs) + I/fs; plot(time, tempX); axis([time(1) time(end) -1 1]); % plot respective spectrogram: subplot(2,1,2); SPECTROGRAM(tempX, 0.050*fs, 0, 0.050*fs, fs); ylabel(''); xlabel(''); % update window position: I = I + win; % save current figure in temporary jpeg file... saveas(h,'imageTemp', 'jpg'); % ... and get image data: RGB = imread('imageTemp.jpg'); % resize image (according to Width argument): R = RGB(:,:,1); G = RGB(:,:,2); B = RGB(:,:,3); R = imresize(R, [Width NaN]); G = imresize(G, [Width NaN]); B = imresize(B, [Width NaN]); clear RGB; RGB(:,:,1) = R; RGB(:,:,2) = G; RGB(:,:,3) = B; % convert to indexed image (256 colors used): [ind,map]=rgb2ind(RGB,256); % write gif file if count==1 % if this is the first frame-->overwrite file imwrite(ind,map,fn,'gif' ... , 'DelayTime', framesT ... , 'WriteMode','overwrite' ... , Loop{:} ... ); else % ... else append image to existing file imwrite(ind,map,fn,'gif' ... , 'DelayTime', framesT ... , 'WriteMode','append' ... ); end end

More Related