diff options
author | Guenter Geiger <ggeiger@users.sourceforge.net> | 2004-02-02 12:18:59 +0000 |
---|---|---|
committer | Guenter Geiger <ggeiger@users.sourceforge.net> | 2004-02-02 12:18:59 +0000 |
commit | 2e416ee0095f1bf608f849f156d564e0f45fb8ab (patch) | |
tree | 9e4881e81953b434b91dbd35218d78f05b27e82e /pd/portaudio/docs/pa_tut_callback.html | |
parent | ae6b5d89ea93b95c2990895077cf5e8f0bba9ad9 (diff) |
merged in version_0_37_1test6
svn path=/trunk/; revision=1305
Diffstat (limited to 'pd/portaudio/docs/pa_tut_callback.html')
-rw-r--r-- | pd/portaudio/docs/pa_tut_callback.html | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/pd/portaudio/docs/pa_tut_callback.html b/pd/portaudio/docs/pa_tut_callback.html deleted file mode 100644 index f5ccaf0f..00000000 --- a/pd/portaudio/docs/pa_tut_callback.html +++ /dev/null @@ -1,91 +0,0 @@ -<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> -<html> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <meta name="GENERATOR" content="Mozilla/4.77 [en]C-gatewaynet (Win98; U) [Netscape]"> - <meta name="Author" content="Phil Burk"> - <meta name="Description" content="Tutorial for PortAudio, a cross platform, open-source, audio I/O library.It provides a very simple API for recording and/or playing sound using a simple callback function."> - <meta name="KeyWords" content="audio, tutorial, library, portable, open-source, DirectSound,sound, music, JSyn, synthesis,"> - <title>PortAudio Tutorial</title> -</head> -<body> - -<center><table COLS=1 WIDTH="100%" BGCOLOR="#FADA7A" > -<tr> -<td> -<center> -<h1> -PortAudio Tutorial</h1></center> -</td> -</tr> -</table></center> - -<h2> -Writing a Callback Function</h2> - -<blockquote>To write a program using PortAudio, you must include the "portaudio.h" -include file. You may wish to read "<a href="portaudio_h.txt">portaudio.h</a>" -because it contains a complete description of the PortAudio functions and -constants. -<blockquote> -<pre>#include "portaudio.h"</pre> -</blockquote> -The next task is to write your custom callback function. It is a function -that is called by the PortAudio engine whenever it has captured audio data, -or when it needs more audio data for output. -<p>Your callback function is often called by an interrupt, or low level -process so you should not do any complex system activities like allocating -memory, or reading or writing files, or printf(). Just crunch numbers and -generate audio signals. What is safe or not safe will vary from platform -to platform. On the Macintosh, for example, you can only call "interrupt -safe" routines. Also do not call any PortAudio functions in the callback -except for Pa_StreamTime() and Pa_GetCPULoad(). -<p>Your callback function must return an int and accept the exact parameters -specified in this typedef: -<blockquote> -<pre>typedef int (PortAudioCallback)( - void *inputBuffer, void *outputBuffer, - unsigned long framesPerBuffer, - PaTimestamp outTime, void *userData );</pre> -</blockquote> -Here is an example callback function from the test file "patests/patest_saw.c". -It calculates a simple left and right sawtooth signal and writes it to -the output buffer. Notice that in this example, the signals are of <tt>float</tt> -data type. The signals must be between -1.0 and +1.0. You can also use -16 bit integers or other formats which are specified during setup. You -can pass a pointer to your data structure through PortAudio which will -appear as <tt>userData</tt>. -<blockquote> -<pre>int patestCallback( void *inputBuffer, void *outputBuffer, - unsigned long framesPerBuffer, - PaTimestamp outTime, void *userData ) -{ - unsigned int i; -/* Cast data passed through stream to our structure type. */ - paTestData *data = (paTestData*)userData; - float *out = (float*)outputBuffer; - - for( i=0; i<framesPerBuffer; i++ ) - { - /* Stereo channels are interleaved. */ - *out++ = data->left_phase; /* left */ - *out++ = data->right_phase; /* right */ - - /* Generate simple sawtooth phaser that ranges between -1.0 and 1.0. */ - data->left_phase += 0.01f; - /* When signal reaches top, drop back down. */ - if( data->left_phase >= 1.0f ) data->left_phase -= 2.0f; - - /* higher pitch so we can distinguish left and right. */ - data->right_phase += 0.03f; - if( data->right_phase >= 1.0f ) data->right_phase -= 2.0f; - } - return 0; -}</pre> -</blockquote> -</blockquote> -<font size=+2><a href="http://www.portaudio.com/">home</a> | -<a href="pa_tutorial.html">contents</a> -| <a href="pa_tut_over.html">previous</a> | <a href="pa_tut_init.html">next</a></font> -</body> -</html> |