[PD-cvs] pd/portaudio LICENSE.txt,1.2,1.3 Makefile.in,1.2,1.3 README.txt,1.2,1.3 V19-devel-readme.txt,1.2,1.3 fixdir.bat,1.2,1.3 fixfile.bat,1.2,1.3 install-sh,1.2,1.3

Miller Puckette millerpuckette at users.sourceforge.net
Mon Sep 6 23:03:02 CEST 2004


Update of /cvsroot/pure-data/pd/portaudio
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19253/portaudio

Added Files:
	LICENSE.txt Makefile.in README.txt V19-devel-readme.txt 
	fixdir.bat fixfile.bat install-sh 
Log Message:
More files I forgot to add



--- NEW FILE: V19-devel-readme.txt ---
STATUS:

MME, DirectSound and ASIO versions are more-or-less working. See FIXMEs @todos
and the proposals matrix at portaudio.com for further status.

The pa_tests directory contains tests. pa_tests/README.txt notes which tests
currently build.  

The PaUtil support code is finished enough for other implementations to be
ported. No changes are expected to be made to the definition of the PaUtil
functions.

Note that it's not yet 100% clear how the current support functions
will interact with blocking read/write streams.

BUILD INSTRUCTIONS

to build tests/patest_sine.c you will need to compile and link the following
files (MME)
pa_common\pa_process.c
pa_common\pa_skeleton.c
pa_common\pa_stream.c
pa_common\pa_trace.c
pa_common\pa_converters.c
pa_common\pa_cpuload.c
pa_common\pa_dither.c
pa_common\pa_front.c
pa_common\pa_allocation.h
pa_win\pa_win_util.c
pa_win\pa_win_hostapis.c
pa_win_wmme\pa_win_wmme.c

see below for a description of these files.
               

FILES:

portaudio.h
    public api header file

pa_front.c
    implements the interface defined in portaudio.h. manages multiple host apis.
    validates function parameters before calling through to host apis. tracks
    open streams and closes them at Pa_Terminate().

pa_util.h 
    declares utility functions for use my implementations. including utility
    functions which must be implemented separately for each platform.

pa_hostapi.h
    hostapi representation structure used to interface between pa_front.c
    and implementations
    
pa_stream.c/h
    stream interface and representation structures and helper functions
    used to interface between pa_front.c and implementations

pa_cpuload.c/h
    source and header for cpu load calculation facility

pa_trace.c/h
    source and header for debug trace log facility

pa_converters.c/h
    sample buffer conversion facility

pa_dither.c/h
    dither noise generator

pa_process.c/h
    callback buffer processing facility including interleave and block adaption

pa_allocation.c/h
    allocation context for tracking groups of allocations

pa_skeleton.c
    an skeleton implementation showing how the common code can be used.

pa_win_util.c
    Win32 implementation of platform specific PaUtil functions (memory allocation,
    usec clock, Pa_Sleep().)  The file will be used with all Win32 host APIs.
    
pa_win_hostapis.c
    contains the paHostApiInitializers array and an implementation of
    Pa_GetDefaultHostApi() for win32 builds.

pa_win_wmme.c
    Win32 host api implementation for the windows multimedia extensions audio API.

pa_win_wmme.h
    public header file containing interfaces to mme-specific functions and the
    deviceInfo data structure.


CODING GUIDELINES:

naming conventions:
    #defines begin with PA_
    #defines local to a file end with _
    global utility variables begin with paUtil
    global utility types begin with PaUtil  (including function types)
    global utility functions begin with PaUtil_
    static variables end with _
    static constants begin with const and end with _
    static funtions have no special prefix/suffix

In general, implementations should declare all of their members static,
except for their initializer which should be exported. All exported names
should be preceeded by Pa<MN>_ where MN is the module name, for example
the windows mme initializer should be named PaWinWmme_Initialize().

Every host api should define an initializer which returns an error code
and a PaHostApiInterface*. The initializer should only return an error other
than paNoError if it encounters an unexpected and fatal error (memory allocation
error for example). In general, there may be conditions under which it returns
a NULL interface pointer and also returns paNoError. For example, if the ASIO
implementation detects that ASIO is not installed, it should return a
NULL interface, and paNoError.

