126 lines
5.7 KiB
Plaintext
126 lines
5.7 KiB
Plaintext
Changes made by Jean-Philippe Meuret to original ATSA
|
|
(by Oscar Pablo Di Liscia, Pete Moss and Juan Pampin)
|
|
to adapt it to the needs of QATSH, a Qt 4 GUI to ATSA
|
|
(made to get a better ATSH, a GTK 1.2 GUI to ATSA)
|
|
|
|
High level description
|
|
|
|
* The ATS file format has not been changed in any way.
|
|
* All computations have been converted to double (no more floats)
|
|
* All sampled sound file input / output have been removed
|
|
from the library => no more link to sndlib (or any other)
|
|
which implied changing the interface of several functions
|
|
to replace file names by sample arrays or so.
|
|
* The synthesis of a sampled sound from an ATS sound
|
|
has been added, based on code from ATSH (synth-funcs.c)
|
|
|
|
Low level description :
|
|
|
|
* all source files :
|
|
- replaced mus_sample_t by double everywhere (now atsa works with double precision samples,
|
|
and is independant from any sound IO library).
|
|
|
|
* atsa.h
|
|
- changed (fixed) "HAMMING" define to "HANNING" (and updated relevant source files)
|
|
- removed sndlib related stuff (configuration)
|
|
- removed includes that are only necessary for function
|
|
implementation (moved these includes to the .c files)
|
|
- added some more comments
|
|
- added some more macros found elsewhere in the code
|
|
but that should have been put there before
|
|
- modified interface of several functions :
|
|
. init_sound : added the 'with_noise' flag for critical noise bands initialization
|
|
. residual_analysis : replaced the 'file' parameter by double** res, int s_rate, int n_frames
|
|
. compute_residual :
|
|
- moved the 'fil' parameter from 'mus_sample_t **' to a 'double *'
|
|
(enforces double precision and monophonic samples)
|
|
- removed the output_file parameter : the function now directly returns the computed
|
|
residual arrays as a double**
|
|
. tracker :
|
|
- replaced 'soundfile' char* parameter by double* in_samps, int s_rate, int n_frames
|
|
- replaced 'resfile' char* parameter by double ***res
|
|
. ppp2 : changed num arg type from 'int' to 'unsigned int'
|
|
. changed char* to const char* everywhere
|
|
- added ats_load function to load an ATS sound from a file
|
|
- added set_av (made public this funtion from utilities.c)
|
|
- added do_synthesis (from new synthesis.c)
|
|
- added do_atsh_synthesis (from new synthesis.atsh.c)
|
|
- added 'max_partials' field to ATS_SOUND structure, to enable variable number of partials
|
|
- added increase_max_partials to reallocate/copy partials data arrays in an ATS_SOUND
|
|
- added add_partial to add a new partial (all 0 or copy of a given one)
|
|
- added remove_partial to remove a given partial
|
|
- removed main_anal function (it's more a use example than a part of the library)
|
|
- redeclared ATSA_CRITICAL_BAND_EDGES as an extern double array (defined in critical-bands.c)
|
|
- removed unused 'args' field from ANARGS structure
|
|
- removed unused 'bands' field from ATS_SOUND structure
|
|
|
|
* utilities.c
|
|
- init_sound :
|
|
. added the 'with_noise' flag for critical noise bands initialization
|
|
and associated code (allocating ATS_SOUND::band_energy or setting it to 0)
|
|
. added initializaton of ampmax and freqmax to NIL, bands to 0
|
|
. added initialization of the new 'max_partials' field (same value as 'partials')
|
|
- free_sound :
|
|
. uncommented the allocation of band_energy
|
|
. replaced every call to free(p) by if(p){free(p); p=0;} for safety
|
|
. changed partials array data size to 'max_partials'
|
|
- ppp2 :
|
|
. changed num arg type from 'int' to 'unsigned int'
|
|
- set_av :
|
|
. added partial amplitude (amp) average computation
|
|
. added partial sorting by increasing frequency
|
|
- added increase_max_partials for reallocating a sound with more possible partials
|
|
- added add_partial to add a new partial (all 0 or copy of a given one)
|
|
- added remove_partial to remove a given partial
|
|
|
|
* save-load-sound.c
|
|
- added ats_load function to load an ATS sound from a file
|
|
with transparent little/big endian management (taken from atsh);
|
|
output ATS sound is assumed to be optimized (ats_save enforces this).
|
|
|
|
* tracker.c
|
|
. compute_frames : fixed buggy computation returning more frames than necessary.
|
|
. tracker:
|
|
- replaced 'soundfile' char* parameter by double* in_samps, int s_rate, int n_frames
|
|
- replaced 'resfile' char* parameter by double ***res
|
|
- enforces in_samps to be a monophonic sound (no more error if stereo)
|
|
- no more loading of the input sample file
|
|
- no more storing of the computed residual to disk (updates res)
|
|
- fixed generated ATS_SOUND duration to the really analyzed one
|
|
(nb frames * nb samples per frame / sample rate)
|
|
|
|
* residual-analysis.c
|
|
- residual_analysis :
|
|
. replaced the 'file' parameter by double** res, int s_rate, int n_frames
|
|
. no more loading of the input residual sample file
|
|
- updated code that uses ATSA_CRITICAL_BAND_EDGES (now a double array, no more a macro).
|
|
|
|
* residual.c
|
|
- compute_residual :
|
|
. moved the 'fil' parameter from 'mus_sample_t **' to a 'double *'
|
|
(enforces double precision and monophonic samples)
|
|
. removed the output_file parameter : the function now directly returns the computed
|
|
residual arrays as a double**
|
|
|
|
* critical-bands.c
|
|
- added definition of ATSA_CRITICAL_BAND_EDGES (an extern double array declared in atsa.h
|
|
that was formely defined as a macro)
|
|
- updated code that uses it.
|
|
|
|
* synthesis.atsh.c
|
|
- new synthesis related function, heavily inspired by synth-funcs.c from ATSH
|
|
|
|
* synthesis.c
|
|
- new synthesis related function, an improved version of synthesis.atsh.c
|
|
|
|
* other-utils.c
|
|
- fixed unsecure peak_frq_inc and peak_smr_dec about integer overflow
|
|
|
|
* peak-detection.c
|
|
|
|
* peak-tracking.c
|
|
|
|
* atsa.c and atsa-nogui.c : removed from the library, to make it independand
|
|
from any sampled sound file IO library ; should be put in an example project
|
|
|