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 d53a606466 Simplify down voice handling closer to parser end. 4 months ago
builder Simplify down voice handling closer to parser end. 4 months ago
devtests Rework '#' & 'Q' comment syntax. Reorganize scripts. 4 months ago
doc Add man page. Split README. Makefile changes. 4 months ago
examples Rework '#' & 'Q' comment syntax. Reorganize scripts. 4 months ago
interp Simplify down voice handling closer to parser end. 4 months ago
man Support AUDIODEV env variable. 4 months ago
notes Tweak parser design. Fix timing bug. Revise mempool again. 4 months ago
player Refactor audiodev module more. 4 months ago
reader Simplify down voice handling closer to parser end. 4 months ago
.gitignore Rename project to 'saugns' from 'ssndgen'. 4 months ago
COPYING Disable lexer testing. Clean-ups and portability fixes. 10 months ago
Makefile Add man page. Split README. Makefile changes. 4 months ago
README Add man page. Split README. Makefile changes. 4 months ago
arrtype.c Rename project to 'saugns' from 'ssndgen'. 4 months ago
arrtype.h Scanner & parser clean-up. Macro renaming. 4 months ago
common.c Rename project to 'saugns' from 'ssndgen'. 4 months ago
common.h Scanner & parser clean-up. Macro renaming. 4 months ago
help.c Rename project to 'saugns' from 'ssndgen'. 4 months ago
help.h Rename project to 'saugns' from 'ssndgen'. 4 months ago
math.h Rename project to 'saugns' from 'ssndgen'. 4 months ago
mempool.c Rename project to 'saugns' from 'ssndgen'. 4 months ago
mempool.h Scanner & parser clean-up. Macro renaming. 4 months ago
program.h Simplify down voice handling closer to parser end. 4 months ago
ptrarr.c Rename project to 'saugns' from 'ssndgen'. 4 months ago
ptrarr.h Rename project to 'saugns' from 'ssndgen'. 4 months ago
ramp.c Scanner & parser clean-up. Macro renaming. 4 months ago
ramp.h Rename project to 'saugns' from 'ssndgen'. 4 months ago
reflist.c Rename project to 'saugns' from 'ssndgen'. 4 months ago
reflist.h Scanner & parser clean-up. Macro renaming. 4 months ago
saugns.c Rename project to 'saugns' from 'ssndgen'. 4 months ago
saugns.h Rename project to 'saugns' from 'ssndgen'. 4 months ago
script.h Simplify down voice handling closer to parser end. 4 months ago
test-scan.c Rename project to 'saugns' from 'ssndgen'. 4 months ago
time.h Rename project to 'saugns' from 'ssndgen'. 4 months ago
wave.c Rename project to 'saugns' from 'ssndgen'. 4 months ago
wave.h Rename project to 'saugns' from 'ssndgen'. 4 months ago

README

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 language.

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,
<https://saugns.github.io/>.

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:
DragonFly OSS
FreeBSD OSS
Linux ALSA or OSS
NetBSD OSS
OpenBSD sndio

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.

Licensing
=========

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.