Files
FreeJ/doc/scripting/AudioCollector.js
Jaromil a9cf290696 fixes to the audio collector and video encoder,
new add_audio method for video encoder,
more updates and cleanups
2008-05-03 20:10:28 +02:00

88 lines
2.7 KiB
JavaScript

/** This file is intended solely for being parsed by JSDoc
to produce documentation for the FreeJ's Javascript API
it is not a script you can run into FreeJ
it is not intended to be an example of good JavaScript OO-programming,
nor is it intended to fulfill any specific purpose apart from generating documentation
@author Jaromil
@version $Id: $
*/
///////////////////////////////////////////////////
/////// AUDIO COLLECTOR
/**
This constructor instantiates an AudioJack collector for Jack
@class The Audio Jack class collects audio and analizes it for use in parameters
<div class="desc">
This object collects audio from a <a
href="http://www.jackaudio.org">Jack</a> source, it can be used to
change parameter values based on the audio input. </div>
<div class="desc">
16 harmonics are provided using a fast fourier transform, returning
values available for assignement to parameters.
</div>
<div class="example">Example:
// create the audio collector
// args: jack_port, samplesize, samplerate
audio = new AudioJack("xine:out_l", 2048, 44100);
// set an adequate resolution
H=640;
M=H/128;
W=H/(H/80);
set_resolution(W,H);
// create a geometry layer to draw levels
geo = new GeometryLayer();
geo.start();
add_layer(geo);
// run the analisis on every frame and draw lines
bang = new TriggerController();
bang.frame = function() {
// this function must be called to refresh harmonics
audio.fft();
for(c=0;c<16;c++) {
hc = audio.get_harmonic(c);
geo.vline( c*M, H, H-( hc ));
}
}
</div>
@author Dave Griffiths, Jaromil
@constructor
@param {string} jack_port an input name like "alsa_pcm:input_1", see jack connections
@param {int} sample_size size of the samples in bytes, best if same as jack configuration
@param {int} sample_rate rate of the audio in input, best if same as jack configuration
@returns a new allocated Audio Jack
*/
function AudioJack(jack_port, sample_size, sample_rate) { };
/**
The Audio object processes the current input with an FFT (the cpu
consuming part) to be ready to provide up-to-date harmonics values
on request of get_harmonics.
*/
function fft() { };
AudioJack.prototype.fft = fft;
/**
A call to get_harmonics returns up to 16 values for each harmonic
detected on the audio, as the last time fft() was called. This
function provides values that are "in sync to the music" and can
be used to set parameters.
@param {int} harmonic number of the harmonic, from 1 to 16
*/
function get_harmonic(harmonic) { };
AudioJack.prototype.get_harmonic = get_harmonic;