soundeditor/atsa/CHANGES.txt

126 lines
5.7 KiB
Plaintext
Raw Normal View History

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