The SMT is a set of Matlab functions that implement a sound morphing algorithm for isolated musical instrument sounds. The SMT was first presented at the Timbre 2018 conference. Further information can be found in the article presented at the CMMR 2019 conference.
- Download and unzip the files to a folder (e.g.,
/userhome/myfolder
) - Start Matlab
- Open the SMT folder (e.g.,
/userhome/myfolder
) in Matlab (Navigate to/userhome/myfolder/sound-morphing-master/
under the Current Folder menu) - Run the script
run_smt.m
to generate the example. - Add your own sounds to the
./audio
subfolder, open and editrun_smt.m
appropriately to morph your own sounds
WARNING! Before running the code for the first time, you must add the folder sound-morphing-master
and all its subfolders to the Matlab search path. The script run_smt.m
automatically adds the folder (and all subfolders) of the currently running script (run_smt.m
) to the path. So the folder structure and the location of the script run_smt.m
in that folder structure are important. If you change the location of run_smt.m
(or if anything goes wrong), add the SMT folder (e.g., /userhome/myfolder/sound-morphing-master/
) to your Matlab path by hand (right click on the folder /userhome/myfolder/sound-morphing-master/
in the Current Folder menu and choose Add to path > Selected Folders and Subfolders).
The file run_smt_dependencies.txt
lists all file dependencies. All required .m
files can be found in this SMT repository. However, the SMT also requires the Matlab signal processing toolbox.
This project has received funding from the European Union’s Horizon 2020 research and innovation programme under the Marie Sklodowska-Curie grant agreement No 831852 (MORPH)
Sound Morphing Toolbox (SMT) version 0.3.0 alpha release build 1
- Further improvements to harmonic selection
- Harmonic selection fully integrated into sinusoidal analysis
- Choice of harmonic selection of partials (after partial tracking) or strict harmonic selection of spectral peaks (without partial tracking)
- Added interpolation of the number of partials
- Added low-level function
+tools/+harm/harm_part_sel.m
- Added low-level function
+tools/+harm/harm_peak_sel.m
- Updated high-level function
SM/harmonic_selection.m
- Added logical flag
HARMSELFLAG
to functionSM/sinusoidal_analysis.m
to enable/disable harmonic selection - Added logical flag
PTRACKFLAG
to functionSM/sinusoidal_analysis.m
to enable/disblable partial tracking - Added text flag
PTRACKALGFLAG
to functionSM/sinusoidal_analysis.m
to select partial tracking algorithm - Added high-level function
SMT/partial_interpolation.m
- New harmonic selection feature resulted in API changes to high-level functions inside the folder
SM/
- Additional input arguments in a different order in function
SM/sinusodal_analysis.m
- Different order of input arguments in function
SM/sinusoidal_analysis.m
- Additional arguments in function
SM/sinusoidal_resynthesis.m
- Different order of input arguments in function
+tools/+harm/harm_peak_sel.m
- Additional input arguments in a different order in function
- Fixed bug in function
+tools/+harm/harm_peak_sel.m
Sound Morphing Toolbox (SMT) version 0.2.0 alpha release build 1
- Fully vectorized sinusoidal analysis
- Vectorized sinusoidal resynthesis
- Namespace
+STFT
for the short-time Fourier transform - Namespace
+tools
for the core functions - Refactored codebase into low-level core functionality and high-level calls to core functions
- Added support for power scaling spectral estimation of sinusoidal parameters
- Standardization of nomenclature of entire codebase
- Refactored and restructured partial tracking
- Updated functions in folder
+tools/+spec/
to also handle odd FFT size
- Function
SM/freq_matching.m
was completely refactored into several local functions called as subroutines - Partial tracking step has a dedicated function
SM/partial_tracking.m
, which calls the functionsSM/peak2peak_freq_matching.m
andSM/freq_matching.m
- Introduced power scaling sinusoidal parameter estimation in functions
XQIFFT/xqifft.m
andXQIFFT/interp_pow_scaling.m
- Added functions
tools.sin.is2ptpeak.m
,tools.sin.is3ptpeak.m
,tools.sin.ispeak.m
- Added function
tools.math.quadfit.m
with improved implementation of quadratic fit that also handles symmetrical spectral peaks - Introduced subroutine
SM/parameter_estimation.m
- Updated function
SM/peak_picking.m
inside parameter estimation to handle regular and symmetrical spectral peaks - Updated all functions in folder
+tools/+spec/
to be able to handle even or odd size of the DFT
- Several functions became deprecated and were replaced
- Several bug fixes
Sound Morphing Toolbox (SMT) version 0.1.1
- Added CMMR2019 folder
- Added auxiliary plotting functions
CMMR2019/CMMR2019_makefigsinres.m
andCMMR2019/CMMR2019_makefigpeaktrack.m
Sound Morphing Toolbox (SMT) version 0.1.0
- Initial release
This work was financed by National Funds through the Portuguese funding agency, FCT - Fundação para a Ciência e a Tecnologia within grant SFRH/BPD/115685/2016.