Mercurial > hg > tipic
diff matlab/MATLAB-Chroma-Toolbox_2.0/test_convert_audio_to_pitch.m @ 0:b54ee0a0be67
Import MATLAB Chroma Toolbox
author | Chris Cannam |
---|---|
date | Wed, 05 Aug 2015 21:08:56 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/matlab/MATLAB-Chroma-Toolbox_2.0/test_convert_audio_to_pitch.m Wed Aug 05 21:08:56 2015 +0100 @@ -0,0 +1,104 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Name: test_convert_audio_to_pitchSTMSP.m +% Date of Revision: 2011-03 +% Programmer: Meinard Mueller, Sebastian Ewert +% +% Description: +% * Computes pitch subband decomposition of WAV file +% (default: MIDI pitches 21 to 108) +% * each pitch subband contains short time mean-square power (STMSP) +% * Features are computed in a batch modus +% * Features are stored in folder 'data_feature/' +% +% Reference: +% Details on the feature computation can be found in the following book: +% +% Meinard Mueller: Information Retrieval for Music and Motion, +% Springer 2007 +% +% License: +% This file is part of 'Chroma Toolbox'. +% +% 'Chroma Toolbox' is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 2 of the License, or +% (at your option) any later version. +% +% 'Chroma Toolbox' is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with 'Chroma Toolbox'. If not, see <http://www.gnu.org/licenses/>. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +clear; +close all hidden; + +dirFileNames = { + 'data_WAV/','Bach_BWV988-Aria-Measures1-4_Meinard_fast.wav'; + 'data_WAV/','Burgmueller_Op100-02-FirstPart_Meinard_SE.wav'; + 'data_WAV/','Systematic_Cadence-C-Major_Meinard_portato.wav'; + 'data_WAV/','Systematic_Cadence-C-Major_Meinard_staccato.wav'; + 'data_WAV/','Systematic_Scale-C-Major_Meinard_fast.wav'; + 'data_WAV/','Systematic_Scale-C-Major_Meinard_middle.wav'; + 'data_WAV/','Systematic_Chord-C-Major_Eight-Instruments.wav'; + }; + +for n=1:size(dirFileNames,1) + clear parameter; + parameter.message = 1; + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Convert WAV to expected audio format (mono, 22050 Hz) + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + [f_audio,sideinfo] = wav_to_audio('', dirFileNames{n,1}, dirFileNames{n,2},parameter); + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Estimation of the global tuning of the recording and selection of + % an appropriate filterbank for use in the next step + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + clear parameter + shiftFB = estimateTuning(f_audio); + fprintf('Using filterbank number: %d\n',shiftFB); + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Compute pitch features + % + % Input: audio file of format: mono, 22050 Hz + % + % Output: sequence of pitch vectors + % (specified by N x 120 matrix f_pitch) + % Only subband for MIDI pitches 21 to 108 are computed, the + % other subbands are set to zero. + % + % Parameter: parameter.win_len specifies window length (in samples) + % with window overlap of half size + % Example: audio sampling rate: 22050 Hz + % parameter.win_len = 4410 + % Resulting feature rate: 10 Hz + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + clear parameter + parameter.winLenSTMSP = 4410; + parameter.fs = sideinfo.wav.fs; + parameter.save = 1; + parameter.saveDir = 'data_feature/'; + parameter.saveFilename = dirFileNames{n,2}(1:end-4); + parameter.shiftFB = shiftFB; + parameter.saveAsTuned = 1; + [f_pitch,sideinfo] = audio_to_pitch_via_FB(f_audio,parameter,sideinfo); + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Visualization of pitch decomposition (f_pitch) + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + parameter.usePitchNameLabels = 1; + parameter.title = 'Logarithmic compression of amplitude'; + parameter.featureRate = sideinfo.pitch.featureRate; + parameter.xlabel = 'Time [Seconds]'; + parameter.ylabel = 'Pitch'; + visualizePitch(log(5*f_pitch+1),parameter); +end