mp4-sa-> sfront reference manual-> change log and license |
Sections
|
Change LogThe right panel documents the changes made in each sfront release. |
Change LogVersion 0.88 -- 12/26/04 (download) [1] Networking updated to match draft-ietf-avt-rtp-midi-format-07. Chapter M fields for A-BUTTON and C-BUTTON use new G bit layout and compute count for large values correctly. Sender supports the oldest-first log ordering for Chapters E/A/N. Sender supports new Chapter Q coding rule Start and Continue commands. SDP sent in SIP INVITEs uses rtp_maxptime and rtp_ptime, and uses correct SDP syntax. [2] The -sip_ip parameter now parses dotted-quads correctly. [2] Memory management bugs fixed (thanks to Graydon Hoare). [3] Correct value for PI used in code examples, book (thanks to Tiaan Geldenhuys). Version 0.87 -- 10/15/04 [1] Networking knows the new IP number of the Berkeley SIP server. [2] Compilation times of Mac OS X are improved. Version 0.86 -- 4/24/04 [1] Networking now conforms to the RTP payload format for MIDI under development in the Audio/Video Transport group of the Internet Engineering Task Force. [2] The download page no longer offers RedHat or Debian packages, because I no longer have root access to a desktop Linux workstation to build and test packages. However, the official Debian package for sfront 0.85 still exists, and will hopefully be updated to 0.86. [3] Several minor bugfixes. Version 0.85 -- 9/13/02 [1] Mac OS X support for real-time MIDI control, using the -cin coremidi control driver. Up to four external MIDI sources are recognized. Virtual sources are ignored; expect virtual source support in a future release. [2] Mac OS X memory locking now works in normal user processes, and is no longer limited to root.Version 0.84 -- 8/29/02 [1] CoreAudio I/O now works correctly under Mac OS X 10.2 (Jaguar). Thanks to Juno. [2] Large -latency values no longer hang CoreAudio; documentation for -latency option is now accurate for CoreAudio. Thanks to Manfred Brockhaus. [3] Sfront networking now works under Mac OS X, including PPP and DHCP. Version 0.83 -- 8/11/02 [1] Low-latency audio output and input now supported for Mac OS X using CoreAudio. Developed on a TiBook under 10.1.5; please send reports for other platforms. Thanks to coreaudio-api and darwin mailing list members for extensive API help. [2] Compile-time warnings under Visual C++ fixed. Thanks to Kees van Prooijen. Version 0.82 -- 7/23/02 [1] Bugfixes for large spline and cubicseg wavetables, and for polymorphic opcodes used in wavetables. Thanks to Michael B. [2] SIP server IP numbers updated for sfront networking. To use earlier sfront versions with the new SIP server, add -sip_ip 128.32.112.203 to the sfront command line. Version 0.81 -- 5/24/02 [1] Bugfixes for sfront code generation and for the SLib library. Thanks to Manfred Brockhaus and Michael McGonagle. Version 0.80 -- 5/08/02 [1] Sfront complies with the MPEG 4 Structured Audio COR2 Corrigenda (March 2002). See this guide to COR2 changes for more details. [2] The MP4-SA book is now licensed under the GNU Free Documentation License, and is bundled with all versions of the sfront distribution. [3] Many bugfixes. Version 0.79 -- 11/04/01 [1] Performance tuning for audio streaming under Mac OS X. Thanks to Richard Dobson and Robert. Version 0.78 -- 10/23/01 [1] Sfront buffer overflow bugfix, caused fatal errors under Mac OS X. Thanks to Robert. Version 0.77 -- 10/12/01 [1] New mac_carbon audio driver for Mac OS X, using the Carbon framework. Bugfixes for Windows WMME and DirectSound drivers. Thanks to portaudio.com, Phil Burk, Richard Dobson, and Dominic Mazzoni. Version 0.76 -- 9/23/01 [1] Enhanced audio driver API to support soundcard APIs that require callback functions. [2] New ps_win_wmme and ps_win_ds audio drivers for Windows WMME and DirectSound APIs. Thanks to the PortAudio team, and testers Richard Dobson, Peter Maas, Kees van Prooijen, and Tim Thompson. [3] Audio drivers now control default time option selection. [4] Many bugfixes in SAOL audio bus system. Thanks to Robert Sherry. Version 0.75 -- 8/13/01 [0] Sfront networking now works well with DHCP, otherwise unchanged from sfront 0.74. Thanks to Mike McGonagle. Version 0.74 -- 8/04/01 [1] First release for sfront networking. [2] Audio driver for Irix (6.2 and above). Thanks to Michael Pruett (SGI). [3] The sfront manual is now under the GFDL, for Debian compatibility. Thanks to Enrique Arnuncio for help with the Debian issues. Note the MP4-SA book license is unchanged. [4] New SAOL resonant physical model library. See examples/bach and several examples/linux files for SAOL produced by the library, and see sfront/lib/reson/README for library details. [5] Many bug fixes, thanks to Robert Sherry, Michael McGonagle, and Kees van Prooijen. Version 0.72 -- 7/10/01 [1] The -cin ascii control driver has been rewritten: it maps the ASCII keyboard as a two-octave pentatonic scale, with fixed note length. Special keys control MIDI presets and channel volume. Tested under Linux, should work on any OS that supports the termios API. [2] Sfront now fully tested under Mac OS X version 10.0.3. Work on Mac OS 9.1 under MPW has yet to resolve problems related to sample file and MIDI file reading, and so OS X is the most viable option for sfront Mac OS users. Thanks to Manfred Brockhaus. [3] Numerous bug fixes: variable length core opcodes work in oparrays, the && and || operators work for vectors, unused exports signal variables work correctly, several audio-bus errors fixed, SASL labelled control statements access multiple instrs correctly, large constant integer values correctly supported. Thanks to Robert Sherry and Axel Nackaerts. Version 0.71 -- 3/29/01 [1] Bugfixes for user-defined opcodes that use slower-rate statements. Thanks to Robert Sherry and Robin Davies. Version 0.70 -- 2/20/01 [0] Added MPW-related bugfix -- otherwise identical to 0.69, whose change-log items are listed below. [1] Sfront is compliant with the COR1 document, a new MPEG Corrigenda that updates the SAOL language. See this appendix of the MP4-SA Book to learn about the SAOL changes in COR1. [2] New alsaseq control driver written by Enrique Robledo Arnuncio, for MIDI control using the Linux ALSA sequencer. [3] Many bug fixes, including compliant global parameter krate determination when srate/krate is non-integral (thanks to Ross Bencina), Macintosh MPW compilation fixes (thanks to BUYO-BUYO- IGOR). Version 0.68 -- 10/28/00 [1] C code generated for MIDI control now compiles faster. [2] Many contributed bug fixes, thanks to Kees van Prooijen, Richard Dobson, the saol.net folks, and M. Edward Borasky. Version 0.67 -- 09/09/00 [0] Another bugfix for Windows sfront.dsp file (thanks to Kees van Prooijen). Rest of items unchanged since 0.65. [1] C code generated for SAOL and SASL wavetables compiles much quicker and runs with improved cache behavior. C code created for the "sample" wavetable generator no longer includes an WAV or AIFF parser, and moderately-sized constant tables for all generators are computed by sfront and placed into the sa.c file as constant float arrays. On some machine/ compiler configurations, the sfront -hexdata flag offers additional compilation speedup, by encoding arrays as hexadecimal strings. [2] C code generated for wide oparrays compiles much quicker and runs with improved cache behavior (thanks to Richard Dobson). [3] Many sa.c memory leaks involving wavetables have been fixed, reducing the working memory space of table-intensive programs. [4] Bugfixes involving the dur standard name (thanks to Tobiah), empty opcode return() statements (thanks to Ross Bencina), name space collisions (thanks to Aaron Finch), oparrays, and wavetables. Version 0.64 -- 08/02/00 [1] Optimizations for accessing global variables (via import/export) and opcode parameters, to eliminate unneeded copying. Programs that use these language features extensively should see significiant speedups (thanks to Dave Gillepsie). [2] Linux rpm and deb binary packages now available for download (thanks to Enrique Arnuncio and Joey Hess). [3] Bugfixes for fft/ifft shift-and-add mode (a startup artifact was eliminated, and an boxcar windowed fft/ifft pair has unity gain, thanks to Richard Dobson). [4] Bug fixes for ANSI constant compatibility (thanks for Aaron Finch) and name-space clashes, and a null -ain/-aout driver added was (thanks to Mike McGonagle). Version 0.63 -- 07/10/00 [0] Several cross-platform bugfixes (Thanks to Michael McGonagle and Richard Dobson). Rest of change log from 0.62. [1] Standard name cpuload is now supported in -playback and -timesync mode, for all drivers. Cpuload is a ksig, that takes on a value between 0 (machine is not loaded at all) and 1 (any further loading of machine risks loss of real-time playback). Cpuload is computed with no temporal filtering or windowing, and shows the performance on the last kcycle. [2] The -ain/-aout linux and -cin linmidi drivers are enhanced. The drivers are more robust against lockup and MIDI data loss. When run as root, the driver uses POSIX real-time scheduling to reduce audio dropouts (while we have carefully tested these root features, bugs in programs run as root can cause file-system damage: use at your own risk). Sa.c start-up screen now suggests the best sfront flags to use for a given patch. FreeBSD and linux sources are now merged, with many of these features available for both operating systems. Thanks to Paul Barton-Davis, Bertrand Petit, Benno Senoner, Kai Vehmanen, and the folks at saol.net. [3] Bugfixes in: memory allocation, dsound driver, random number generators, polymorphic table opcode rate semantics, -cin fstr file streaming, wavetable generator sizing, and array parameters in user defined opcodes. Thanks to Richard Dobson and the folks at saol.net. Version 0.61 -- 05/28/00 [1] Sfront is now includes Slib, a SAOL library that provides support utilities to simplify low-level SAOL programming. See this new chapter of the MP4-SA book for details. [2] New linux/linbuzz example, that shows the MIDI features of Slib in a real-time instrument. [3] New optimization: faster execution of expressions like tableread(t, int(x)), by eliminating interpolation code. [4] Bugfixes for the dynamic instr command, the outbus command, the buzz opcode and wavetable generator, specialop expressions, opcode table initializations that use opcode parameters, send statements that target the output_bus, and user-defined opcode rate warnings. Version 0.60 -- 05/07/00 [0] Minor buzz() opcode bugfix -- rest of change log describes changes between 0.58 and 0.59. [1] Rate-semantic printf statement implemented, and a new book chapter on debugging SAOL shows how to use it. Like all sfront SAOL extensions, sfront drops printf statements as it encodes MP4 files, and printf is not a reserved word if the -isosyntax flag is set. New -isocheck flag also helps debugging, adding many run-time checks. [2] "C pre-processing" of SAOL and SASL is now integrated into sfront, with line-number support for error messages, a post-processor that strips stray semicolons. To support library development, sfront now supports multiple global blocks in a program. Thanks to Michael McGonagle. [3] MIDI controller, aftertouch, and pitch bend information is now visible to effects and SASL instruments. See this book section for details. Thanks to Robin Davies and saol.net. [4] Support added to querying audio input sources for sample rate and channel width of input_bus, if not specified in global block. [5] Control drivers can now control BIFS variables (including params[]) as accessed by SAOL code. [6] Bug fixes: expressions used in array/opcode/table indexing now executed just once (formerly done twice due to buggy rounding code), buzz opcode now works for large rolloff and nharm values, user-defined opcode calls in the global block now work correctly, recursive opcode calls generate an error message, Kaiser window table generator bugs fixed. Many bugs in MIDI File support fixed (thanks to saol.net.) Version 0.58 -- 04/17/00 [1] The control driver API has been improved. It can now support compliant execution of MP4 SA_access_units, as well as patch editor, CLI, and symbolic debug applications. It includes many data structures that let the control driver discover information about the SAOL and SASL files used to generate the sa.c it lives in. [2] The programers manual for sfront has been reworked, and now includes an introductory section that explains how to use sfront from other programs, and a multi-part manual on the control driver interface. [3] A file streaming control driver has been written to demonstrate the new API. It opens an MP4 file during the start of sa.c execution, seeks past the config section, and then dynamically executes SA_access_unit stream packets. It contains much of the codebase needed for true MP4-SA network streamer. [4] The spline wavetable generator was described incorrectly in the MP4-SA book, and implemented incorrectly in sfront. Both book and program are now fixed. See this book section for the correct syntax (page down to the spline generator). [5] SAOL random opcodes now produce a different random number stream on each sa.c run. New -fixedseed sfront option simplifies SAOL program testing, by making all random opcodes produce a deterministic number stream on every sa.c run. Thanks to Martin Marier and Michael McGonagle. [6] Many bugs were fixed. Most bugs were in SASL and SAOL wave table generator code, and in the control driver code. Bugs were also fixed in the linmidi driver. Version 0.57 -- 03/8/00 [0] Windows distribution issues, and several bugs, that were found in 0.56 are fixed -- thanks to Daniel Kahlin, Michael McGonagle, Kees van Prooijen, and Richard Dobson. Remaining change log entries are carried over from 0.56. [1] The -bit option now reads SA files that have streaming data (i.e. SA_access_units). All event_types are supported (SASL score_lines, MIDI midi_events, and the sample type for table data). SASL score_lines that use both relative and absolute timestamps can be read (i.e. has_time = 0 and 1). [2] The -bitout option now writes binary files that include SA_access_units. The new -sstrout filename.sasl -mstrout filename.mid options specify the SASL and MIDI files for encoding as SA_access_units. Files specified using the older options: -sco filename.sasl -midi filename.mid are encoded as part of the preamble of the binary file (StructuredAudioSpecificConfig) as before. If SASL table commands are used with the sample wavetable generator, the WAV or AIFF file specified becomes a streaming sample chunk. [3] Bug fixes: skip and size fields work correctly in sample wavetable generator (thanks to Bertrand Petit), bugs in dynamic instrs fixed (thanks to Michael McGonagle), bugs in the AIFF audio input driver fixed. [4] Default help printout shortened (-help prints out the longer option listing). Version 0.55 -- 02/12/00 [1] Base frequency and loop points can be read by the sample wavetable generator, for both AIFF and WAV files, and this looping information is correctly captured in .mp4 files (Thanks to Kees van Prooijen). [2] SAOL template improvements: the restrictions on the use of "<" and ">" in maplist expressions have been removed, many bugs have been fixed, and a new template chapter in the MP4-SA book is now online. [3] Control and audio drivers can now access command-line options of the program containing them, and policy has been set to share the command-line-option namespace. See the audio driver documentation and Part III of the control driver documentation for details. Thanks to Michael McGonagle. [4] Linux/FreeBSD driver enhancements: more soundcards are permitted to use -timesync mode, and warning messages are printed for ill-advised use of timing flags. [5] Bug fixes: MIDIctrl standard name now works as an lval, control driver interface bugs fixed (thanks to the SAOL Projekt). Version 0.54 -- 01/27/00 [1] The sample wavetable generator can now read base frequency and loop start and end points from the smpl chunk of Microsoft WAV files (Thanks to Kees van Prooijen). MP4 file encoding and decoding correctly packs and unpacks this data into the binary MP4 encoding. Bugs handling 8-bit AIFF and WAV file data in MP4 encoding and decoding and in sample wavetable generator fixed. [2] Concat wavetable generator bugs fixed. [3] Several SAOL and SASL file parsing errors fixed (thanks to Bertrand Petit and to the members of the SAOL Projekt). [4] Non-ANSI strdup() calls removed from sfront and generated code. Version 0.53 -- 01/12/00 [1] Several new optimizations: [a] Instr and opcode tables generators with constant parameters are converted to imports tables. [b] Instr code in while and if-else blocks are now rate-optimized (i.e. slower subexpressions are moved to i-rate or k-rate if it is safe to do so). [2] Audio drivers for FreeBSD (thanks to Bertrand Petit). [3] New -except sfront option, includes a signal handler for gracefully shutting down audio drivers if generated C program terminates abnormally. Compiles as vanilla ANSI C, but may not work well on non-POSIX systems (thanks to Bertrand Petit). [4] Divide-by-zero bugs fixed in the aline, kline, aexpon, and kexpon core opcodes (thanks to Bertrand Petit). Bugs fixed in table and tablemap accesses in deeply nested oparrays. Bugs fixed in template expression substitution. [5] New binary distributions for Linux and DOS/Windows. The DOS/Windows releases are built using the dos-gcc cross-compiler that runs under Linux. Version 0.52 -- 01/03/00 [1] Extensive optimizations and bug fixes for the filter, spectral analysis, gain control, sample conversion, delay, and effects core opcodes, the pluck and grain signal generator core opcodes, and the spatialize statement. [2] All a-rate core opcodes now function correctly when enclosed in if and while statements with a-rate guards (thanks to Ross Bencina). [3] Runtimef.c file now included in lib/csrc/ directory -- thanks to Bertrand Petit. Version 0.50 -- 12/17/99 [1] The code sfront generates for wavetable data structures has been improved, and many core opcodes and language elements run faster as a result. [2] Many bug fixes: nested oparrays of user-defined opcodes now work correctly, a specialop bug that broke the linux/linvoc example is fixed, and complex wavetable generates now work correctly. Thanks to Dan Ellis and Reynald Hoskinson. Version 0.49 -- 12/04/99 [1] Optimizations of several core opcodes: buzz, aline, kline, aexpon, and kexpon. [2] Imports tables are now implemented as imports exports tables when it is safe to do so. Version 0.48 -- 11/22/99 [1] Fixes optimizer bugs, and adds new optimizations. New optimizations focus on effects instruments, and specializes generated code to the unique properties of instruments launched using send(). [2] Duration and delay arguments to SAOL instr command now correctly interpeted as having units of beats. Version 0.46 -- 11/16/99 [1] Fixes optimizer bugs, and adds new optimizations. New optimizations stem from a reference-counting scheme that tracks variables in SAOL code. [2] Win32 DirectSound output driver is now works better, and has been tested on SB Live, SB16, and Creamware Pulsar cards. Requires 7.0 version of DirectSound, and may have problems working under NT/Windows 2000. Thanks to Vincent Siliakus and Thomas Jongepier. [3] New control input driver alsamidi supports real-time MIDI input under Linux using the ALSA sound system (note OSS audio input and output drivers already work with ALSA). Thanks to Steven Pickles. Version 0.44 -- 11/01/99 [1] Fixes optimizer bugs, and adds minor optimizations. Major parts of the compiler have been rewritten to support future optimization releases. Version 0.43 -- 09/28/99 [1] Fixes code optimization bugs (0.42 produces incorrect code for certain arithmetic expressions). Running 0.42 with -O0 option should avoid these bugs, but will also avoid all optimization! Version 0.42 -- 09/19/99 [1] Rate optimization added to sfront -- slower-rate subexpressions are factored out and executed in a slower pass. Default is complete optimization, new flags control turning off parts of the optimizer. [2] Fixed dsound code generation bugs (but not underlying sound generation bugs). Thanks to Michael Gogins. Version 0.41 -- 09/10/99 [1] Fixed bugs affecting the special "startup" instrument (thanks to Michel Jullian). Version 0.40 -- 09/05/99 [1] Sfront can now handle audio input and output drivers that require floating-point data buffers. See audio driver documentation for details. [2] New -ain and -aout options for .dat files, the ASCII data format for the curve graphing program view (part of the Chipmunk tools, a UNIX toolset under the GPL). This option uses a floating-point driver. Version 0.39 -- 09/03/99 [1] Core opcodes now handle negative frequency arguments correctly (except for loscil). Thanks to Giorgio Zoia (ETH). [2] Supports Borland C++ compiler under Windows with very few warning messages (thanks to Ross Bencina). Version 0.38 -- 08/31/99 [1] Supports Borland C++ compiler under Windows with minimal warning messages (thanks to Ross Bencina). Version 0.37 -- 08/27/99 [1] Many minor changes to support compliation using Microsoft Visual C++. [2] Bundles all libraries into the sfront executable, so that the binary no longer needs to find the library directory. Version 0.36 -- 08/20/99 [1] Adds linux audio output and audio and MIDI input support. [2] Core opcode rate semantics now match saolc. [3] Removes a printf option that was not compatible with Microsoft Visual C, increasing the odds sfront may compile under Windows w/o UWIN (thanks to gogins@nyc.pipeline.com). Version 0.35 -- 07/29/99 Baseline version of sfront, future entries in this log will describe changes made to this release. |
Sfront LicenseThe Regents of the University of California hold the copyright to sfront. Sfront is licensed under the GNU license, which is reproduced below. The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
|
SummaryThis concludes the users guide. The next section of the manual is for programmers wishing to modify sfront or write audio drivers for sfront Next section: Part II/1: Adding Drivers to Sfront |
|
mp4-sa-> sfront reference manual-> change log and license |