SoftWerk is a MIDI step sequencer, somewhat inspired by the Doepfer Schaltwerk. The idea is appealing to me but unfortunately SoftWerk appears to be unmaintained, undocumented, and too buggy for me to use.
Nevertheless, I might come back to it someday and so I’m documenting what I’ve learned. I’d appreciate knowing if any of my conclusions are incorrect.
First, I started JACK (via QjackCtl) and amSynth. SoftWerk doesn’t add a menu entry, so I ran it from a terminal:
SoftWerk started running immediately so I clicked the Pause button. I then enlarged the window to an appropriate size.
I used QjackCtl to make the connections. The amSynth audio output was connected automatically. I manually connected the MIDI seq output of SoftWerk to the amSynth input.
NOTE: Connecting a virtual MIDI cable between SoftWerk and amSynth only connected SoftWerk’s control output. I needed to click the [+] to the left of SoftWerk in order to view both outputs and to connect SoftWerk’s seq output.
I clicked the run button for the first row (Sequencer 1). I then clicked the Start button near the top of the window. SoftWerk starting playing sequence 1.
Here’s what I discovered about the basic functions:
To change a note, hover the mouse pointer over the desired step and then use the mouse’s scroll wheel to set the desired note.
By default, each sequence is 16 steps long. The sequence length is controlled by the position of the blue arrowheads above the step boxes. Left click above a step to set that step as the new starting position; right click to set the new ending position. I did this while SoftWerk was paused; the new positions didn’t display until I clicked Play.
To disable a step, either Shift-right click or Ctrl-right click on the desired step. Again, the result isn’t displayed if SoftWerk is paused, but once SoftWerk is running the box will turn black. Normally a disabled step represents a rest instead of a note, but all disabled steps in the sequence can be completely skipped by clicking the skip button for that row.
It’s possible to transpose sequences using an external MIDI controller. First, I used QjackCtl to connect the output of a MIDI keyboard to SoftWerk’s seq input.
As I indicated above, I needed to click the [+] to the left of the SoftWerk input in order to access the seq input. Also, any sequence that’s to be transposed must have its mode set to Relative Pitch (which is the default).
With SoftWerk running, pressing keys on my controller transposed the sequence. Transposition is relative to middle C (MIDI note 60). For example, pressing the D above middle C transposed the sequence up by one step (two MIDI notes).
SoftWerk has a channel selector for MIDI input but I was unable to make transposing work for any MIDI input channel other than channel 1.
Working With Pattern Files
I was able to save a set of sequences as follows:
I selected File > New Pattern File, which opened the pattern dialog box.
I clicked the add current pattern button, which opened a small dialog box.
I entered Test1 as the New pattern name in the dialog box.
I entered TestPattern as the Pattern Set Name in the main dialog.
I clicked the save button.
I clicked the close button (I found out later that it’s better to leave the dialog open).
I was later able to retrieve the saved sequences as follows:
I selected File > Open Pattern File.
I double-clicked my pattern set file TestPattern.swp, which opened the pattern dialog box.
I double-clicked my pattern name Test1.
I noted that saving a pattern file didn’t allow me to specify a location; it automatically saved the file at /tmp, which seemed to be an odd choice. Opening a pattern file does allow for browsing, though, so presumably it would be possible to move pattern files from /tmp to another location.
SoftWerk is supposed to support MIDI learn for the note steps and for the sequence volume controls. I was not able to get MIDI learn to work for the sequence volume controls, which would have been useful. I was able to learn a note step but it didn’t work as expected: controller values 0-126 set note C0, while value 127 set note C#0. Other controls that would benefit from external control (such as Mute and Play/Pause) are not supported.
For MIDI learn, I found it was important to connect the MIDI controller’s output to SoftWerk’s control input. Otherwise, initiating MIDI learn caused SoftWerk to hang.
To learn a control (and as far as I can tell, this applies only to step value boxes), I hovered the mouse pointer over the control and did Ctrl-middle click. A box popped up displaying the text Operate MIDI controllers now. I turned a controller knob. As I noted above, the control was learned but it wasn’t useful.
There doesn’t appear to be any way to unlearn a control other than to revert to an earlier version of the pattern.
Working With Multiple Sequences
By default, SoftWerk can play up to eight sequences at a time. When using multiple sequences I generally use different note length values. SoftWerk supports that but uses the concept of “ticks” in order to support non-Western music.
The default of 16 ticks/beat appears to represent a step duration of an eighth note. For different step durations, adjust Gate as follows:
sixteenth note: 8 eighth note : 16 quarter note : 32 whole note : 128
Note represents the note duration in ticks. In most cases it should be less than the Gate value.
To adjust Gate and Note, I hovered the mouse pointer over the desired value and used left click to decrease or right click to increase.
The Rewind Problem
It was when working with multiple sequences that I found the bug that for me is pretty much fatal. I assumed that the Rewind button would restart each sequence from its beginning. Instead, it appears to restart each sequence from its second step (or at least somewhere after the first step). Multiple sequences (at least those with different Gate values) are then no longer synchronized.
The only “workaround” that I found to reset a sequence to its beginning was to do the following (with SoftWerk paused):
- Left click the arrow above the last step.
- Left click the arrow above the first step.
- Repeat the two steps above for each additional sequence.
- Click the Play button.
I attempted to use external synchronization to see if that would make a difference but I was unable to get it to work reliably. I did eventually get SoftWerk to play using external sync but it didn’t respond to tempo changes and I gave up.
The Play/Pause Button
I found it useful to be able to start and stop SoftWerk using the space bar. That’s not supported directly but once I clicked the Play/Pause button I could then toggle the button with the space bar as long as the button didn’t lose focus.
The button can also be operated using the keyboard shortcuts Alt-P (Play) and Alt-A (Pause).
More Information About SoftWerk
Author: Paul Davis
Documentation for SoftWerk Version 1 (from 2000 and mostly obsolete)
2010 thread about sequencers in general with input from Paul Davis regarding SoftWerk 3
Article by Dave Phillips about harmonySEQ and SoftWerk