Subject: [linux-audio-dev] the new SoftWerk
From: Paul Barton-Davis (pbd_AT_Op.Net)
Date: Fri Apr 28 2000 - 00:24:54 EEST
Over on softwerk.sourceforge.net, there is a CVS repository with the
latest version of my sequencer. The docs have not been updated from
the old version yet, and so I have not uploaded them. I will work on
this in the next few days. Some notes on the program, for new and old
users alike:
SoftWerk is not a sequencer in the style of programs like Jazz++,
Brahms, Cubase or Cakewalk. Its started as a model, now much extended,
of the Doepfer SchaltWerk, which might be considered a "pattern
sequencer" or even, as my friend Jim calls it "an arpeggiator on
steroids". It allows an abitrary number of sequences consisting of
arbitrary numbers of steps, each one containing arbitrary MIDI
messages, to all run at their own speed and to affect each other in
various ways. See http://www.op.net/~pbd/softwerk/ for more docs from
the old XForms version.
Whats new ?
* everything has been ported to Gtk--, instead of the
closed-source XForms. I find Gtk-- a joy to work with.
* most of the internal object relationships in the code have
been redesigned. STL now widely used throughout (I didn't know
enough about it when I first wrote it).
* support for using the RTC driver's new async i/o (SIGIO),
added by yours truly, and in the mainstream kernel as of about
2.3.44. SoftWerk can run as a SCHED_FIFO app with timing
accurate to 2msec! It could be better, but my experience shows
that faster interrupts from the RTC slow the overall system
down more than I would like. With this value (512
interrupts/second from the RTC), CPU usage on my system is
about 9%. I plan to add the capability to specify better
resolution in the config file, so that if you're willing to
dedicate your machine to SoftWerk while its running, you can.
* you can add new steps to sequences, and new sequences to the
system.
* every row has can be set to use independent input and output ports,
as well as independent input and output channels. You
can use as many MIDI ports as you have on your system
(or even a whole bunch of FIFO's!).
* every row has its own mute button, as well as a randomize
button. I'd like to add a 1/f generator instead of the
current truly-pseudo-random generator for this.
* step values for simple MIDI messages (noteOn, noteOff,
controllers etc.) are set using mouse motion, or the cursor
keys or both. You'll want a trackball to feel really
comfortable with SoftWerk.
* new "off" trigger added - an external or internal MIDI event
can now turn a sequence off. Other triggers can turn
the sequence on, as before.
* more intuitive clock display uses BPM; config file specifies
number of "ticks" (the units used to set gate times and
note lengths) corresponding to one beat. the default is
16, which allows for many nice subdivisions.
* can now sync with an external MIDI clock source (I've used
an Ensoniq ASR-10 sampler, my Doepfer MAQ 16/3 and
the arpeggiator on my K5000, though the last one
has amazingly bad timing of its MIDI clock messages).
OK, enough of that. Things you will need to compile it, other than the
usual (g++, ALSA or OSS, autoconf, Gtk-- 1.0.2):
* latest libpbd, libmidi++, libguileconfig, libgtkmmext
(all from CVS at quasimodo.org)
* kernel 2.3.44 or above if you want to use the RTC.
* pixmaps from quasimodo, or some alternative knob images.
(I am in the process of uploading just this set of pixmaps
to a tarball at softwerk.sourceforge.net, but its not
ready to fetch just yet)
Note that SoftWerk does NOT use either the OSS or ALSA sequencers. It
talks directly to your MIDI devices using read(2) and write(2). You
specify the files, so you can use FIFO's as well. Contrary to a recent
claim by Paul Winkler, it cannot write to stdout, though I may add this.
There will continue to be a bunch of changes to it over the next few
days - this is what CVS is for, right ? Please keep in mind that this
is a CVS-only release. An RPM/tarball/static binary release will
follow later.
Heads-up: I hope to try to move the Gtk-- 1.2 in the near future. This
is source-level-incompatible with Gtk-- 1.0.2, so expect some
wrenching sounds to show up in ardour, quasimodo and softwerk when
this happens.
Thanks to Bill Gribble for guileconfig, one of the cooler
contributions to Quasimodo that I now use everywhere. Get it, use
it. Its the best thing to happen to C++ programs with config files
since, oh, C++. In case you can't guess, it lets you set up a config
object, and then use a guile configuration script to set the
values. the full power of guile is available within the script, so
there is chance for you to ask me "can you add .... to the config
script language" - its Guile, so it can do anything that you can :)
--p
This archive was generated by hypermail 2b28 : Fri Apr 28 2000 - 01:08:17 EEST