Platform-specific shared functions should begin with Pa<PN>_ where PN is the
platform name. eg. PaWin_ for windows, PaUnix_ for unix.

The above two conventions should also be followed whenever it is necessary to
share functions accross multiple source files.

Two utilities for debug messages are provided. The PA_DEBUG macro defined in
pa_implementation.h provides a simple way to print debug messages to stderr.
Due to real-time performance issues, PA_DEBUG may not be suitable for use
within the portaudio processing callback, or in other threads. In such cases
the event tracing facility provided in pa_trace.h may be more appropriate.

If PA_LOG_API_CALLS is defined, all calls to the public PortAudio API
will be logged to stderr along with parameter and return values.


TODO:
    (this list is totally out of date)
    
    finish coding converter functions in pa_converters.c (anyone?)

    implement block adaption in pa_process.c (phil?)

    fix all current tests to work with new code. this should mostly involve
    changing PortAudioStream to PaStream, and GetDefaultDeviceID to GetDefaultDevice etc.

    write some new tests to exercise the multi-api functions

    write (doxygen) documentation for pa_trace (phil?)

    remove unused typeids from PaHostAPITypeID

    create a global configuration file which documents which PA_ defines can be
    used for configuration

    need a coding standard for comment formatting

    migrate directx (phil)

    migrate asio (ross?, stephane?)

    see top of pa_win_wmme.c for MME todo items (ross)

    write style guide document (ross)
    
    
DESIGN ISSUES:
    (this list is totally out of date)
    
    consider removing Pa_ConvertHostApiDeviceIndexToGlobalDeviceIndex() from the API

    switch to new latency parameter mechanism now (?)
    
    question: if input or outputDriverInfo structures are passed for a different
    hostApi from the one being called, do we return an error or just ignore
    them? (i think return error)

    consider renaming PortAudioCallback to PaStreamCallback

    consider renaming PaError, PaResult
    

ASSORTED DISORGANISED NOTES:

    NOTE:
        pa_lib.c performs the following validations for Pa_OpenStream() which we do not currently do:
        - checks the device info to make sure that the device supports the requested sample rate,
            it may also change the sample rate to the "closest available" sample rate if it
            is within a particular error margin

    rationale for breaking up internalPortAudioStream:
        each implementation has its own requirements and behavior, and should be
        able to choose the best way to operate without being limited by the
        constraints imposed by a common infrastructure. in other words the
        implementations should be able to pick and choose services from the
        common infrastructure. currently identified services include:

        - cpu load tracking
        - buffering and conversion service (same code works for input and output)
            - should support buffer multiplexing (non-integer length input and output buffers)
            - in-place conversion where possible (only for callback, read/write always copies)
            - should manage allocation of temporary buffers if necessary
        - instrumentation (should be able to be disabled): callback count, framesProcessed
        - common data: magic, streamInterface, callback, userdata


- conversion functions: 
	- should handle temp buffer allocation
	- dithering (random number state per-stream)
	- buffer size mismatches
	- with new buffer slip rules, temp buffers may always be needed
	- we should aim for in-place conversion wherever possible
	- does phil's code support in-place conversion?  (yes)              

- dicuss relationship between user and host buffer sizes
	- completely independent.. individual implementations may constrain
    host buffer sizes if necessary


- discuss device capabilities:
	- i'd like to be able to request certain information:
	- channel count for example


--- NEW FILE: fixfile.bat ---
rem Use Astyle to fix style in a file
fixlines -p %1%
astyle --style=ansi -c -o --convert-tabs --indent-preprocessor %1%
del %1%.orig
@rem convert line terminators to Unix style LFs
fixlines -u %1%
del %1%.bak

--- NEW FILE: Makefile.in ---
#
# PortAudio V19 Makefile.in
#
# Dominic Mazzoni
#

