News
News about the most significant happenings are posted here.
Slowly,
But Surely... :: 3rd May 2005
After some setbacks
that stopped the show for a few months, mostly surrrounding me having
RSI (which is now much better - turns out it was mostly an ergonomics
thing), AMaMP core development is back on track. The road to 0.3.3
will be a slow one, but work is underway; we now have channel mapping
and channel volume support in place, global message by IPC support,
and as a bonus crummy 24-bit PCM wave support that you really wouldn't
want to use for anything at the moment. A few bug fixes have also
been committed. Finally, if you want to see a cool web app using
AMaMP in the real world, check this
out. Thanks to John Napiorkowski for sharing what he was using AMaMP
for and for a number of helpful bug reports.
Core
0.3.2 Released :: 5th January 2005
The second development
release as the AMaMP core moves towards the 0.4 release is now available.
This release is certainly worth having over 0.3.1 if you use anything
other than Windows or Linux; a lot of cross-platform build issues
have been resolved. New features include noise gate and volume shaping
effects, various new IPC instructions and a much more useful test
harness and test suite. A lot of bugs have been fixed too.
Yes,
This Thing Is Still Happening! :: 20th December 2004
Sorry for being
so slack on posting news of late. AMaMP Core 0.3.2 is on the way
in 2 or 3 weeks time, and promises to be better than 0.3.1, which
by my own admission was a mess when it came to any non-Win32, non-Linux/x86
platform, and still wasn't great on those. Quite a few things have
been done so far for 0.3.2: a lot of build problems have been squashed,
proper endian conversion has been put in place, we have a test script
that's worth running, some new IPC instructions are handled and
some longer standing bugs and issues are resolved. And for the folks
who "bleh, internals" all that lot and want things they
can play with, 0.3.2 gives you noise gating and volume shaping.
Yes, they're implemented. Yes, they're tested and they work. Yes,
you should be excited. Well, maybe. :-)
Core
0.3.1 Released :: 30th October 2004
Version 0.3.1
of the AMaMP core has been released, marking the shortest time between
any two core releases and also the first minor release. This release
doesn't offer a massive new range of features, but has been made
in recognition of the new modular I/O system. That said, soundcard
recording is now available on Win32, soundcard playback and recording
is supported on cygwin, the add input and add output IPC message
handlers have been implemented and the core can now be started in
a paused state by not supplying an instruction file. Have at it!
:-)
More
Stuff Done :: 17th October 2004
After a week
where I just didn't feel like coding much, I've dug in to get the
next batch of things sorted out. You can now start the core without
an instruction file (where it is automatically paused at position
0), issue it instructions to add inputs, outputs and placements
via IPC and resume it. This is a pretty big (and quite important)
step forward and opens a lot of doors. I've also fixed some bugs
and put the hooks in place for the file module lookup by file type
and content (the implementation won't be a 0.3.1 thing, though).
Win32
Recording Support :: 8th October 2004
You can now record
sound (e.g. using the soundcard) on Win32, and presumably also Cygwin.
Enjoy.
New
I/O System In :: 7th October 2004
The new I/O system
has been integrated into the core, and all I/O functionality is
now working through it. All the functionality of the core that was
there before is there now, and a whole lot more to boot. I've also
got soundcard output working under Cygwin. I'm still planning for
a 0.3.1 release around the end of October.
Progress
On New I/O Module System :: 20th September 2004
Implementation
of the new 0.4 features has started, and the move to the new modular
I/O system is well underway. The new I/O module build tools are
almost complete and they are integrated into the build process.
Modifications have also been done to allow some effects and I/O
modules to be compiled into the core, others not, and then both
to be usable. The plan is to make a 0.3.1 release, which will basically
consist of what we had in AMaMP 0.3, but with the new I/O system
in the place of the old one. I'm aiming to have 0.3.1 released by
the end of October.
0.4
Work Underway :: 8th September 2004
Work on 0.4 is
in progress. The core page has the plans
for what will be in the final 0.4 release. The working syntax for
instruction files has been updated too, and possibly most significantly
the io2c specification has been essentially completed. See the documentation
page for access to these documents.
Advanced
VB Language Binding :: 8th September 2004
It didn't get
mentioned in the 0.3 release notice posted here a few days back
(though did appear in the change long) that a new advanced VB Language
Binding made it into the release. Documentation for it has not yet
been completed, but there is an example. A big thanks to KDL for
working on this - maybe now one of us will find time to tie it into
the current VB front end, or even get a new one underway.
Core
0.3 Released! :: 3rd September 2004
After several
delays here and there, and just one day short of 5 months since
release 0.2, the third release of the AMaMP core is with us! Compiling
on the same range of platforms as 0.2 did, AMaMP Core 0.3 adds a
powerful cross-platform plug-in style effects system along with
build tools to streamline effect development. Other new features
include (backward-compatible) syntactical additions and tweaks to
make the core easier to target, support for a wider range of IPC
messages (including pause, set position and placement addition,
modification and removal) and better error reporting by the parser.
A number of other smaller fixes and tweaks have also been made too.
Enjoy!
Core
0.3 Feature Freeze :: 21st August 2004
Aside from getting
the new VB language binding in, 0.3 is in feature freeze. There
is one bug left to fix that I'm aware of (in the Flange effect),
but everything that was slated for the 0.3 release is done. In other
news, the plans for 0.4 are being discussed on the list, including
a couple of RFCs being floated around.
Core
Approaches 0.3 :: 17th August 2004
I didn't manage
my mid-month code freeze, so the 20th won't be the release date
for 0.3 any more. That said, it's very near completion. All of the
tricky IPC work is done - only a few simple things remain. There
are a few small things to do in the flange and delay effects, plus
a missing macro to implement in fx2c. Mike Beck, aka KDL, also announced
today that the new VB language binding is ready, so this will also
feature in the 0.3 release. This is going to be our best and most
useful release yet!
GTK
Front End :: 10th August 2004
I have some exciting
news - a GTK front end is underway! I'd like to welcome Bob Firth
to the AMaMP team - thanks for joining us, Bob. :-) This news page
will keep you posted with how things progress in this new front
end. The core has also moved a little further forward as I start
to knock off the IPC tasks.
Progress
:: 7th August 2004
I took a two
week holiday somewhere between the last post and now, so things
have been a little slow. Anyway, effects are just about there -
including building into the core and parameter checking. Just the
odd missing macro from fx2c to get in place and we're there. At
least, until we find something that's broken. I've also enhanced
the parser/tokenizer so they spit out line numbers with errors and
accept the keywords TimeOffset, StartTime and EndTime so we can
enter times instead of samples when hand writing AMaMP instruction
files. These will hopefully make life much easier for people working
with the core.
So when will 0.3 be out? Well, there is a good bit of IPC stuff
left to do, a bug to fix in the flange effect. Depending on how
much time I get, 0.3 should appear maybe around the 20th, if I can
get a feature freeze for the middle of the month.
Documentation
:: 4th July 2004
I've reorganised
the documentation section a little and written more documentation,
including a nice overview of the core with instruction file examples
and much of the documentation for the effects system.
Effects
:: 4th July 2004
We now have a
working effects system, using loadable modules, on both Windows
and Linux (and with any luck, cygwin too). The vast majority of
effect file macros are implemented in fx2c, and the build system
has been updated. There's still some work to do in terms of getting
effects building into the core and in terms of doing the parameter
checking, but then the effects system is almost there. A delay effect
has been implemented to test things out and it works well. Finally,
KDL's work on the VB binding edges closer to completion.
Update
On 0.3 :: 15th May 2004
Despite a mass
of work at university and the looming exams, AMaMP core 0.3 very
slowly ambles on. The internals tidy-up was completed. Effects implementation
is underway, and while there's little to play with yet some of the
underlying parts are in. The biggest job left until we have something
ready to test and debug is fx2c, the effects file "compiler".
Last but not least, KDL is re-writing the VB language binding. When
he's done, it'll be much improved over my humble efforts. Thanks,
KDL!
Core
0.3 Is Underway :: 10th April
2004
While there are
no exciting new features to play with yet, the various structures
used by the core have been laid out a lot better. The big improvements
were to do the the I/O system, which now has a much neater interface.
The work to stash certain data in the job structure has been completed
also, and work has been started on a dynamic library loading abstraction
layer. I also made a new document available detailing what's in
the core source tree. Enjoy. - Jonathan
AMaMP
Core 0.2 Released :: 29th March 2004
Today the second
release of the AMaMP core was made. More details are in the release
notes, though we have language bindings for Perl, C and VB as well
as all the features previously plotted for 0.2. Head over to the
download
page at SourceForge.
VB
Language Binding :: 14th March 2004
Today I've checked
in a VB language binding and an example program. I've also got the
C binding and test program to compile under Linux. Unfortunately,
I've run into a problem centering around the popen() function not
supporting bi-directional pipe I/O, so I'll need to re-write that
to do things differently.
C
Language Binding And 0.2 :: 11th March 2004
Checked into
CVS a C language binding for AMaMP. It's been quite a big chunk
of work, and I've yet to test the POSIX bits, but under Win32 it
works just great. There's a test program showing the binding in
action and how easily you can run the core and exchange messages
with it in C. It's usable for C++ too, I'd expect. Also did some
tiny fixes in the core. The 0.2 is coming soon and will feature:
- WAV mixing on at least Win32, cygwin, Linux.
- Soundcard output on Win32 and Linux.
- IPC using pipes and support for a few basic message types
- Much lower memory usage than 0.1
- Speed improvements over 0.1
- Language bindings for C, VB and Perl
A release containing the VB front end and core binaries with a nice
installer will follow the 0.2 core release. Core development will
move onto the work towards 0.3, starting with an I/O and internals
tidy-up and effects support. - Jonathan
Linux
Soundcard Output, Test Harness :: 11th February 2004
It's been almost
a month, and university has kept me as busy as I feared. However,
we now have soundcard output on Linux, albeit with /dev/dsp instead
of ALSA. I haven't been able to lay my hands on anywhere to test
ALSA just yet, but I'm happy to settle with /dev/dsp for release
0.2. I also recently checked in a test harness and an initial test.
Configure works pretty well on Linux and Win32/MSVC++, though there
appears to be issues elsewhere. Time for a play on Source Forge's
compile farm. :-)
Multi-Channel
Guts In :: 12th January 2004
AMaMP is now
ready (under the hood, if not in terms of what is exposed) to provide
support for mixing a potentially unlimited number of channels. This
is important in terms of tying down the way data will be presented
to effects modules and, later, external I/O modules. I also compiled
AMaMP on Linux and gave it a quick test (just with wave files).
It compiled cleanly and executed successfully - the next step is
getting ALSA support it. That's next on my hit list, though being
back at uni means I can't be certain when time will appear for me
to do it.
Core
Progress :: 10th January 2004
Much progress
has been made on the core - IPC has been cleaned up and many bugs
in it have been fixed since it got its last mention here and as
much as has been planned for 0.2 has been done. In addition, work
is well underway to enable support for an arbitary number of channels.
Core 0.2 for the end of the month is looking possible.
Site
Updates :: 1st January 2004
I've updated
the documentation section and the core page. In doing so I've laid
down a lot of details about future plans and updated various specifications,
both current and working. There are some more things to add to the
documentation section when I get round to writing them.
Mike (aka KDL) has reported that work on the new Win32 front end
is going well. He is re-implementing the drag-and-drop "arrangement
editor" to both bring it up to speed with current core capabilities
and to allow new ones to be put in place more easily.
Core
& VB Frontend IPC In Place :: 27th December 2003
At long last
the IPC mechanisms are in and basically functional for both the
core and the VB front end. The main problem has been doing non-blocking
reads on stdin - turns out there isn't a standard way to do it,
so I now have a custom fgets implementation in the core which is
conditionally compiled depending on the platform. The VB frotnend
also has code in to send messages, in a nice IPC module that eventually
can be tidied up and handed to developers so they can use AMaMP.
It allows you to play and stop (using stop results in sending the
exit message). Latest I'm aware it works under NT based Windows
OSes, and there is an issue with 9x based ones. Should also work
on POSIX OSes, like Linux, UNIX, but that's untested. Summary: we've
still some way to go, but IPC is coming together. - Jonathan
IPC
:: 18th December 2003
Started work
on getting IPC support into the core. Checked into CVS the first
bits of work in the incoming message parser, and re-did the errors
and warnings stuff so they are sent as valid messages. Made a post
on the mailing list about this stuff, and also talked about message
dispatch in a little detail. There are also some minor changes on
the IPC document itself. - Jonathan
IPC
Specification :: 16th December 2003
Posted my first
version of the specification for how external programs will communicate
with AMaMP. - Jonathan
Build
System, ALSA :: 15th December 2003
Checked in my
first attempt at a build system (Configure.pl, which generates config.h
and a Makefile depending on the platform) and the .c and .h files
that I'll fill out for putting support for ALSA in. Did a few updates
to various documents on the site, including what I think is a fairly
final 0.2 to-do list for the core. No promises. See mailing list
archive for Win32 frontend development discussions and other cutting
edge thinking, including my thoughts on effects. Or better, subscribe
and join the fun. - Jonathan
Win32
Streaming Output Completed :: 5th December 2003
Finally finished
the bit I've been wanting to get done for ages. It seems to work
well; so long as you're using a reasonable buffer size the sound
won't skip or anything like that. It won't start playing until the
first couple of buffers are done. The buffer size I've kept in there
from the start turned out to be fine, so just compile with the default
and give it a spin. It's all in CVS folks, enjoy. - Jonathan
Beginnings
Of Streaming Output In :: 4th December 2003
After an extremely
busy month at Cambridge, the end of term has arrived and I've found
time to pull my tiny fragments of work over the last month together
and checked the changes into CVS. The parser now understands StreamOutput
chunks, and I have created a couple of template I/O drivers for
Win32 Wave API I/O and DirectSound I/O. There's some untested code
for opening and closing the Win32 Wave device. There's a good chance
this will be implemented before the DirectSound - in fact 0.2 may
be Win32 Wave API only. I think ALSA should have priority over DirectSound;
support for streaming I/O on both Linux and Win32 is better than
2 ways of doing it on Win32. :-) - Jonathan
I/O
Layer Changes & config.h :: 1st November 2003
Now 0.1 is well
out of the way, the grafting on 0.2 can commence. Today I made a
big start on that by sorting out the first two items on the list
- adding a config.h file and moving to a function pointer model
for the I/O layer. It's now much more scalable, and adding DirectSound
support is probably going to be the next step to take. Don't expect
that to be done in an evening, though. - Jonathan
AMaMP
0.1 Released! :: 29th October 2003
A couple of days
ahead of schedule, the first release of AMaMP has been made. The
files are available here
- the source is available in ZIP and TAR/GZIP format, and there
is also a binary release for Win32 complete with installer. Enjoy,
and thanks to KDL for his work on the VB front end to help make
this happen. - Jonathan
Pan
Support And Feature Freeze :: 25th October 2003
Today I added
the final feature slated to go in to 0.1 and announced a feature
freeze. I set a provisional release date of Friday 31st.
Custom
Output Chains :: 23rd October 2003
Implemented,
tested and checked in a patch that implements custom output chains.
Also fixed stuff relating to 8-Bit I/O and tested on-the-fly channel,
bit-depth and sample rate conversion on output. - Jonathan
Some
Of 0.1 Task List Complete :: 18th October 2003
Checked in patches
by myself (Jonathan) that sorts out the previous poor implementation
of errors and corrects the vast majority of the buffer overflow
issues in the Parser (hopefully, all of them). I moved a couple
of #define's in the parser to the structures header file, which
means they won't be forgotten when they are moved to a config.h
file after the 0.1 release, and introduced a #define for the maximum
identifier length. Also "accidentally" added support for
StartSample and EndSample to the parser, which was supposed to be
a 0.2 feature. That leaves two major features to go in before the
0.1 release - pan support (fairly simple) and custom output chains
(slightly more difficult, but still not bad - they are already supported
by the engine, so the parser just needs patching). After that, it's
test and release. :-)
Crucial,
But Small Core Bugfixes & VB Frontend News:: 14th October 2003
Today I tracked
down a few more bugs in the core that affected mixing down in certain
cases. They turned out to be in the engine, and not the read/write
routines where the problem showed up. I've also written some VB
code that outputs an AMaMP core input file (it was very quick and
easy to do) and so long as amamp.exe is in the same folder as the
VB app (or in the system path) it should do what is required. It's
not properly tested yet - I can only confirm that it generates a
valid output file. I tested by manually feeding that to AMaMP. I
also implemented the Volume keyword in the Placement chunk (only
a couple more lines in the parser). Finally, a few bits of the site
have been updated.
The
First Successful Output :: 13th October 2003
At last, after
hours of hacking at the AMaMP source while I should probably be
doing other things (e.g. sleeping), I've got it to deliver output!
The good news is that while I've only given it a very light testing,
it appears that on my test system it could mix at least 30 simultaneous
steams of CD quality audio in real time. That's providing I haven't
done anything stupid in the implementation that results in certain
parts of the system having exponential order (I can't think of any
areas where that might happen). This far outstrips the performance
of the VB engine, and my next job will be getting the VB front end
to emit an AMaMP input file. But that's for another time. CVS checkout
and have fun. :-)
IO
Layer & Engine Nearly There! :: 12th October 2003
Finished and
fixed up I/O stuff, which is now working apart from a bug in the
output writing function which causes a segfault (thus calls to it
are currently commented out) and the writing of the wave header
in the output close function. Also lots of work on the engine itself,
meaning that once the I/O layer is fixed up we should be close to
having the first generated output. Wow!
Latest
Updates In CVS :: 11th October 2003
I've just checked
in my latest work, which adds amamp_io.c and amamp_io.h. I decided
to make the I/O stuff nice and abstract from the start, so the mixdown
engine isn't bloated with it. The main mixdown loop has a break
statement in to it exits after the first iteration; that's a temporary
measure to allow testing to be done while other things get worked
on that the mixdown loop is dependent on.
New
Site And CVS Set Up :: 9th October 2003
I've created
and uploaded this site, and put the current core and VB front end
GUI source into CVS. Details at the SourceForge
Project Page. Any previous news is here for historical interest.
Core
Development Started :: Early October 2003
I got the O'Reilly
Practical C Programming book, and went from C newbie to writing
a tokenizer and parser for the AMaMP core. In fact, at the time
this site was done and this was written, the very preliminary, but
working version of the core looked to be at least 50% complete.
AMaMP
Goes GNU :: Summer 2003
I decided to publish
AMaMP under the GNU license, and continue its development. A page
was set up on my personal site, with a plan to move to SourceForge
(as you can see, it happened). The plan for the C core was also announced.
AMaMP
Is Born :: Late 2002 - Summer 2003
AMaMP started
out as the A Level computing project of Jonathan Worthington (see
developers page). It was to be written entirely in VB ('cus teacher
said so). As it turns out, it got me a very, very good mark. Good
enough that I barely needed to do the final exam to pass the course
with a Grade A.
|