Audiality 0.1.0 Alpha Release
-----------------------------
Audiality is an audio engine originally designed for playing
music and sound effects in games. Scalability has been a major
priority; the current version will run on very low end Pentium
systems, but also scales to audio quality comparable to that of
"real" hardware synths. (That is not to say that Audiality can
compete with the feature set of those synths... Yet.)
The engine builds as a shared or static library, or both if
possible. (Not sure if it builds for Win32, but it did not
long ago...) Two simple test programs (one for the scripting
engine and one for the whole thing) and a bunch of demo sounds
and songs are included.
That minimalistic plugin API, and the timestamped event system
are in there. Should be easy enough to extract for anyone who
wants either or both for something else. Both are LGPL, just
like *most* of the rest of the engine. (Read on...)
Licensing terms:
I intend to release all of the code under the LGPL.
However, there are still traces of the GPL code that
"inspired" the creation of this engine. (I didn't
really mean to turn those four little files it this
beast... *heh*) That code was written by Masanao
Izumo (maintainer of Timidity++), whom I have not
been able to contact.
Therefore, the engine as a whole has to be considered
GPLed, until this issue can be resolved one way or
another. Feel free to find Masanao for me, contribute
LGPLed versions of the offending files, or whatever.
This might all sound silly to you, but I can't say
for sure how much of Masanao's code and design is
still in there, and I don't feel like stealing and
sublicensing stuff - be it 5 lines of code.
No big deal - it's still Free, and I'm not planning
on making money on Audiality as a product anyway.
The motivation for LGPL is just that I want people
to also be able to use Audiality for what it was
originally intended: Game audio.
The files (temporary location):
http://www.seaside.se/~sea1154a/audiality-0.1.0.tar.bz2 (359 kB)
http://www.seaside.se/~sea1154a/audiality-0.1.0.tar.gz (467 kB)
To install:
* Unpack into whatever place you want sources
* In the top dir:
* ./configure
* make
* As root: (or add options for user install)
* make install
* In the test subdir:
* ./configure
* make
* ./eeltest (does the output make sense? ;-)
* ./atest (enjoy! :-)
If the lib won't compile for reasons related to ALSA, I'm afraid
you have to './configure --disable-alsa', since the ALSA rawmidi
support is for 0.5 only... Sorry. (I'd happily accept a patch -
including audio support, as I'm using ALSA 0.9 myself now! ;-)
Requirements:
* SDL 1.2 (
http://www.libsdl.org)
* Autoconf 2.55
* Automake 1.7.1
* Libtool 1.4.3
(Though you can probably build with slightly older
versions of autotools. I just grabbed the latest
tarballs from the GNU site.)
Some working features (or so I hope!):
* Voice mixer with
* 2 stereo sends with independent bus selection
* Smooth ramping of sends - no zipper noise
* Scalable resampling quality:
* Nearest sample
* Linear interpolation
* Adaptive oversampling
* Cubic interpolation
* Native support for multiple waveform formats:
* 8 bit integer
* 16 bit integer
* Mono as well as stereo
* Internal mixer with
* Up to 16 busses
* Up to 8 insert effects per bus
* Full send array...
* ...that can send to other busses
* ...before the first insert
* ...after each insert
* Two way kewl insert effects (not really):
* Feedback delay "reverb"
* Basic limiter
* Off-line waveform rendering package:
* Driven by a simple scripting language
* Can be driven through a handy C API.
* Supports various sample formats:
* 8 bit integer
* 16 bit integer
* 32 bit float
* Mono as well as stereo
* 7 modulation targets, each with:
* 1 envelope generator
* 1 LFO
* Oscillator operator with:
* 6 mixing/combination modes:
* ADD
* MUL
* FM
* FM_ADD
* SYNC
* SYNC_ADD
* 13 waveforms/tone synthesisers
* SINE (with FM if you like)
* HALFSINE (half wave rectified)
* RECTSINE (full wave rectified)
* PULSE (PWM capable)
* TRIANGLE (mod => saw-tri-saw)
* SINEMORPH (recursive FM)
* BLMORPH (sin, saw, square)
* BLCROSS (sin, saw, square)
* NOISE (SID style; NG + S&H)
* SPECTRUM (additive Df)
* ASPECTRUM (multiplicative Df)
* HSPECTRUM (harmonic)
* AHSPECTRUM (pseudo harmonic)
* Basic filters:
* Low pass, 6 dB/oct
* High pass, 6 dB/oct
* Basic resonant filters (oversampled):
* Low pass, 12 dB/oct
* High pass, 12 dB/oct
* Band pass, 12 dB/oct
* Band reject/notch, 12 dB/oct
* Band boost/peak, 12 dB/oct
* Real time MIDI input (ALSA 0.5 or OSS)
* MIDI file loader/player
* Audio output through
* SDL (and whatever that supports)
* OSS
* OSS/polling (only for broken debuggers...)
* WAV and "RAW" audio file loading. (SDL)
The main goal for the future is to extend the scalability of
Audiality well into the range of serious home and professional
studio use. The idea is to provide total control, a multitude
of *useful* features, tools for fast and effective creation of
original sounds, and excellent audio quality. I'm serious about
music, and I'm not going back to programming hardware synths
with little LCD displays or crappy editor software. Audiality
is meant to replace the hardware synths I have, and eliminate
the need for future purchases in that area. (I'd much rather
spend the $$$ on audio interfaces, CPU power and perhaps, good
sample libraries.)
It's a tough goal, but I have been known to produce hundreds of
lines of working code a day (*), when strongly motivated. :-)
(*) Calculated from Audiality statistics during the period when
most of it was written. Around 300 lines/day, IIRC.
Some TODOs:
* Separate audio/MIDI drivers from the core!
* Implement a serious API for the engine library!
* Audio I/O through JACK, ALSA and possibly LADSPA.
* ALSA sequencer support.
* OSC? DMIDI? Whatever works.
* Hosting LADSPA plugins as inserts.
* Support multichannel I/O directly through the mixer.
* Make the FX plugin API use the event system.
* Add support for float32 processing and plugins.
* Direct-from-disk waveform playback. (EVO?)
* Switch from interpreter to compiler + VM.
* Support scripting in the real time engine.
* Script editor with GUI panels for known constructs.
* Full GUI editor that generats scripts from scratch.
* Integrate the off-line and RT synths totally.
* Split voice mixers into "resampler" and "send unit"
* Support voice insert plugins? Maybe, maybe not...
* Implement better resampling in the voice mixers
Have fun!
//David Olofson - Programmer, Composer, Open Source Advocate
.- Coming soon from VaporWare Inc...------------------------.
| The Return of Audiality! Real, working software. Really! |
| Real time and off-line synthesis, scripting, MIDI, LGPL...|
`-----------------------------------> (Public Release RSN) -'
.- M A I A -------------------------------------------------.
| The Multimedia Application Integration Architecture |
`---------------------------->
http://www.linuxdj.com/maia -'
---
http://olofson.net ---
http://www.reologica.se ---