PREFIX = @prefix@
CC = @CC@
CFLAGS = @CFLAGS@ -Ipa_common @DEFS@
LIBS = @LIBS@
AR = @AR@
RANLIB = @RANLIB@
INSTALL = @INSTALL@
SHARED_FLAGS = @SHARED_FLAGS@
DLL_LIBS = @DLL_LIBS@
CXXFLAGS = @CXXFLAGS@
NASM = @NASM@
NASMOPT = @NASMOPT@

OTHER_OBJS = @OTHER_OBJS@

PALIB = libportaudio.a
PADLL = @PADLL@
PADLLV = $(PADLL).0.0.19
PAINC = pa_common/portaudio.h

COMMON_OBJS = \
	pa_common/pa_allocation.o \
	pa_common/pa_converters.o \
	pa_common/pa_cpuload.o \
	pa_common/pa_dither.o \
	pa_common/pa_front.o \
	pa_common/pa_process.o \
	pa_common/pa_skeleton.o \
	pa_common/pa_stream.o \
	pa_common/pa_trace.o

TESTS = \
	bin/paqa_devs \
	bin/paqa_errs \
	bin/patest1 \
	bin/patest_buffer \
	bin/patest_callbackstop \
	bin/patest_clip \
	bin/patest_dither \
	bin/patest_hang \
	bin/patest_in_overflow \
	bin/patest_latency \
	bin/patest_leftright \
	bin/patest_longsine \
	bin/patest_many \
	bin/patest_maxsines \
	bin/patest_multi_sine \
	bin/patest_out_underflow \
	bin/patest_pink \
	bin/patest_prime \
	bin/patest_read_record \
	bin/patest_record \
	bin/patest_ringmix \
	bin/patest_saw \
	bin/patest_sine8 \
	bin/patest_sine \
	bin/patest_sine_formats \
	bin/patest_sine_time \
	bin/patest_start_stop \
	bin/patest_stop \
	bin/patest_sync \
	bin/patest_toomanysines \
	bin/patest_underflow \
	bin/patest_wire \
	bin/patest_write_sine \
	bin/pa_devs \
	bin/pa_fuzz \
	bin/pa_minlat

# Most of these don't compile yet.  Put them in TESTS, above, if
# you want to try to compile them...
ALL_TESTS = \
	bin/debug_convert \
	bin/debug_dither_calc \
	bin/debug_dual \
	bin/debug_multi_in \
	bin/debug_multi_out \
	bin/debug_record \
	bin/debug_record_reuse \
	bin/debug_sine_amp \
	bin/debug_sine \
	bin/debug_sine_formats \
	bin/debug_srate \
	bin/debug_test1 \
	bin/pa_devs \
	bin/pa_fuzz \
	bin/pa_minlat \
	bin/paqa_devs \
	bin/paqa_errs \
	bin/patest1 \
	bin/patest_buffer \
	bin/patest_clip \
	bin/patest_dither \
	bin/patest_hang \
	bin/patest_in_overflow \
	bin/patest_latency \
	bin/patest_leftright \
	bin/patest_longsine \
	bin/patest_many \
	bin/patest_maxsines \
	bin/patest_multi_sine \
	bin/patest_out_underflow \
	bin/patest_pink \
	bin/patest_read_record \
	bin/patest_record \
	bin/patest_ringmix \
	bin/patest_saw \
	bin/patest_sine8 \
	bin/patest_sine \
	bin/patest_sine_formats \
	bin/patest_sine_time \
	bin/patest_start_stop \
	bin/patest_stop \
	bin/patest_sync \
	bin/patest_toomanysines \
	bin/patest_underflow \
	bin/patest_wire \
	bin/patest_write_sine

OBJS = $(COMMON_OBJS) $(OTHER_OBJS)

all: lib/$(PALIB) lib/$(PADLLV) tests

tests: bin/ $(TESTS)

lib/$(PALIB): lib/ $(OBJS) Makefile $(PAINC)
	$(AR) ruv lib/$(PALIB) $(OBJS)
	$(RANLIB) lib/$(PALIB)

