|
|
The
Core
The AMaMP core provides a powerful and compact audio mixing engine.
It currently has the following features:
- Cross-platform
audio engine known to work on Windows, Linux, BSD, Mac OSX and
Sun Solaris accross a wide range of processor architectures (including
x86, PPC, Alpha and Sparc).
- Allows for
placement of inputs on a virtual timescale, and routing of inputs
to multiple outputs via any number of effects.
- Simple instruction
file format and IPC to enable you to use AMaMP as a backend for
your own applications.
- Completely
modular I/O system
- Supports
reading and writing of PCM Wave Files
- Output
to soundcard on Windows, cygwin and Linux
- Recording
from soundcard on Windows and cygwin
- Powerful
tools for I/O module developers...
-
Preprocessor to build natively compiling C code from an
IO file.
-
Automated building of IO modules as native DLLs or core
modules.
- Automated
checking of parameters passed to IO modules.
- Powerful
plug-in style effects system.
- A range
of effects ready to use...
-
Multi-tap Delay
- Noise
Gate
-
Volume Shaping
- Flange
(slightly broken)
- Powerful
tools for effect module developers...
-
Preprocessor to build natively compiling C code from an
FX file.
-
Automated building of effects as native DLLs or core modules.
-
Automated checking of parameters passed to effects modules.
- Non-destructive
trimming, volume change and panning
- IPC mechanism
to control the core at mix time from other applications.
- Add inputs,
outputs and effects
- Add,
modify and remove placements
- Pause,
resume and stop
- Get and
set the current position (enabling fast forward, rewind, etc)
- Exchange
IPC messages with effects and I/O modules
- Get
a list of available effects and I/O modules
- Check
if a file can be read by a certain module, get the length
of the audio data in the file.
- Language
bindings for C, Visual Basic and Perl (C & Perl work on Windows
and POSIX compliant platforms). Look in the bindings folder, or
on CPAN for the Perl binding.
The AMaMP core
is not just for frontends we develop as part of the project - it
is available for developers to use in their projects. By being a
stand-alone executable you can distribute it as a part of a package
distributed under a non-GPL license, provided you use the core itself
in compliance with the GPL. Why not head over to the download
page or look at the documentation to
see how it suits you?
Development
The core is now
usable but a long way from being feature complete. If you are interested
in contributing to the core, please check this
page.
The
To Do List
The
following things are planned for release 0.4:
- Implement
io2c and iolt build tools to support the builidng of input/output
modules, which may be loadable or compiled into the core. (DONE)
- Modify the
DLL abstraction layer and build system so that it is possible
to build some effects and/or I/O modules into the core, but not
others. (DONE)
- Convert current
I/O modules to the new IO format. (DONE)
- Modify the
parser to use the new I/O syntax and to stash more data in a parameters
structure so as to increase abstraction. (DONE)
- Modify the
core to use the I/O modules; remove old I/O subsystem. (DONE)
- Implement
file type lookup system. (STATUS:
Hooks in place)
- Implement
some new I/O modules:-
- OGG Vorbis
(TO DO)
- MP3 (TO
DO)
- Soundcard
recording support for Win32 and Linux (STATUS:
Win32 Support Complete, Linux To Do)
- Implement
some new effect modules:-
- Reverb
(TO DO)
- Flange
(TO DO)
- Chorus
(TO DO)
- Volume
Shaping (DONE)
- Noise
Gate (DONE)
- Define and
implement channel mapping and channel volume syntax. (DONE)
- Modify core
startup procedure, so that if no instruction file is supplied
the core waits in a paused state at the 0 position. (DONE)
- Add further
IPC support:-
- Global
chunk via IPC support (DONE)
- Add input
(DONE)
- Add
output (DONE)
- Add effect
(DONE)
- Get core
information (TO
DO)
- Find
file type (TO
DO)
- Get file
data length (DONE)
- Check
file is readable by a certain module (DONE)
- Get list
of effects the core has available (DONE)
- Get list
of I/O modules the core has available (DONE)
- Implement
advanced parameter validation support for I/O and effect modules.
(TO DO)
- Sort out
endian conversion issues. (DONE)
- Get a proper
test suite together so we know that AMaMP actually works on various
platforms, as well as compiles. (DONE)
Other things
it would be good to do (with version numbers as a rough guide):-
- Playback
speed modification (0.5)
- Look into
streaming output for other platforms, including Mac OSX and BSD.
(0.5)
- Implement
device selection for streaming input and output. (0.5)
- Look into
the time length limit problem. Solve it. This one could hurt.
(0.5)
- Support DirectX
for playback - better latency than win32 API waveOut calls. (0.5)
- Support ALSA
for playback on Linux (0.5)
- Implement
some synthesis inputs (0.5/0.6)
- Think about
hitting release 1.0.
Things that
it'd be good to do at some point:-
- Consider
embedding related stuff.
- Work out
the "effects don't really play ball on set_position"
issue.
- Write some
more effects
- Bandpass
- Bandstop
- Equalizer
- Distortion
- FFT
- Add support
for more file formats
Of course,
if you're a C hacker, you're very welcome to help develop it further;
drop an email to jonathan@jwcs.net
for more info.
|