SAU parser, player, and WAV file writer. Development repo sometimes with in-between release changes not yet on GitHub. https://saugns.github.io
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Joel K. Pettersson
Move pan field from voice/event data to op data nodes (before the interp/prealloc types). In parser, only add one carrier per event. The changes combine to fix the old pan bug giving several operators on the same line in one go the same value (setting it for one setting it for all). Thus, now truly works like mgensys 2020-06. Remove voice parameters, except in program.h types, where SAU_PVOP_GRAPH is needed to pass info to interp/prealloc. Simplify back fairly recent parseconv/scriptconv tracking and fields a little. Re-enable disabled call in parser to split an op. event after time shift.
|4 months ago|
|builder||4 months ago|
|devtests||4 months ago|
|doc||4 months ago|
|examples||4 months ago|
|interp||4 months ago|
|man||4 months ago|
|notes||4 months ago|
|player||4 months ago|
|reader||4 months ago|
|.gitignore||4 months ago|
|COPYING||10 months ago|
|Makefile||4 months ago|
|README||4 months ago|
|arrtype.c||4 months ago|
|arrtype.h||4 months ago|
|common.c||4 months ago|
|common.h||4 months ago|
|help.c||4 months ago|
|help.h||4 months ago|
|math.h||4 months ago|
|mempool.c||4 months ago|
|mempool.h||4 months ago|
|program.h||4 months ago|
|ptrarr.c||4 months ago|
|ptrarr.h||4 months ago|
|ramp.c||4 months ago|
|ramp.h||4 months ago|
|reflist.c||4 months ago|
|reflist.h||4 months ago|
|saugns.c||4 months ago|
|saugns.h||4 months ago|
|script.h||4 months ago|
|test-scan.c||4 months ago|
|time.h||4 months ago|
|wave.c||4 months ago|
|wave.h||4 months ago|
saugns is the Scriptable AUdio GeNeration System,
the implementation of the SAU (Scriptable AUdio) language.
SAU is a simple language for mathematical sound synthesis,
without support for the use of pre-recorded samples.
While the language is still primitive relative to the
goal (a useful language for writing electronic music),
it makes it simple to experiment with sounds.
A collection of basic wave types are supported, as well as
AM, FM, and PM (the "FM" of most commercial synthesizers).
An arbitrary number of oscillators can be used.
See 'doc/README.SAU' for a concise SAU language reference.
Example scripts under 'examples/' use the main features of
The program reads SAU (Scriptable AUdio) files or strings,
and can output to system audio and/or a 16-bit PCM WAV file.
Basic usage information is provided with the -h option. More
can be found in the man page and on the website,
Tested mainly on x86 and x86-64. Comes with support for
running on DragonFly, FreeBSD, Linux, NetBSD, and OpenBSD.
The following audio systems are expected:
Linux ALSA or OSS
Building and installing
Building requires a C99 compiler toolchain and
running `make` (GNU or BSD). (There is no "configure" step.)
On Linux systems, the ALSA library (libasound2) must first be installed.
In the cases of the 4 major BSDs, the base systems have it all.
A simple test after building is the following, which should
play a sine wave at 444Hz for 1 second:
./saugns -e "Osin"
`make install` will by default copy 'saugns' to '/usr/local/bin/',
and the contents of 'doc/' and 'examples/' to
directories under '/usr/local/share/':
'doc/saugns/README.SAU' SAU language reference.
'examples/saugns/' Example and test scripts.
(`make uninstall` removes the saugns binary and share directories.)
After installation, the saugns(1) man page gives
basic usage information and points to these files.
saugns is distributed under the terms of the GNU Lesser General
Public License (LGPL), version 3 or later. See the file COPYING
for details, or <https://www.gnu.org/licenses/>.
Some files are licensed under more permissive terms, such as
the ISC license (2-clause-BSD-equivalent), or
the 0BSD license (public-domain-equivalent shorter version);
see the heading comment text of source files.
The example and test scripts included as input for the program
currently do not have any explicit licensing. If needed in the
future, some Creative Commons license will be used. Feel free
to copy from the current ones for your own scripts.