lib/$(PADLLV): lib/ $(OBJS) Makefile $(PAINC)
	$(CC) $(SHARED_FLAGS) -o lib/$(PADLLV) $(OBJS) $(DLL_LIBS)

$(TESTS): bin/%: lib/$(PALIB) Makefile $(PAINC) pa_tests/%.c
	$(CC) -o $@ $(CFLAGS) pa_tests/$*.c lib/$(PALIB) $(LIBS)

install: lib/$(PALIB) lib/$(PADLLV)
	$(INSTALL) -m 644 lib/$(PADLLV) $(PREFIX)/lib/$(PADLLV)
	$(INSTALL) -m 644 lib/$(PALIB) $(PREFIX)/lib/$(PALIB)
	cd $(PREFIX)/lib && rm -f $(PADLL) && ln -s $(PADLLV) $(PADLL)
	$(INSTALL) -m 644 pa_common/portaudio.h $(PREFIX)/include/portaudio.h
	@echo ""
	@echo "------------------------------------------------------------"
	@echo "PortAudio was successfully installed."
	@echo ""
	@echo "On some systems (e.g. Linux) you should run 'ldconfig' now"
	@echo "to make the shared object available.  You may also need to"
	@echo "modify your LD_LIBRARY_PATH environment variable to include"
	@echo "the directory $(PREFIX)/lib"
	@echo "------------------------------------------------------------"
	@echo ""

clean:
	rm -f $(OBJS) $(TESTS) lib/$(PALIB) lib/$(PADLLV)

%.o: %.c Makefile $(PAINC)
	$(CC) -c $(CFLAGS) $< -o $@

%.o: %.cpp Makefile $(PAINC)
	$(CXX) -c $(CXXFLAGS) $< -o $@

%.o: %.asm
	$(NASM) $(NASMOPT) -o $@ $<

bin:
	mkdir bin

lib:
	mkdir lib




--- NEW FILE: install-sh ---
#!/bin/sh
#
# install - install a program, script, or datafile
# This comes from X11R5 (mit/util/scripts/install.sh).
#
# Copyright 1991 by the Massachusetts Institute of Technology
#
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
# the above copyright notice appear in all copies and that both that
# copyright notice and this permission notice appear in supporting
# documentation, and that the name of M.I.T. not be used in advertising or
# publicity pertaining to distribution of the software without specific,
# written prior permission.  M.I.T. makes no representations about the
# suitability of this software for any purpose.  It is provided "as is"
# without express or implied warranty.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch.  It can only install one file at a time, a restriction
# shared with many OS's install programs.


# set DOITPROG to echo to test this script

# Don't use :- since 4.3BSD and earlier shells don't like it.
doit="${DOITPROG-}"


# put in absolute paths if you don't have them in your path; or use env. vars.

mvprog="${MVPROG-mv}"
cpprog="${CPPROG-cp}"
chmodprog="${CHMODPROG-chmod}"
chownprog="${CHOWNPROG-chown}"
chgrpprog="${CHGRPPROG-chgrp}"
stripprog="${STRIPPROG-strip}"
rmprog="${RMPROG-rm}"
mkdirprog="${MKDIRPROG-mkdir}"

transformbasename=""
transform_arg=""
instcmd="$mvprog"
chmodcmd="$chmodprog 0755"
chowncmd=""
chgrpcmd=""
stripcmd=""
rmcmd="$rmprog -f"
mvcmd="$mvprog"
src=""
dst=""
dir_arg=""

while [ x"$1" != x ]; do
    case $1 in
	-c) instcmd="$cpprog"
	    shift
	    continue;;

	-d) dir_arg=true
	    shift
	    continue;;

	-m) chmodcmd="$chmodprog $2"
	    shift
	    shift
	    continue;;

	-o) chowncmd="$chownprog $2"
	    shift
	    shift
	    continue;;

	-g) chgrpcmd="$chgrpprog $2"
	    shift
	    shift
	    continue;;

	-s) stripcmd="$stripprog"
	    shift
	    continue;;

	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
	    shift
	    continue;;

	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
	    shift
	    continue;;

	*)  if [ x"$src" = x ]
	    then
		src=$1
	    else
		# this colon is to work around a 386BSD /bin/sh bug
		:
		dst=$1
	    fi
	    shift
	    continue;;
    esac
