home *** CD-ROM | disk | FTP | other *** search
- /*
- * atcsound.h - features related to Audio Transform Compression (ATC).
- */
-
- /*
- * In all functions below, the return value is 0 for success and
- * nonzero for failure. A failure return generally means the feature is
- * not available (e.g., on non-NeXT hardware).
- */
-
- int SNDGetNumberOfATCBands(int *nBandsP);
- /*
- * Get number of frequency bands used by ATC (40 in release 3.0).
- * The band frequencies correspond roughly to the critical
- * bands of hearing. Band 0 is "D.C.", meaning it is centered
- * at 0 Hz. At higher frequencies the bands are wider and
- * spaced farther apart. The band width and spacing are approximately
- * 20% of the band center-frequency above 500 Hz, and uniform
- * below 500 Hz. These remarks apply to the standard 44.1 kHz sampling rate.
- * At other sampling rates, the bands frequencies are scaled so that the same
- * number of bands covers 0 Hz to half the sampling rate, whatever it is.
- */
-
-
- int SNDGetATCBandFrequencies(int nBands, float *centerFreqs);
- int SNDGetATCBandwidths(int nBands, float *bandwidths);
- /*
- * Get center-frequency or bandwidth in Hertz for each band used by ATC.
- * Assumes a 44.1 kHz sampling-rate.
- */
-
-
- int SNDGetATCEqualizerGains(int nBands, float *gains);
- int SNDSetATCEqualizerGains(int nBands, float *gains);
- int SNDScaleATCEqualizerGains(int nBands, float *gainScales);
- /*
- * Get/set/scale graphic-equalizer gains for ATC playback.
- * Obtain nBands from SNDGetNumberOfATCBands(). Each gain specifies a
- * factor to be multiplied times the band amplitude during sound playback.
- * The gain can be any nonnegative number, although there is an
- * internal maximum limit. Only gains between 0.0 and 1.0 will not
- * cause output overflow under all conditions. If overflow occurs, the
- * result will be clipped. The system default gain is 1.0 in each band
- * (no equalization). Changes take effect for the next sound played, i.e.,
- * any currently playing sound is unaffected.
- */
-
-
- int SNDGetATCSquelchThresholds(int nBands, float *thresh);
- int SNDSetATCSquelchThresholds(int nBands, float *thresh);
-
- int SNDUseDefaultATCSquelchThresholds(void);
- /*
- * Get/set "squelch" levels used in ATC encoding.
- * Obtain nBands from SNDGetNumberOfATCBands(). Each level specifies a
- * threshold below which sound amplitudes are set to zero.
- * Tbe band frequencies are the same as those used in the graphic equalizer.
- *
- * The squelch thresholds trade sound quality for greater compression.
- * The higher the squelch thresholds, the greater the compression.
- * However, setting the thresholds too high will introduce sonic artifacts.
- *
- * It is possible to use the squelch threshold to suppress noise in
- * a recording, especially when that noise is steady, such as tape hiss
- * or static hum.
- *
- * A squelch threshold of 1.0 is considered to be the nominal maximum.
- * Therefore, a value of 1.0 for thresh[i]
- * implies band i is rejected almost always. A value of -120.0
- * ensures band i is never squelched.
- *
- * The system default squelch thresholds are set to the estimated threshold
- * of hearing in each band, assuming a normal listening level for the sound
- * output. The system default can always be restored by calling
- * SNDUseDefaultATCSquelchThresholds().
- *
- * Changes take effect for the next sound encoded, i.e.,
- * any currently compressing sound is unaffected.
- */
-
-
- int SNDGetATCGain(float *oLevelP);
- int SNDSetATCGain(float oLevel);
- /*
- * Get/set overall sound output level for ATC sound playback (in decibels).
- * A value of 1.0 means no change. A value of 0.0 will silence any sound.
- * Note that this volume setting affects "line out" as well as the speaker
- * output. (It is implemented as a scaling of the ATC equalizer gains.)
- * Changes take effect for the next sound played.
- */
-
- int SNDDropATCSamples(int nSamples, int bySamples);
- int SNDInsertATCSamples(int nSamples, int bySamples);
- /*
- * These functions provide a crude level of support for ATC sound
- * synchronization. By dropping or inserting samples,
- * time can be "warped" in the playback of an ATC sound.
- * To determine when to insert or drop samples, SNDSamplesProcessed()
- * can be called to obtain an estimate of how many samples have been
- * played out, and this can be compared to some other source of
- * time in units of samples at the current sampling rate.
- *
- * If bySamples is zero, the samples are inserted or dropped when
- * convenient by the algorithm (one sample per 256-sample frame).
- * Otherwise, an attempt is made to add or drop the requested number
- * of samples within bySamples samples. Outrageous requests may produce
- * outrageous results.
- *
- * If bySamples is negative, the drop or insert request is repeated
- * indefinitely. It is equivalent to renewing the request every
- * abs(bySamples) samples. This hack can be used to effect a speed control.
- * The formula is dropSamples = (int)(((float)bySamples)*(1. - 1./speed)+0.5),
- * where speed==1.0 means no change, speed==2.0 means play twice as fast, etc.
- *
- * Inserting or dropping samples should not cause a click in the
- * sound, but it will cause some distortion.
- *
- * The samples to insert or drop are selected randomly by system software
- * at the time the call is received. An ATC sound must be actively playing
- * for these calls to have effect.
- */
-