[linux-audio-dev] the new SoftWerk

New Message Reply About this list Date view Thread view Subject view Author view Other groups

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


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Fri Apr 28 2000 - 01:08:17 EEST