done

if [ x"$src" = x ]
then
	echo "install:	no input file specified"
	exit 1
else
	true
fi

if [ x"$dir_arg" != x ]; then
	dst=$src
	src=""
	
	if [ -d $dst ]; then
		instcmd=:
		chmodcmd=""
	else
		instcmd=mkdir
	fi
else

# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
# might cause directories to be created, which would be especially bad 
# if $src (and thus $dsttmp) contains '*'.

	if [ -f $src -o -d $src ]
	then
		true
	else
		echo "install:  $src does not exist"
		exit 1
	fi
	
	if [ x"$dst" = x ]
	then
		echo "install:	no destination specified"
		exit 1
	else
		true
	fi

# If destination is a directory, append the input filename; if your system
# does not like double slashes in filenames, you may need to add some logic

	if [ -d $dst ]
	then
		dst="$dst"/`basename $src`
	else
		true
	fi
fi

## this sed command emulates the dirname command
dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`

# Make sure that the destination directory exists.
#  this part is taken from Noah Friedman's mkinstalldirs script

# Skip lots of stat calls in the usual case.
if [ ! -d "$dstdir" ]; then
defaultIFS='	
'
IFS="${IFS-${defaultIFS}}"

oIFS="${IFS}"
# Some sh's can't handle IFS=/ for some reason.
IFS='%'
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
IFS="${oIFS}"

pathcomp=''

while [ $# -ne 0 ] ; do
	pathcomp="${pathcomp}${1}"
	shift

	if [ ! -d "${pathcomp}" ] ;
        then
		$mkdirprog "${pathcomp}"
	else
		true
	fi

	pathcomp="${pathcomp}/"
done
fi

if [ x"$dir_arg" != x ]
then
	$doit $instcmd $dst &&

	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
else

# If we're going to rename the final executable, determine the name now.

	if [ x"$transformarg" = x ] 
	then
		dstfile=`basename $dst`
	else
		dstfile=`basename $dst $transformbasename | 
			sed $transformarg`$transformbasename
	fi

# don't allow the sed command to completely eliminate the filename

	if [ x"$dstfile" = x ] 
	then
		dstfile=`basename $dst`
	else
		true
	fi

# Make a temp file name in the proper directory.

	dsttmp=$dstdir/#inst.$$#

# Move or copy the file name to the temp name

	$doit $instcmd $src $dsttmp &&

	trap "rm -f ${dsttmp}" 0 &&

# and set any options; do chmod last to preserve setuid bits

# If any of these fail, we abort the whole thing.  If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $instcmd $src $dsttmp" command.

	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&

# Now rename the file to the real destination.

	$doit $rmcmd -f $dstdir/$dstfile &&
	$doit $mvcmd $dsttmp $dstdir/$dstfile 

fi &&


exit 0

--- NEW FILE: LICENSE.txt ---
Portable header file to contain:
/*
 * PortAudio Portable Real-Time Audio Library
 * PortAudio API Header File
 * Latest version available at: http://www.audiomulch.com/portaudio/
 *
 * Copyright (c) 1999-2000 Ross Bencina and Phil Burk
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files
 * (the "Software"), to deal in the Software without restriction,
 * including without limitation the rights to use, copy, modify, merge,
 * publish, distribute, sublicense, and/or sell copies of the Software,
 * and to permit persons to whom the Software is furnished to do so,
 * subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * Any person wishing to distribute modifications to the Software is
 * requested to send the modifications to the original developer so that
 * they can be incorporated into the canonical version.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 *
 */
 

Implementation files to contain:
/*
 * PortAudio Portable Real-Time Audio Library
 * Latest version at: http://www.audiomulch.com/portaudio/
 * <platform> Implementation
 * Copyright (c) 1999-2000 <author(s)>
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files
 * (the "Software"), to deal in the Software without restriction,
 * including without limitation the rights to use, copy, modify, merge,
 * publish, distribute, sublicense, and/or sell copies of the Software,
 * and to permit persons to whom the Software is furnished to do so,
 * subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * Any person wishing to distribute modifications to the Software is
 * requested to send the modifications to the original developer so that
 * they can be incorporated into the canonical version.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 *
 */
--- NEW FILE: README.txt ---
README for PortAudio
Implementations for PC DirectSound and Mac SoundManager

/*
 * PortAudio Portable Real-Time Audio Library
 * Latest Version at: http://www.portaudio.com//
 *
 * Copyright (c) 1999-2000 Phil Burk and Ross Bencina
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files
 * (the "Software"), to deal in the Software without restriction,
 * including without limitation the rights to use, copy, modify, merge,
 * publish, distribute, sublicense, and/or sell copies of the Software,
 * and to permit persons to whom the Software is furnished to do so,
 * subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * Any person wishing to distribute modifications to the Software is
 * requested to send the modifications to the original developer so that
 * they can be incorporated into the canonical version.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 *
 */

PortAudio is a portable audio I/O library designed for cross-platform
support of audio. It uses a callback mechanism to request audio processing.
Audio can be generated in various formats, including 32 bit floating point,
and will be converted to the native format internally.

Documentation:
	See "pa_common/portaudio.h" for API spec.
	See docs folder for a tutorial.
	Also see http://www.portaudio.com/docs/
	And see "pa_tests/patest_saw.c" for an example.

For information on compiling programs with PortAudio, please see the
tutorial at:

  http://www.portaudio.com/docs/pa_tutorial.html
  
Important Files and Folders:
	pa_common/              = platform independant code
	pa_common/portaudio.h   = header file for PortAudio API. Specifies API.
	pa_common/pa_lib.c      = host independant code for all implementations.

    pablio                  = simple blocking read/write interface
    
Platform Implementations
    pa_asio                 = ASIO for Windows and Macintosh
    pa_beos                 = BeOS
    pa_mac_sm               = Macintosh Sound Manager for OS 8,9 and Carbon
    pa_mac_core             = Macintosh Core Audio for OS X
    pa_sgi                  = Silicon Graphics AL
    pa_unix_oss             = OSS implementation for various Unixes
    pa_win_ds               = Windows Direct Sound
    pa_win_wmme             = Windows MME (most widely supported)
    
Test Programs
	pa_tests/pa_fuzz.c = guitar fuzz box
	pa_tests/pa_devs.c = print a list of available devices
	pa_tests/pa_minlat.c = determine minimum latency for your machine
	pa_tests/paqa_devs.c = self test that opens all devices
	pa_tests/paqa_errs.c = test error detection and reporting
	pa_tests/patest_clip.c = hear a sine wave clipped and unclipped
	pa_tests/patest_dither.c = hear effects of dithering (extremely subtle)
	pa_tests/patest_pink.c = fun with pink noise
	pa_tests/patest_record.c = record and playback some audio
	pa_tests/patest_maxsines.c = how many sine waves can we play? Tests Pa_GetCPULoad().
	pa_tests/patest_sine.c = output a sine wave in a simple PA app
	pa_tests/patest_sync.c = test syncronization of audio and video
	pa_tests/patest_wire.c = pass input to output, wire simulator

--- NEW FILE: fixdir.bat ---
rem Use Astyle to fix style in 'C' files
cd %1%

fixlines -p *.c
fixlines -p *.cpp
fixlines -p *.cc

astyle --style=ansi -c -o --convert-tabs --indent-preprocessor *.c
astyle --style=ansi -c -o --convert-tabs --indent-preprocessor *.cpp
astyle --style=ansi -c -o --convert-tabs --indent-preprocessor *.cc
del *.orig
@rem convert line terminators to Unix style LFs
fixlines -u *.c
fixlines -u *.cpp
fixlines -u *.cc
fixlines -u *.h
del *.bak

cd ..\





More information about the Pd-cvs mailing list