The No.1 Website for Pro Audio
Old 23rd May 2017
Lives for gear

I would like to announce my new semi-modular MIDI tracker / sequencer ("Synergy").

You can read more about it and download it here.

It's basically a (modern) tracker, a very flexible MIDI routing and (pre-)processing tool, and it also includes a couple of synth-specific features like editors for the Prophet 12, Matrix 1000 and Alpha Juno, and a utility "node" for the Analog Rytm.

Here's a demo video I recorded earlier today. It shows how to create a simple track using the P12 + Tempest hardware synths, and the PX7 + MonoPoly software synths: - First Demo on Vimeo

Well, the video barely scratches the surface of what you can do with this software but I had to start somewhere.

Update November 9th, 2019:
- New version available for download (x64 Windows + Linux, source)

Update May 31st, 2019:
- New version available for download (x64 Windows + Linux, source)

Update June 10th, 2018:
- New version available for download (x64)

Update May 23rd, 2018:
- New version available for download (x64)

Update April 5th, 2018:
- New version available for download (x64)
- Added "cascaded arranger clip-state recording" demo video
- Added commentated soundcloud links

Update April 2nd, 2018:
- New version available for download (x64)

Update November 26th, 2017:
- New version available for download
- New demo track

Update September 9th, 2017:
- New version available for download
- New demo track

Update August 20th, 2017:
- New version available for download
- New demo track

Update June 18th, 2017:
- New version available for download
- 6 new demo videos (slicer, autolooper, Analog Rytm uploader)

Update June 7th, 2017:
- New version available for download
- New demo video (p12 multi-edit and pan "exploit")

Update June 5th, 2017:
- New version available for download

Update May 31st, 2017:
- Added Prophet 12 patch morph demo video

Update May 28th, 2017:
- New version available for download
- Added Sub37 CtlMorph demo video

May 23rd, 2017:
- Initial release

Last edited by bsp804; 9th November 2019 at 05:26 PM.. Reason: 20191109 update
Old 28th May 2017
Lives for gear

A new version has been released today.

  Arranger: start current loop when reaching the end of the previous loop
  Arranger: implement snap-to-grid (can now be turned off)
  Arranger: 'l' now aligns selected clips to grid
  CtlMorph: update "internal" synth profile
  CtlMorph: morph ranges are now freely configurable
  CtlMorph: add cyclic morph generator dialog (offset / range)
  CtlMorph: fix controller table layout issue
      Docs: add Proxy node documentation
      Docs: add TrigSeq keyboard shortcuts
      Docs: add several missing shortcuts
  MIDIPipe: fix MIDI cache clear bug
 Prophet12: improved patch morpher
 Prophet12: "Transform" / RT morph configuration is now saved in the project file
 Prophet12: lctrl-c/v/n to copy/paste/init patch
 Prophet12: HOME/END to select next/previous patch
 Prophet12: LMB-click on "Patch Nr" label-button to select next bank,
             hold-click to select first project-specific patch (P17 P1)
     Proxy: morph ranges are now freely configurable
   Tracker: add replace mode to envelope view
I've also recorded a demonstration video for the CtlMorph node:

In the demo I'm using my Moog Sub37. However, the morph feature works with any synth that can send/receive parameter CC and/or NRPN events.
Old 29th May 2017
Gear Head

Interested... Will have a go at this later at home. Will also ping it over to


"over half a million lines of code"

I hope most of that was refactoring.

and +1 for a GPL license. That way it'll live forever.
Old 29th May 2017
Lives for gear

Originally Posted by mongrol View Post
and +1 for a GPL license. That way it'll live forever.
It's not entirely GPL, yet.
Most of the native code (~50% of the total LOC) already is but some of the scripted parts (most of the application-specific code) is not.
But don't worry, we'll get there, eventually
Old 29th May 2017
Gear Guru
Derp's Avatar
Just downlooted it. Thanks for sharing!
Old 31st May 2017
Lives for gear

I've recorded a short video that demonstrates the Prophet 12 specific "virtual program change", "temporary parameter update" and "patch morphing" features:

The "virtual program changes" are implemented by sending the differences to the previous patch via NRPN messages.
The program (and/or bank) is selected by sending RPN messages to the "auto device" of the Proxy node.

"Temporary parameter updates" allow you to modulate any synth parameter and be able to revert to the original patch state at any time (auto-reverts when replay starts).
The parameter changes are received on a virtual Proxy node MIDI port that uses the same NRPN enumeration as the Prophet 12.

"Patch morphing" interpolates between a configurable number of patch states (7 patches in the demo video).
The morph position is controlled by RPN messages sent to the "auto device" of the Proxy node (0=first patch, 16383=last patch).

I know this may sound complicated but it's actually quite easy to use.
Old 5th June 2017
Lives for gear

A new version has been released today.


 ModMatrix: script editor dialog is now resizable
 Prophet12: fix vertical size related layout issue
   Tracker: fix raster recording mode (was completely broken in previous releases)
   Tracker: fix MIDI note recording issue (after two pattern loops)
   Tracker: lctrl-lshift-a to quantize block (no block = all steps)
   Tracker: lctrl-a now selects none if there already is a selection
   Tracker: rename "clear block" to "free envelope(s)" (lshift-f3)
   Tracker: '\' ('<' on german kbds) now clears block when there is a selection
   TrigSeq: implement "MultiTrack Polystep" output mode
   TrigSeq: implement "Mute Temp" output mode
   TrigSeq: implement "Pattern Change + Offset" output mode
   TrigSeq: output mode can now be overridden per track
   TrigSeq: output device+channel can now be overridden per track
   TrigSeq: add per-track microtime shift
   TrigSeq: lshift-x/c/v to cut/copy/paste track to/from track clipboard
   TrigSeq: lshift-w to force step play (current track only) (even when muted)
        UI: fix combobox item tooltip positions
I've also created two test/demo projects for the TrigSeq "Program Change" and "Multitrack Polystep" output modes. Please find attached a sound snippet where I mixed the recordings of both tests.

What you are hearing is a "TrigSeq" node (trigs) controlling a "Tracker" node (notes).

The arpeggio-like sequence uses the "PolyStep" feature to trigger steps from the tracker node, which has 4 tracks with 4 steps each.
The tracker node is set to external clock mode so the pattern does not start playing automatically. I.e. steps are only played when polystep RPN messages (sent by the TrigSeq node) are received.
I also assigned some MIDI faders to some of the synth parameters for some extra variation.

For the drums the "Program Change + Offset" output mode of the TrigSeq is used to switch between 7 Tracker patterns / beats (each TrigSeq track corresponds to one Tracker pattern).
At the beginning of the sound snippet the TrigSeq node is muted, then I gradually unmute all of the 7 tracks.

In both "tests", each TrigSeq track has different track and note lengths so the result is an evolving, polymetric sequence.
Attached Files
Old 7th June 2017
Lives for gear

A new version has been released today (again I'm still on holiday).


   PipeMap: always make node / pipe visible (via scroll offset) after they've been created
 Prophet12: add multi-edit feature
             (hold down LALT to multi-edit osc/env/lfo/delay 1..4 params)
 Prophet12: patchmorpher: extended param range flags are now ORd (instead of interpolated)
   Tracker: "up" key now works as expected in "add column dialog"
             when "Filter" textfield is focused
   Tracker: polystep RPNs are now parsed in both "record" and "play" frames
             (e.g. when they are generated by a modmatrix node that is
              controlled by external MIDI input)
   Tracker: add "Trk: Slide Base Note Off" RPN
   Tracker: pattern did not reset properly in ARP mode when CTL_SEEK was used simultaneously
and a new video about the new P12 editor features:
Old 18th June 2017
Lives for gear

AudioTool and Push Keyboard Mode

A new version has just been released !


 AudioTool: add "SXT" wav slicer and autolooper
             (input=wav, output=wavs + Reason NNXT patch)
 AudioTool: add "SDS" sample uploader and
             AnalogRytm samplechain/varichain/kit generator+uploader
      Midi: fix bug that prevented polyphonic pressure events from
             being recorded from external MIDI input
   MidiMon: fix bug that could cause discarded events to crash the app
   MidiMon: add option to show events after morph-scene transformation
   MidiMon: don't clear events when play pattern has changed
MorphScene: fix: conversion from poly to channel pressure resulted in static value
      Push: add "kbd" mode
             (play notes with push pads, 
              configurable mode/key/octave/row_add/shiftx settings)
      Push: add PUSH_MODE and PUSH_TOGGLE_KBD global midimapcontext targets
I've also recorded several new videos:

The slicer takes a wav file, slices it, maps the slices to keyzones (e.g. 3 alt hits per key, chromatic, white keys only, ..), and exports a new set of wav files plus a Reason NNXT sampler patch.

It also has an autolooper feature which works quite well even with complex material. Keep in mind that the autolooper was designed to loop single sounds, not entire sequences.

Stereo samples will be split into two mono samples that will be looped independently (thereby losing phase coherence). It's quite an interesting effect, though.

The autolooper correlates frequency spectra to find the loop points. This is rather CPU intensive time but the tool uses multithreading to speed things up (8 threads per default).
I think it gives better results than the usual time domain autoloopers.

The splitter and autolooper actually have a lot of options but to keep things simple and user-friendly, I create a couple of presets. You can add your own by editing "etc/sxt_scripts.ini" (you probably should not bother).

By default, the last 5% of a slice are skipped and the first 40% are reserved for the attack phase. The slices should therefore not be too short (see demo videos).

Analog Rytm Sample-/Varichains
The Analog Rytm samplechain / varichain generator and uploader have been released before as a cmdline tool (not very user friendly, I know).
Well, now there's a UI for them.
The basic idea is that you record drum hits onto an audio track, export that as a wav, and load it into the tool.
The tool will then auto-slice the wav, convert the slices to 48k mono (via SOX), calculate a samplechain (fixed sample offset steps) or varichain (variable sample offset steps) sample and a kit SysEx file and upload both to the Analog Rytm.
It's important that the chain sample is then loaded to the same sample slot for which the kit was generated (otherwise you have to edit the kit manually and change all the sample assignments).

Push keyboard mode
What's also new in this release is that there's now a "Kbd" mode for the Ableton Push controller. It allows you to play notes with the push pads and use the touch strip for pitchbending.

I've recently been entertaining the idea of getting a Linnstrument but my bank account clearly said "no" :D That's why I added this Linnstrument-like "Kbd" mode for the Push.
The current key (c..b), mode (major, minor, ..), "row add" (i.e. the note offset of the pad in the row above, e.g. 5 or 4), the base octave, and a horizontal shift can be edited via the Push encoders.
Well, 8x8 pads are a bit limited but good enough to try out this alternative (guitar-like) note input method.

The binaries can be download here.
Old 20th August 2017
Lives for gear

A new version has just been released !

AnalogRytm: fix: handle partial SysEx replies
AnalogRytm: fix: don't process note on/off events when node is muted
AnalogRytm: fix: only delete mapped input events
                  (i.e. pass unmapped events on to next node)
AnalogRytm: fix: learn trigs from autoch
                  (in prev releases, "Output Ch" had to be set to "TRK CH")
AnalogRytm: add: hold-click "Recv" to reset kit/pattern receive state
AnalogRytm: add: show RAW version
AnalogRytm: add: performance / scene / track lock mask (see "IO" tab)
                  (e.g. for mixing sounds from different kits)
AnalogRytm: add: select+send kit via RPN
AnalogRytm: add: mix kit+send via RPN (lock mask)
AnalogRytm: add: select+send pattern via RPN
AnalogRytm: add: re-enumerate UIDs tool functions (kit/pattern/..)
AnalogRytm: add: update track 1..12 sample nr tool function
AnalogRytm: add: hold-click kit recv to download only bd1,sd2,..,fx,perf,scene (opens menu)
AnalogRytm: add: support dual column names (separated via "~" character)
AnalogRytm: add: snapshot selection RPN
  Arranger: fix: creating new nodes sometimes caused clips to move to wrong tracks
  Arranger: fix: crash after pressing delete after last track clip has been deleted
  Arranger: change: move "silence" and "snapshot" functions to "Tools" menu
  Arranger: add: timeline clipstate (mute/solo+patternnr) recording
  Arranger: add: track recording lock buttons and kbd shortcuts
                  (h=toggle, lctrl-h=clear, lshift-h=invert)
  Arranger: add: utility function to copy node clipstate from arranger
  Arranger: add: utility function to delete all muted clips in selection
  Arranger: add: clip track area to minimum height
  Arranger: add: improve cursor key movement (e.g. auto-select clip near edit offset)
  Arranger: add: lshift-LMB click in track area to extend clip selection
  Arranger: add: after deleting clip, select next (or previous) one
  Arranger: add: 'd' to center display to replay offset
  Arranger: add: lshift-d to toggle center display lock
  Arranger: add: lctrl-SPACE to stop replay, don't rewind to start, and
                  select clip near replay offset
 AudioTool: add: SXT ClipLoop feature
                  (input=wav with 2 loop repeats, output=wav with 1 seamless loop)
      Docs: add: autodevice MIDI implementation table
      Docs: add: Arranger keyboard shortcuts table
    KeyMap: fix: pattern clone
    KeyMap: add: clone/clone sub/alloc sub utility functions and kbd shortcuts
    KeyMap: add: option to send fixed RPN(s) (e.g. start/stop/toggle mute/..)
    KeyMap: add: holding LALT while changing output device or channel now updates all entries
    KeyMap: add: holding LALT while changing send mode now updates all entries
    KeyMap: add: holding LALT while changing match mode now updates all entries
    KeyMap: add: holding LALT while changing note duration now updates all entries
    KeyMap: add: holding LALT while changing velocity curve now updates all entries
    KeyMap: add: alternative program change mode (mixed state)
                  (send timeline recordable "UI Node PrgChg")
    KeyMap: add: auto-advance to next entry in "update match note" recording mode
      MIDI: fix: always echo-transform input events in node editors
                  that expect output device events
      MIDI: fix: delete transformed SysEx messages only when device input echo is enabled
      MIDI: fix: note off velocity was broken in last release
      MIDI: add: "Note Buttons" synth profile
      MIDI: add: timeline recordable node/pipe mute/solo (e.g. "Com: UI Node Mute")
      MIDI: add: timeline recordable program change RPN ("Com: UI Node PrgChg")
      MIDI: add: hold-click (or lshift-kp enter) to stop without sending MMC stop
  MIDIPipe: fix: free marker when freeing frame, copy marker when copying frame
   MIDIMon: add: show SysEx message size
   MIDIMon: add: output monitor (MIDI buffer bytes) (lctrl-NUMPAD +)
   Monitor: fix: don't clear events when play pattern has changed or node is shown
   Monitor: add: punch in/out markers ('p')
   Monitor: add: "trim to punch in/out" tool function ('k')
   Monitor: add: "fit BPM to sequence" tool function ('b')
   Monitor: add: merge-markers tool function
   Monitor: add: default merge thresholds are now configurable
   Monitor: add: 17 new MMC targets
   Monitor: add: option to view transformed events
   Monitor: add: support "Com: Run" RPN
   Monitor: add: lshift-RCTRL to cycle through modes
  MonoPoly: change: don't reset active note state when node is reset
MorphScene: fix: conversion from polypressure to chpressure resulted in static value
MorphScene: add: update all matching entries when LALT is held down while
                  changing MIDI device or channel
MorphScene: fix: mousewheel-cycle through _all_ devs, don't stop at first unavailable dev
MorphScene: add: copy/paste scene with lctrl-c/v
MorphScene: add: clear scene with lshift-BACKSPACE
MorphScene: add: lctrl-up/down to move selected entry up/down
   PipeMap: fix: crash after moving last pipe
   PipeMap: add: lshift-up/down to move pipe
   Tracker: fix: auto-deselect block on cursor move after select all,
                  or when pattern is changed
   Tracker: fix: first beat note was not recorded when replay was started from last beat
   Tracker: fix: some undo related issues ("transaction still in progress")
   Tracker: fix: can now undo multiple track layouts (e.g. after monitor import)
   Tracker: fix: block transpose now leaves "all track notes off" (===) and
                  "all channel notes off" (###) events intact
   Tracker: fix: param events were not sent when param-specific device was set
                   and instrument device was invalid
   Tracker: fix: "cursor sometimes temporarily stuck at last row after switching to node" issue
   Tracker: add: Monitor pattern clipboard importer (auto-creates tracks/instruments/params)
   Tracker: add: pattern length can now (optionally) be set in beats/bars (lctrl-l)
   Tracker: add: support new "Com: Offset Queued" and "Com: Length Queued" RPNs
   TrigSeq: add: support "Com: Run" RPN

Live clip recording:
The most notable addition in this release is the Arranger's capability to live-record clip arrangements.

When the "Rec" checkbox in the Arranger timeline editor is selected and the replay is started, a snapshot of all currently playing patterns is inserted (as a starting point).

The Arranger will then continue to listen to any mute/solo and pattern changes and record them into the timeline, creating new clips. Clip positions and lengths will be quantized to 16th notes.

Please notice that sequenced mutes / pattern changes will not be recorded unless the new "UI" mute/unmute/solo/un-solo/prgchg RPNs are used (these can be mapped to MIDI controllers, of course).

It's also possible to restrict clip recording to certain tracks. When a track is locked (via the "L" button), it will be excluded from recording.

Monitor pattern import
It's now possible to import Monitor patterns into the Tracker node. This will automatically create all required instruments, instrument params, tracks and pattern cels.

The way this works is that in the Monitor editor, you copy the pattern you want to import to the clipboard (lctrl-c), then choose "Pattern->Import->Import From Monitor" (lshift-f9) in the Tracker editor.

It's probably a good idea to clear the Monitor history before recording, or use the new punch in/out markers (and trim to punch in/out tool function) to get rid of unwanted events.

SysEx routing
In previous releases, incoming SysEx messages were always discarded instead of being echo'd to an output device.
While this was expected behaviour when using synths in local off mode, this also prevented SysEx events from being routed from one device to another via the "morph scene" MIDI mapper.

Now these events are only discarded when an input device has "echo" enabled, not when an explicit routing is configured in the MIDI mapper.

What this means in practice is that it's now possible to use external synth editors (via loopback devices) parallel to the sequencer (tested with the Korg Radias editor).

Last but not least, here's a new demo tune. The beat is a live arrangement of 12 patterns which are recorded to the Arranger timeline (with minor editing) (sounds mainly from Vermona Perfourmer and DSI Tempest):
Attached Files

summer_rain.mp3 (7.94 MB, 1872 views)

Old 9th September 2017
Lives for gear


A new version has just been released!


      Auto: add: pattern copy/paste/new/delete keyboard shortcuts
    Buffer: add: pattern copy/paste/new/delete keyboard shortcuts
      MIDI: fix: race condition in lshift-NUMPAD enter shortcut handling
                  (start/stop w/o sending MMC)
  CtlMorph: change: send pattern ctl states after clipboard paste
  CtlMorph: change: cyclic morph generator/player now cycles through "used" patterns
  CtlMorph: add: lshift-r to send group reset ctl states (same as "Reset" button)
 ModMatrix: add: OP_RANGE_IN (send arg4 when arg2 is in range), rename OP_RANGE to OP_RANGE_OUT
 All Nodes: add: lctrl-lshift-HOME to go to next used (non-empty) pattern
 All Nodes: add: lctrl-lshift-END to go to previous used (non-empty) pattern
PatternMgr: add: pattern manager (lctrl-x d) (for all nodes that support patterns)
 Prophet12: fix: subosc levels were not sent correctly during proxy morph/patch change
 Prophet12: add: option to ignore proxy events (for sound design during replay) ("PL" checkbox)
 Prophet12: add: option to ignore option ignore proxy reset events ("PR" checkbox)
 Prophet12: add: "autosend" mixed state: only send patch when it is selected,
                  not when editor is shown
 Prophet12: add: show patch name in empty tab area, mousewheel over label to
                  select prev/next patch
 Prophet12: add: multi-patch-edit mode (lctrl-q) (e.g. for editing common morph group settings)
 Prophet12: add: morph preview mode
 Prophet12: add: "Diff" patch change mode (faster patch changes and less sound hickups)
 Prophet12: add: lctrl-e to load patch from synth edit buffer (same as "Receive Edit" button)
 Prophet12: add: new oscillator randomization dialog ('r')
   StepSeq: add: pattern copy/paste/new/delete keyboard shortcuts
   Tracker: fix: single-event undo while pattern is in record mode and autoscroll is disabled
   Tracker: fix: send MIDI keyjazz note off as note off instead of note on with velocity 0
   Tracker: fix: overlay redraw issues when switching between e.g. the sysex and tracker pages
   Tracker: fix: metronome click after "undo and restart recording" (return)
                  was occasionally missing a beat

Prophet 12:
Beside some fixes and workflow optimizations, there's a new oscillator randomization dialog that offers much more detailed control over the randomization than the randomizer found on the "Transform" page.
For example, it's possible to filter unwanted waveshapes, restrict oscillator pitch randomization only to synced oscillators, or normalize the oscillator levels so that their sum is always 100.

The new "proxy" filter checkboxes are highly useful when editing morph patches while a sequence is playing. When the "PL" checkbox is ticked, (proxy) patch select and morph events will be ignored, making it a lot easier to edit specific patches.
When "PR" is checked, the patch will not revert to its initial state when the replay is started.

The "Autosend" checkbox now has a third ("mixed") state that will cause the patch only to be sent to the synth when it is selected, not everytime the sysex editor page is shown.

The new "Diff" checkbox will enable an optimized patch change mode that only sends the differences to the current patch, thereby speeding up patch selection a lot, with less sound glitches (the P12 has almost 1000 parameters and usually the difference between two patches is a lot smaller).

Finally there is a new "multi-patch-edit-mode" that can be used to simultaneously edit common patch parameters like e.g. controller assignments / modmatrix routings. This is mostly useful when editing morph patches / patch variants.

Pattern Manager:
A new dialog has been added that can be used to select, copy, paste, and swap patterns. The pattern manager works with all nodes that support patterns (i.e. all except for "delay" and "proxy").

It also has a MIDI pattern selection mode that maps incoming note on events to pattern numbers, either via an absolute mapping, or via a "used"/non-empty pattern mapping. The base note for the first pattern can be set in the config file and is C-4 (48) by default.

Please notice that this is meant as an editing help, or for quickly jamming with patterns. The usual way to set up a note-to-pattern mapping is to use the "Keymap" or "ModMatrix" nodes (there are presets for that).

The new "RANGE_IN" op can be used to filter out unwanted parameter ranges. Set "arg1" and "arg3" to the parameter range start / end, and "arg4" to "None" in order to discard all controller events within that range.
Vice versa, the "RANGE" op has been renamed to "RANGE_OUT" and can be used to discard all events that are outside the given range.

The cyclic morph feature has been changed so that it now morphs between "used" / non-empty patterns. In previous releases, the patterns had to be contiguous (e.g. 1A(0),1B(1),1C(2),1D(3),..); now it's possible to start with e.g. 1A,2A,3A and later add e.g. 1B when finetuning the controller morph.

Mostly bugfixes -- especially the "undo and restart" issue was actually quite annoying. "undo and restart recording" is a feature that undos all recorded events and then restarts the current recording, synchronized to the beat (i.e. start recording by pressing the right shift key, then undo and restart by pressing return).
By the way: In case you're looking for a metronome pre-count: There is not any. Instead, just set the pattern start offset to the last bar of the pattern if you want to start recording from step one onward. The easiest way to do this is to press "lshift - SPACE".

That's it for now. The next release will probably take a bit longer (a few months I guess).

One last thing (almost forgot!): The Analog Rytm node now supports a couple of new RPNs that can be used to send single track sounds to the AR. This can be used to do "sound-locks" via MIDI. I've also updated my libanalogrytm GitHub page.

Here's a short (externally sequenced) demo track where both bass- and snaredrum are playing on the same track, whose sound is constantly updated via MIDI SysEx (7 different bass drum patches and 4 different snare drums, if you listen closely. The chords are from my P12):
Attached Files

ar_sound_demo-09Sep2017a.mp3 (1.47 MB, 1580 views)

Old 26th November 2017
Lives for gear

A new version has just been released!


 All Nodes: add: lctrl-g (jump to pattern) dialog is now available in all nodes
 All Nodes: add: when auto dev+ch is edited, indicate whether the setting is unique
             (bgcolor of channel combobox; tooltip lists conflict details)
 All Nodes: add map targets for "used" pattern selection (MMT_SELECT_USED_PATTERN_1..16)
  Arranger: fix: first tick of TrigSeq pattern was not played
                  when the node was previously muted
  Arranger: fix: selecting tracks with cursor up/down now skips empty tracks
  Arranger: fix: immediately resize timeline area after window has been resized
  Arranger: fix: when multiple clips are deleted, don't add deleted clip to new selection
  Arranger: change: prefer intersecting clips when selecting clips with cursor up/down
  Arranger: change: don't auto-scroll left/right when selecting clips up/down
  Arranger: add: highlight track label (red) that haven't been assigned a unique auto dev+ch
             (tooltip lists conflict details)
  Arranger: add: 'return' key or right mouse button click now edit first selected clip
  Arranger: add: lctrl-home to inc patnr of selected clips by 4
  Arranger: add: lctrl-lshift-home to inc patnr of selected clips by 1
  Arranger: add: lctrl-end to dec patnr of selected clips by 4
  Arranger: add: lctrl-lshift-end to dec patnr of selected clips by 1
 AudioTool: add -ow option (set separate wav output prefix)
 AudioTool: add UVI Falcon (.uvip) patch generator
             (currently supports Sample, Stretch, Layer-per-Keygroup and CC-Switch options)
 AudioTool: add wavetable mode (Serum-style 2048 frames/cycle wavetables)
             (resamples input wav cycles to match required wavetable cycle length)
 AudioTool: add "wavetable" preset
 AudioTool: add "split layered" preset
 AudioTool: add "multiloop c,d#,f#,a" presets
 AudioTool: add "single loop-only" preset
      MIDI: add Allen&Heath XONE K1 profile
      MIDI: add Akai MPK49 ControlBank B+C profiles
MorphScene: fix: source filter "range" and "split end": compare <= end instead of &lt;end
MorphScene: fix: "remap" 127..0 should invert (e.g. Roland foot switch)
   PipeMap: fix: crash after node as moved to other pipe and previous pipe was deleted
   PipeMap: add 'edit pipe/node comment" to context menus
   PipeMap: add polystep_8ch and polystep_8ch_kong pipe presets
     Proxy: fix crash in showDataStatic() (prophet08 editor)
      Push: fix: when kbd mode is disabled, never map Push events to outgoing device
    Replay: fix: duration of note-on events was truncated to 15bit (32767 ticks)
    Replay: change: increase replay thread priorities to realtime
    Script: add "Script" node type
    Script: add "chord detect" preset
    Script: add "gen mts tunings" presets
    Script: add: "ev/replace dev ch" preset
 StatusBar: change: increase BPM widget precision (e.g. 129.72 instead of 129.7)
   Tracker: fix: untight recording due to use of UI instead of replay song position
   Tracker: fix: patternmgr: after pattern selection during replay,
                  pattern nr reverts when page is exited
   Tracker: fix: envelopeview: zero values not drawn correctly (invisible)
   Tracker: fix: envelopeview: wrong -64..63 range editing center (display y offset)
   Tracker: fix: don't process tap note input when node is not being edited
                 (unless "bg" recording is enabled)
   Tracker: add: send parameter reset values when instrument is selected manually
   Tracker: add: show current line chord name in status bar
                  (currently recognizes 102 different chords, e.g. "Sus4" or "Maj7No3_I2")
   Tracker: add "collapse" utility function (prepare pattern for "tap" mode)
   Tracker: add: automatically redirect AT/PAT/PB/MW/BC/Expr/Sostenuto/Sustain events
                  to current instrument dev+ch (STConfig.b_node_tracker_delegate_perf_events)
   Tracker: add PAT_COLLAPSE_AND_TAP midimapper action
   Tracker: add PAT_TAP_TOGGLE mode midimapper action
   Tracker: add collapse+start tap menu item+kbd shortcut (lctrl-t)
   Tracker: add PAT_RECORD_CONTINUE midimapper action
   Tracker: add: set pattern length to cursor (lctrl-lshift-l)
   TrigSeq: fix: highlight cursor got stuck after last track trig was deleted
   TrigSeq: fix: 'w' in edit mode always set first step
   TrigSeq: fix: show RMB context menu only when button was clicked,
                  not after hold-release (e.g. floatparam edit)
   TrigSeq: fix: record device / playstep not working until replay's been started
                  at least once (after creating new node)
   TrigSeq: fix: play repeat even if track has no trigs (external trigger)
   TrigSeq: fix: only process record dev+channel events when editor is visible
   TrigSeq: fix: store mute+repeat states in node so that they work across pattern changes
   TrigSeq: fix: update vertical scrollbar when cursor is moved
   TrigSeq: add: tracksetupdialog: MIDI learn track outputs (note + dev + ch)
   TrigSeq: add: configurable track name bgcolors
   TrigSeq: add: per-track roll/repeat keys (C-5..D#6)
   TrigSeq: add: per-track mute keys (C-7..D#8)
   TrigSeq: add: handle trig/repeat/mute/globalrepeat/globalmute notes on auto channels
   TrigSeq: add: indicate external trig/repeat/mute in UI (flash track nr bg)
   TrigSeq: add: save/restore cursor track and scroll offset
        UI: change: enable FPS limiter by default (fixes high CPU/GPU load on some systems)

This update fixes a couple of issues, and also adds some workflow improvements.

For example, there are now graphical cues for the node automation device/channel (port) assignments that indicate whether two or more nodes have been assigned the same dev/ch.
While this may sometimes be intended, usually each node is assigned a globally unique port, especially when it's configured to show up in an Arranger node.

The cursor key navigation in the Arranger node has been improved and it's now easier to change and edit node patterns (the return key or a RMB-click takes you to the node editor, and pressing escape will show the arranger node again).

The "high framerate" UI option is now disabled by default since it caused a very high CPU load on systems where vsync is disabled in the graphics driver.

The replay now runs at higher thread priorities which improves the timing when the CPU load is high.

It's now possible to MIDI-learn the note and the output device+ch, which is very handy when your drum sounds come from different synths, or you want to pick specific sounds from a larger sampler keymap.
The track names can now be colorized, and more note automation features were added that allow you to trigger/mute/repeat tracks without using RPN messages.

The new script node is a very powerful tool for processing or generating events. Each node instance has up to 4 (graphically configurable) input and output ports which can be referenced in the script code.
Script variables prefixed by the "tag" keyword will become available as RPN-controlled inputs (parameters), and each script node pattern stores a pre-defined setup of these parameters.
It's also possible to semi-automatically generate UIs for editing the parameters via the "XML form" DSL (XFM).
A "watch file" feature allows you to use external editors for editing the script and XFM source codes.

The script node was mainly added to implement features that don't warrant a new node type, and the creation of new scripts requires a certain knowledge of the application internals.

However, using script _presets_ is not any more difficult than using any of the other program features.

This release comes with a couple of presets:

"replace dev ch" replaces the MIDI port of all incoming events that match the input filter port.

"gen mts tuning" generates MIDI tuning standard sysex messages, saves them to disk, and also sends them to the selected output port. The Prophet 12 synth recognizes these messages, for example.

"chord_detect" listens to incoming note ons and offs and generates "chordidx" and "basenote" outputs (RPN messages) which can be processed in a modmatrix node. This can be used to select arpeggiator patterns that depend on the currently played chord, for example.

The "sxt" tool (originally written to generate Reason NNXT sampler patches) now also emits UVI Falcon samples patches (.uvip).

The patch generator can be configured to use either "Sample" or "Stretch" oscillators, generate a layer for each keygroup (the default is to place all keygroups in one layer), and optionally generate a "Layer Rules" setup that switches between layers depending on the current value of a selectable continuous controller (e.g. the modwheel or an expression pedal).

Please be aware that Falcon requires a few sample frames from the loop start to be pasted after the loop end in order to play click-free loops.
This "loop workaround" is enabled by default.
If you want to generate samples that contain only the looped region (e.g. via the "Single Loop-Only (Trim)" preset), this option should be turned off.

The new (experimental) wavetable mode detects the pitch of the input wav and generates a Serum-style wavetable (2048 sample frames/cycle) by resampling the input cycles.
No sampler patch files are currently generated in wavetable mode, only the wav file (postfixed by "_2048" for Falcon to recognize it).

Last but not least, here's a track I made while preparing this release over the course of the past week (Ambient / IDM style):
Attached Files

four-leaved clover.mp3 (9.23 MB, 1516 views)

Old 2nd April 2018
Lives for gear

A new version has just been released!

   General: move to 64bit / x64 (tested on Windows 10)
  Arranger: fix: rebuild device name (and alias) list when node is shown
  Arranger: fix: restore clip selection after editing clip node
  Arranger: change: when starting selection with cursor keys, select upper or lower track
                     clip depending on cursor key (up/down)
  Arranger: change inc/dec patnr shortcut to home/end
  Arranger: change goto start/end shortcut to lshift-home/lshift-end
  Arranger: add: display pattern/clip names in timeline
  Arranger: add marker track
             (editable markers/ranges)
             (auto assign pattern numbers to markers for autodev remote control)
             (assigned pattern patnr can be changed by selecting and editing its patnr)
             (marker name can be changed selecting a clip and editing its name)
             (also supports standard autodev note-to-prg mapping (c-3..))
             (marker play can be beat-synced via "Queue 16th" setting in "Play" tab)
             ('return' or double-clicking a marker queues it)
             (support RPN_COMMON_SEEK_OFFSET when queueing markers from other arranger)
  Arranger: add arranger stack for easy navigation and editing of cascaded arranger setups
  Arranger: add note to arranger offset (marker) feature
  Arranger: add: zoom in/out with lshift-]/[ (+/ü) (like in Tracker node)
  Arranger: add: show tools menu with 'a'
  Arranger: add: focus grid size widget with lshift-a
  Arranger: add: when editing "Queue 16th", show bar/beat equivalent
  Arranger: add: cycle through play modes with 'p'
   MIDIMon: add: colorize events
   Monitor: change: when clicking note (to play it), don't grab keyboard focus
                     (that prev/next frame can be select with cursor keys)
   Monitor: add: move frame left/right (lshift-left/right)
   Monitor: change "play frame" shortcut to 'w' (consistency with trigseq)
   Monitor: change "delete frame" shortcut to DELETE
   Monitor: change change "delete frame before current" shortcut to lctrl-DELETE
   Monitor: add "clear frame" shortcut (backspace)
   Monitor: add: open tools menu with 'a'
   Monitor: add: auto-merge and set fixed duration option (useful for editing chords)
   Monitor: add: save/restore merge millisec, fixed duration and velocity per node
   Monitor: add: when appending new events during record->play->record,
                  add some time offset to prevent merge
   Monitor: add: frames can now be triggered with notes (auto-dev)
                  (STConfig.node_monitor_trigger_base_note (c-3 / 36))
   Monitor: add: trigger velocity modes (keep, replace, multiply, add)
   Monitor: add: lock/overdub current frame mode
                  (don't advance while recording)
                  ('l' or 'd' key toggles it)
      Push: add: keyboard mode: dual+quad split modes
    Script: fix: unresolved "module member not found" causes program to terminate
    Script: fix: constant value error when script is recompiled
    Script: add: boppad to trigseq script preset
   TrigSeq: fix: remove note from framerec when record dev+ch matches
   TrigSeq: fix: pasting pattern plays sounds
   TrigSeq: fix: don't record note duration (arg2) when recording is not enabled
   TrigSeq: fix: instance created during replay was not always in sync
   TrigSeq: fix: autodev notes were only working when recording device was enabled
   TrigSeq: change: clear track trigs and repeats (and keep args+microtiming) (backspace)
   TrigSeq: add: timing track (added to per-track step microtimes)
   TrigSeq: add: timing track / groove presets (STConfig.groove_path)
   TrigSeq: add: clear track microtiming shortcut (lalt-backspace)
   TrigSeq: add: when drawing trigs with RMB, interpolate position while LCTRL is pressed
                  (relative mouse y in step cell determines velocity)
   TrigSeq: add: pageup/pagedown: move cursor to next/prev track (groups of 4)
   TrigSeq: add: lshift-pageup/pagedown: inc/dec track len
   TrigSeq: add: lshift-home / lshift-end: goto first/last track
   TrigSeq: add: utility fxn to load arg2 identity (0..play_length-1)
   TrigSeq: add: paste track to all patterns utility function (lctrl-lshift-v)
   TrigSeq: add: undo/redo multiple patterns
                  (undo state is invalidated when pattern is changed)
   Tracker: fix crash after deleting node and replacing it with another
   Tracker: fix crash when toggling pattern manager / remark editor 
   Tracker: fix crash when undo timeout expires after node has already been deleted
   Tracker: fix crash in getCursorXAtPixel() when no track is visible
   Tracker: fix: instance created during replay was not always in sync
   Tracker: fix: delegate pitchbend (delegate_perf_events) to current instrument
   Tracker: change default note-off velocity to 64
   Tracker: add: highlight steps in external sync / polystep mode
   Tracker: add: inject_mute/inject_seek RPNs
   Tracker: add: VST param type (for use with the new work-in-progress 
                  Eureka DAW and metahost plugin)  (more on this later!)
   Tracker: add trk_rec_usr1..16 RPNS (redirected to current node / current track)
                 (then mapping your MIDI controller(s) to these RPNs makes it possible to
                  use a common controller setup in all tracker instances)
                 (when node is not currently editable (aimed for recording),
                   the RPN behaviour is the same as the inject_inject_usr1..16 RPNs)
   Tracker: add toggle zoom / step_resolution hotkey ('f' / ''' ('Ä') keys)
                 (A/B zoom level is stored per node)
        UI: fix: array-out-of-bounds exception in TextView (e.g. ScriptNodeEditor)
        UI: fix: project page: bpm widget is not updated when bpm is changed via numpad
        UI: add: project i/o: auto-set last loaded / last saved project
                  (add "Auto-Update" checkbox next to "L" and "S" buttons on config page)
Long time no see
Four months have passed since the last release. A lot has happened in the meantime.
While I've mainly been working on a new DAW and metahost VST plugin project (which is almost ready for release), Synergy has also received quite a number of changes, fixes, and feature additions.

TrigSeq timing track
The new timing track overlays (adds to) the per-step microtiming of each regular track.
It's useful for creating "global" groove patterns, which can also be loaded / saved as presets.

Arranger marker clips
This new feature adds a marker track to all Arranger node instances.
The marker clips can be used to name and navigate song sections.
They can also be assigned a pattern number, which allows you to remote-control the arranger via program changes (i.e. queue markers).
Alternatively, markers can also be queued via note ons (C3..).
This is a very useful feature for arranging songs "live".
It can also be used for building very intricate beat patterns (remember that clip changes can be recorded into an arranger, and you can use as many arrangers as you like).

A moment of contemplation
It saddens me a bit that I can't beam the knowledge of how to properly use this software directly into your heads.
Tutorials are still on my todo-list but they'll come.

Happy Easter, everyone !
Attached Files

pipeline_test-02Apr2018c_224kbs.mp3 (15.78 MB, 1236 views)

Old 5th April 2018
Lives for gear

A new version has just been released!


    CtlTag: fix: pressing 'a' while editing a tag name opened the 'add' dialog
  Arranger: fix: start non-master arranger clip state recording at cursor position
  Arranger: fix: never auto-remove tracks that have clips
  Arranger: fix: redraw timeline after clip recording
  Arranger: fix: never stop clips on currently recording tracks
  Arranger: change: don't process autodev events when node is muted
  Arranger: add: cursor right after last clip: move to clip end
  Arranger: add: show marker clips in pattern manager (lctrl-x d)
    KeyMap: change: don't process autodev events when node is muted
Cascaded Arranger Clip-State Recording
I've been using this feature a lot in a track I'm currently working and found some issues with it, which should now be resolved.

Here's a demonstration video that shows how to use the arranger clip state recording feature (pattern changes and mute/unmute):

The test project uses two arranger nodes:
The first one (drum arranger) is used to switch the patterns of a tracker node that is playing some simple drum patterns.

A series of pattern changes is recorded and markers are assigned to sections of the recorded sequence afterwards.

The second one (master arranger) is then used to switch between these marked sections.
Each marker clip is (auto-)assigned a unique pattern / program number, and the marker clips are selected by sending program changes to the automation channel of the drum arranger node (this is how the arranger node works internally).

While the sound in this video is very simple (I created the patterns it in a hurry for demonstration purposes only), this is a very powerful feature that can be used to create intricate beats, or even stitch together melodic sequences in unexpected ways.


Since the audio in the last video was so unbelievably bad (it was made in hurry and the main point was to demonstrate that particular sequencer feature), here is a selection of some of my other (soundcloud) tracks and some background info on how they came into existance.
All of them were sequenced in Synergy, with audio by Reason and some outboard synths and effects:

Consists of around 20 presequenced patterns that were arranged live with the Ableton Push mode of the Arranger node.
Lots of live MIDI knob and fader tweaking.
Took 7 takes to record it (which is nothing compared to what professional musicians have to go through sometimes but hey, for me this was quite a lot of work).

Made for an online song challenge. All sounds were synthesized with the Rym2612 plugin which emulates the Sega Genesis soundchip (from the same author who recently brought us RX950).
Similar to "late night tales", everything's been arranged and tweaked live (i.e. no clip timeline or automation curves were used).

Pretty much a chip tune but this was actually the very first track made with the timeline mode of the Arranger node.
Creating it was a lot of fun since it practically wrote itself

First track made with the "tap mode" feature of the Tracker node.
The mode allows you to record notes and timing info separately (e.g. record some notes, then tap in the rhythm).
It does not stop at simple notes, you can even tap in entire blocks of MIDI events (e.g. quarter note blocks of presequenced rhythms).
Very useful, especially if you are not a super skilled keyboard player who can play complex chords with perfect timing.

This one is wicked. It uses a ModMatrix node to redirect note data to four different synth instances, depending on the controller output of another (polymetric) sequence.
Five additional ModMatrix nodes are used to sample&hold and redirect MIDI controller inputs, depending on the controller output of yet another polymetric sequence.
I'm actually looking at the project file right now and can't really wrap my head around what exactly is going on there.
Good thing I added the pipe+node annotation feature later on.
Modulation complexity aside, I actually like this track a lot. Drums from my MFB Tanzbär.
Everything's been arranged live with an Ableton Push and lots of MIDI knobs+faders.
Took many takes

A recent one. Somehow reminds me a bit of 90ies UK electronica. Many polymetric sequences and live fader+knob tweaking (quite simple stuff).
Created while playing around with SuperNova, an emulation of the Hammond Novachord that had just received an audio-input update.

They say trackers are mostly good for breakbeats / drum'n'bass. Well, not really the kind of music I make but I gave it a shot, just for fun.
Uses multiple, cascaded Arranger nodes (similar to the technique shown in the video above but with more interesting sounds).

Already posted this ambient track but now it's also on SC.
The interesting bit here is the use of the "CtlMorph" node.
First I set up 6 parallel processing chains in Reason.
Then I assigned MIDI faders to each chain's output level.
Then the CtlMorph node was used to capture ~12 different controller state snapshots and generate a cyclic morph between them (it's a utility function).
Finally I assigned another MIDI controller to the morph position.
There are a couple of other, more regular controller assignments but those were all done in Reason.
Old 23rd May 2018
Lives for gear

A new version has just been released!

      MIDI: add: increase default number of virtual MIDI devices from 8 to 16
      MIDI: add API to generate midimap events from pipe nodes
 ModMatrix: add: midi channel is now configurable when macro "n" dev is selected
 ModMatrix: add: * midi channel selection (match all channels)
MorphScene: add: hold-click "Add" to replace input event
MorphScene: add: increase number of scenes from 4 (A..D) to 8 (A..H)
   PipeMap: change: move cursor to next pipe after deleting pipe
 Prophet12: fix: morph layout (broken in last release)
    Script: fix: crash when assigning non-delegate function to delegate
    Script: add "mono_poly*" channel cycle scripts
    Script: add latch brightness preset (linnstrument) ("mpe_latch_cc")
    Script: add linnstrument arranger and fader preset ("linnstrument arranger",
                see documentation for details)
    Script: add: OnSaveState(Stream ofs) callback
    Script: add: OnLoadState(Stream ifs) callback
    Script: add: note to used patnr preset ("note_to_usedpatnr")
    Script: add: OnUIInit(XMLForm xfm) callback
   Tracker: fix: "remove cel" dialog crash
   Tracker: change: RT recording: fallback to first visible note cel when
               cursor is placed on non-note cel
   Tracker: change: during step recording, always record on current track
                (ignore filter)
   Tracker: add: filter mode that only looks at the midich
                (filter mixed state setting)
   Tracker: add "*mpe*" presets
   Tracker: add: holding lalt when editing instrument device and/or channel now
                updates all instruments
   TrigSeq: fix: support auto-noteoff for trackmute+globalmute+trackrepeat keys
   TrigSeq: fix: global repeat trigs (a-4) only worked when delayed by 1 tick
   TrigSeq: fix: global repeat trigs (a-4) in "Immediate" mode repeated all tracks
   TrigSeq: add: OUT_SINGLECH_NOTE_PROBABILITY output mode (arg2=probability in %)
   TrigSeq: add: per-track microtime jitter
        UI: set filename to project name before, and
                prj name to filename after saving
        UI: directory navigation related filedialog improvements
Improved MPE support
The new mixed state "Filter" mode setting (see Tracker node "Play" tab) is very useful for recording MPE events since it can filter incoming events by MIDI channel only (i.e. unlike the regular filter mode, it ignores the source device).

The ModMatrix node now supports wildcards (*) for MIDI channel selections which is also particularly useful for transforming MPE events.

TrigSeq Probabilities
The TrigSeq node now supports note probabilities. Additional conditions like "play trig every 3rd out of 4 beats" can be done by using a second node that temporarily (un-)mutes specific tracks.

Linnstrument arranger + fader script
The biggest new feature is the Linnstrument arranger + fader tool script preset (distributed under the MIT open source license). Please see the documentation for details.
In a nutshell, the script can be used to switch patterns ("launch clips"), navigate nodes, and turn the Linnstrument into a 16x8 fader MIDI controller.
Who needs motorized faders, anyways

Last but not least, here's one of my Linnstrument-arranger test cases. Simple stuff but the expressiveness of the Linnstrument pads is really something. Check out the hihats:
Old 23rd May 2018
Lives for gear
robotunes's Avatar
Thanks for your dedication! Looks daunting. Any tutorials yet? If not I'll just have to roll up my sleeves.
Old 23rd May 2018
Lives for gear

Originally Posted by robotunes View Post
Thanks for your dedication! Looks daunting. Any tutorials yet? If not I'll just have to roll up my sleeves.
Yeah this is slowly turning into a lifetime project

Regarding tutorials: Not really. There are a couple of (screen capture) videos but none of them is an actual tutorial.

There's one major pitfall you need to be aware of (it's been mentioned in the documentation but cannot be stressed enough):

When you setup your MIDI keyboards / controllers, you have to keep in mind that all MIDI processing within these "pipes and nodes" works with output devices only.

This means that you have to setup a "morph scene" (Input -> MIDI Morph Scenes) that maps your MIDI input events to an output device.
You can map the events to an actual output device, or to one of the virtual "<internal_1..16>" devices.

Note: Alternatively, when adding a synth that has both an input and output device, you can assign the same alias to both devices, then set the "out.device" in the input device properties to "auto".

I also strongly recommend to assign alias names to your devices -- especially the virtual ones but also the physical ones since MIDI device names sometimes change when USB controllers are (re-)connected.
On the Settings->Device Setup page, double-click on an input or output device after enabling it ("use" checkbox) to edit its alias (and other settings, like the synth profiles for each channel).

Note: there's a "fuzzy" device name matching mechanism for devices that sometimes change their names after a reconnect (e.g. the Korg NanoKontrols). Take a look at the "midi_in_fuzzy_name_match" and "midi_out_fuzzy_name_match" arrays in "synergy_config.tks".

Last but not least, if anyone has any specific questions -- just go ahead and ask !
Old 23rd May 2018
Lives for gear
hgigh's Avatar
Just noticed the OP is one year ago today.

Happy anniversary!

I downloaded and will check it out later.
Old 10th June 2018
Lives for gear

A new version has just been released!

      MIDI: add: joystick support (via virtual MIDI input devices)
      MIDI: add: Microsoft XBOX 360 joypad MIDI synth profile
      MIDI: add: Logitech G27 racing wheel MIDI synth profile
      MIDI: add: FrSky Taranis X9D RC MIDI synth profile
MorphScene: change: copy'n'paste scenes via lctrl-lshift-c/v instead of lctrl-c/v
MorphScene: add: multiple table selection / copy'n'paste entries (lctrl-c/v)
MorphScene: add: multi scenes
MorphScene: add: send global RPN event(s) when scene or multi-scene is selected
    Replay: change: emit poly-pressure events _before_ note on
   Tracker: change: toggle play/arp views with lctrl-x tab instead of lctrl-x x
   Tracker: add: event timing view (toggle with lctrl-\ or lctrl-x x)
   Tracker: add: timingview: auto-double width/height options
   Tracker: add: timing view move-lock (toggle with lctrl-lshift-\ or lctrl-x lshift-x)
   Tracker: add: zoom in/out with lctrl-WHEELUP/DOWN
   Tracker: add: lshift-RETURN to play/cycle single (chord-)notes
   TrigSeq: fix: track setup tabcycle order
   TrigSeq: add: track setup mini kbdfocus cyclelists (a,c,d,f,j,.. keys)
   TrigSeq: add: velocity jitter (%) (per pattern and per track)
   TrigSeq: add: pattern-global microtime jitter offset
   TrigSeq: add: note-name profiles (see midi_note_names/ directory)
   TrigSeq: add: per-pattern and/or per-track note-name definitions (note output modes)
   TrigSeq: add: Superior Drummer 3 note-name definitions (clean/dry)
   TrigSeq: add: Synergy note-name definitions
   TrigSeq: add: Groove Agent 4 note-name definitions (alt/indie + electronic)
   TrigSeq: add: DSI Tempest note-name definition (custom)
   TrigSeq: add: Elektron Analog Rytm ( note-name definition
   TrigSeq: add: colorize forced-out widgets (darken when not enabled)
        UI: change: reduce number of relayout passes when node editor is shown
        UI: change: force relayouting of all node editors when window is resized
        UI: add: wrap try..catch around every UI callback
        UI: add: searchable comboboxes
                  (type to show filter in popup dialog)
                  (return to cycle through multiple choices or select unique result)
                  (UP to hide filter textfield and refocus option table)
Joystick Support
It is now possible to use any joystick-like device as a MIDI controller.

For each joystick detected at application startup, a virtual MIDI input device will be created.
"Axis" events will be available as NRPNs 0..n, "Ball" events (x / y) as NRPNs 100/101, 102/103, .., "Button" events as NRPNs 200..2nnm, and "Hat" (d-pad) events as NRPNs 300/301/302/303/304, 305/306/307/308/309, .. The first hat NRPN is a combined bitmask, and the next four NRPNs are button-like controllers for each single direction, i.e. 301=up, 302=right, 303=down, 304=left.

It is highly recommended to configure MIDI synth profiles for the virtual MIDI devices (MIDI channel 1) in order to assign human-readable names to the NRPNs, and also to classify the button-like NRPNs (via "class=button") so they can be assigned to button-like map targets in a MIDI map context.
Please see the "midi_synth_profiles/" directory for some example profiles (e.g. MS XBOX360, Logitech G27, FrSky Taranis).

The axis and ball x/y value range of any joystick axis is 16bit (-32768..32767). While this is reduced to the 14bit NRPN range (0..16383), there will be no loss in precision since the actual game controller precision is typically ~9bit.

Keep in mind that -just like any regular MIDI controller- the input events need to be mapped to an _output_ device before they can be processed by a node. By unchecking the "Transform" checkbox on the MIDI monitor page, it is possible to view the raw input events (e.g. to check that the device is basically working and to figure out the NRPNs when creating a new MIDI profile).

On the topic of useful applications for this: The brake and accelerator pedals of a G27 racing controller actually work quite well as expression pedals. Last but not least, why not build your own "high precision" Arduino based controller ?

MIDI Morph Multi-Scenes
The MIDI input mapper ("midi morph") now supports "multi-scenes".
Multi-scenes can be used to recall the scene selections for all of the 8 A,B,C,..H groups with a single button press.
This is especially useful in a MIDI-controller-per-group setup, i.e. when each map group controls the MIDI routing of a single controller.
Choosing "-" instead of a scene number (1..16) will cause the scene selection for a map group to remain unchanged when the multi-scene is selected.
Multi-scene selection can be mapped to MIDI controller buttons via the global MIDI map context (prev/next, multi-scene 1..16).
Alternatively, the first 10 multi-scenes can also be selected with the lctrl-x numpad-0..9 keyboard shortcuts.

In addition to multi-scenes, the MIDI input map editor now also supports the copy and pasting of single or multiple map entries between map scenes (lctrl-c/v). The previous copy/paste-scene shortcuts have been changed to lctrl-lshift-c/v.

Last but not least: Selecting a scene or multi-scene will now cause an RPN event to be sent to a configurable MIDI output device ("<global>" by default, can be changed in the config file, look for "midimorph_scene_selection_device_name").
That RPN event alone does not do much (nothing to be exact) but it can be reacted upon in the MIDI pipe (e.g. change programs, select patterns, send controller states or sysex, mute/unmute nodes, and so on). See the "com*scenesel" RPN definitions (410..418) in the "internal" synth profile (midi_synth_profiles/internal.msp) for details.
A practical example for this is switching between regular note input and arranger mode by (un-)muting a script node that is running the "linnstrument arranger" script (see modmatrix "scene select mute" preset, selecting scene A-1 enables the arranger, and selecting any other group A scene disables it).

Tracker Timing View
The tracker node has a dedicated timing view now that visualizes the exact event starts and the duration for each note-on event. In addition to the regular microtime-editing keyboard shortcuts, event timings can now be edited with the mouse.

Dragging the top edge of a note-on event will move the note start and automatically adjust the note duration.
Vice versa, dragging the bottom edge of a note-on will adjust only the note duration.
Dragging the center area of a note-on event will move the event (while retaining the note duration).

Dragging events with the left mouse button will move them step-wise (according to the current zoom level), while dragging them with the right mouse button will move them tick-wise.

Since -depending on the current zoom level- it may be a bit hard to hit the note center, there's a "move-lock" mode that disables the top/bottom edge handling (i.e. will always move the event and never change its duration).

When a mouse drag has been started with the left mouse button, pressing the right button will undo any changes. Vice versa, pressing the left mouse button will function as an undo button when the mouse drag has been initiated with the right mouse button.

Last but not least, holding down the left shift key will move all events at the current step (i.e. depending on the current zoom level).

By default, the pattern display size will be doubled when the timing view mode is activated. This behaviour can be changed in the "Cursor" menu.

Keep in mind that the duration of an individual chord note can only be changed when there is a duration column _and_ event for that note (by default there is only one duration column that will affect all chord notes).
To add duration (and/or velocity) columns, either use the track layout dialog (lctrl-x s), the add-column dialog (lctrl-x SPACE a), or configure the pattern editor to automatically add duration / velocity (CTL_DURn, CTL_VELn) columns when new note columns are created via the lctrl-x n shortcut (see Track->Note Cel submenu and/or the checkboxes right next to the "On:" and "Dur:" input fields).

On the topic of chord editing: lshift-RETURN will now play/cycle through individual chord notes.

TrigSeq Note-Name Profiles
It's now possible to select per-pattern and/or per-track note name profiles (in all note-type output modes).
When a note name profile is active, the per-track "arg3" number-input fields will turn into comboboxes ("arg3" is used as the note number offset in any note-type output mode).

The note name profile (*.mnn ASCII) files are located in the "midi_note_names/" folder which is scanned at application startup, and when the "Rescan" button is clicked (in the TrigSeq "Pattern" tab).

There are a couple of example note name profiles for the Elektron Analog Rytm, the DSI Tempest (custom layout), Toontrack's Superior Drummer 3, Steinberg's Groove Agent 4, plus some custom drum layouts (Synergy*).

In order to add a new profile, just duplicate/rename one of the existing profiles.
The first line in a note name profile is the unique profile id (keep that as short as possible).
The remaining lines are used to assign names to MIDI note numbers (0=C-0, 12=C-1, ..).

Beside a couple of layout optimizations (most noticeable with the TrigSeq editor), it is now possible to search any combobox by simply typing search keywords (separated by space) while a combobox popup dialog is visible (i.e. click on a combobox, then start typing).
This is very useful when there are a lot of options, e.g. aforementioned MIDI note name definitions, or VST parameter lists (note: the accompanying VST host is still under construction and has not been released publically, yet).

As a counter measure against my own stupidity, each UI event callback is now wrapped in a try..catch block. On the (rare) occasion of a UI-related program exception, this will prevent the application from shutting down completely (and writing a recovery project file).
Old 10th June 2018
Lives for gear
gentleclockdivid's Avatar

A real tracker fan here , renoise fanboy
So I was delighted to see this program .;however on vista 32 bit it performs really bad .
Slow gui redraws( some parts don't even redraw properly ) , crashes while closing .
Also , is the pc keyboard supported for entering notes, didn't seem to work here ...didn't even find the record button .
Realy eagerto try it out whenit performs well enough on vista .
Old 10th June 2018
Lives for gear

Originally Posted by gentleclockdivid View Post
however on vista 32 bit it performs really bad . Slow gui redraws( some parts don't even redraw properly [..]
The application's been tested with many different machines, including low-end (1GHz) netbooks with integrated (intel) GPUs, and low-end office PCs with ATI/AMD graphics cards.

The UI uses OpenGL so the first thing you should try is updating your graphics drivers.

If that does not help, you could also try disabling GL framebuffer object support by pasting the following line into "synergy_config.tks" (at the top or bottom of the file, outside the class definition):
UI.b_fbo = false;
(this will bypass the FBO based UI compositor. It's a very old option but I just tried it out and apparently it still works)

32 bit builds in general are not supported any longer (but they did work last time I checked). All recent releases (since late 2017) have been 64 bit only.

EDIT: I just uploaded a new 32 bit build but I really don't want to make a habit out of it. Please upgrade to a system that's less than 10 years old =)

Originally Posted by gentleclockdivid View Post
Also , is the pc keyboard supported for entering notes, didn't seem to work here
When the tracker editor is visible, you can use the PC keyboard to play and enter/record notes (uses the typical Protracker-like keyboard layout, i.e. Y=c-1, S=c#1, Q=C-2, 2=C#2, ..).
Make sure that you have not accidentally turned off "keyjazz" ("KJ" checkbox / lctrl-f12).

Originally Posted by gentleclockdivid View Post
...didn't even find the record button .
Recordings are started by either pressing the right shift key, by starting the pattern replay (space key) while the pattern is editable (toggled via right control key), or by assigning MIDI controller buttons to the PAT_RECORD map target (press lctrl-m in the tracker editor to open its map context editor).
Old 31st May 2019
Lives for gear

It's been almost a year since the last update so here is a big one.

In a nutshell:
  • lots of bug fixes and numerous improvements
  • Arranger keyboard mode (toggle with 'x')
  • Arranger scratchpad timeline
  • Monitor node now properly handles SysEx (e.g. for patch backup + restore)
  • Tracker node can now spread recorded events to multiple tracks (=> "unlimited" polyphony)
  • UI now supports alternative "dark" mode, "flat" look, and user defined color-grading
  • add navigation toolbar (replaces "start" page)
  • add minishell (with TAB-key autocompletion for commands and parameters)
  • add generic, synth-profile driven synth editor (auto-generates editor UIs)
  • add Korg Radias editor
  • add Novation Peak editor
  • add Black Corporation Deckard's Dream editor
  • add Linux version (tested in Debian 9.9 / XFCE on my P4750 Core Duo (2009) notebook)
  • it's open source now (GPL / LGPL)
For a complete list of changes see the CHANGELOG.

There's also a new GETTING_STARTED guide.

synergy-miditracker-win64-31May2019.7z (x64 Windows)
synergy-miditracker-lin64-31May2019.tar.gz (x64 Linux)
synergy-miditracker-src-31May2019.7z (source)

Last but not least, here's a little tune I just wrote in about an hour (for release-testing).
Drums: Tempest and Tanzbär, Keys: Deckard's Dream and Peak, Bass: Sub37. Recorded straight to stereo.
Attached Files
Old 31st May 2019
Lives for gear
chaocrator's Avatar
oh, Linux version available! will try it.
Old 9th November 2019
Lives for gear

November Release

A new version has been released today, see for screenshots and downloads.

There have been over 380 fixes, changes and additions, including:
  • Global Recording with precount and undo (started via RSHIFT on pipemap page after arming nodes with RCTRL)
  • Follow Arranger mode (tracker, trigseq, and monitor nodes) (toggled with lctrl-lshift-SPACE)
  • New Track wizard (pipemap and arranger) (auto-assigns automation ports and loads node presets)
  • Piano view (monitor and tracker nodes)
  • Monitor node pattern view and chord mode
  • Cubic bezier curve envelopes and lookup tables (ModMatrix node)
  • (dual-keyboard) auto-chorder script
  • Improved Analog Rytm pattern import (requires firmware v1.50)
  • Analog Rytm kit editor
  • TrigSeq Linnstrument plugin (via user firmware mode)
  • New Mono theme
  • + a huge number of bugfixes and additional improvements (see CHANGELOG)

Support for Ableton Push (1) has been removed almost completely (replaced by special support for Roger Linn's Linnstrument to make it work as a clip launcher and (advanced) step sequence editor). The StepSeq and Auto node types have been removed entirely.

Probably the most important new workflow feature is global recording which lets you record multiple nodes simultaneously (pretty much like recording to multiple tracks works in other sequencers). Recording is started by pressing RSHIFT on the "pipemap" page (or by mapping a MIDI controller button). The current take can be discarded by pressing RSHIFT again, or by clicking the Undo button.

When a node editor is configured to follow external program changes (follow arranger), it is also possible to setup a sequence of patterns in an arranger, then record all of these patterns in one go.

The New Track wizard is handy for quickly creating a new node ("track") and initializing it from a preset.

The auto chorder script requires two MIDI keyboards (or at leat a keyboard split): Keyboard A controls the chord key and different octaves on keyboard B select the chord type (min/maj/min7/maj7/..selected via note intervals), the chord inversion, the number of octaves (for spread chords). Two CCs control time scattering and velocity randomization. Well, it sounds much more complicated than it is, maybe one day I'll record a demo video for this, it's pretty neat :-)

Last but not least, here's a little tune I made for testing the release. Please notice the use of nested arrangers for the Analog Rytm and Tanzbär drums. Other synths used: DSI Prophet 12, Novation Peak, Black Corporation Deckard's Dream, Moog Sub37:
Attached Files

synergy_20191109_demo.mp3 (5.34 MB, 460 views)

Old 1 week ago
Lives for gear
Going to try it looks neato
Old 1 week ago
Lives for gear
Originally Posted by gminorcoles View Post
Going to try it looks neato
Hopelessly confusing i couldn't make a single sound lol. Try again later.
Old 1 week ago
Lives for gear

Originally Posted by gminorcoles View Post
Hopelessly confusing i couldn't make a single sound lol. Try again later.
It's a MIDI tracker so it doesn't make any sound by itself.
I take it you actually meant that you haven't managed to make it send a single MIDI event.

Have you configured your MIDI devices ("Devs" page) ?

Have you created a "Tracker" node and within that an instrument with a valid MIDI output port ? ("Device:")

A common pitfall is that you must _not_ create sequencer nodes in the first "pipe" ("master").
Only pipes 2..n will emit MIDI events to actual output devices.
The first pipe is for internal events which will be sent to all other pipes.

In any case, there's a new release just around the corner (probably at the end of next week).
Old 1 week ago
Lives for gear
I will try again over the weekend. You make great songs with it so I know it’s got to be possible.
Old 1 day ago
Lives for gear

20200404 Release

A new version has been released today, see for screenshots and downloads (Windows and Linux 64bit plus source code).

  Arranger: change: show 10% more than selection size
                     (dont place timeline cursor at screenborder)
      MIDI: add: yamaha_fs1r MIDI synth profile
  PagePipe: add: focus name widget with lctrl-x u or lshift-n
   PipeMap: fix: save/restore correct suggested pipe preset filename
    Replay: fix: Node.handleReplayTick() was only called by Tracker node
                  (fixes Linnstrument pad colors, among other things)
    Script: Linnstrument Arranger: fix "send configuration" (timing / event flush)
    Script: Linnstrument Arranger: change split point from 12 to 7 (more space for pattern pads)
    Script: Linnstrument Arranger: change default configuration to <play_d:8..11>, ..
    Script: add: 'ptfx' preset (protracker-like effects) (16x slide/env+lag+LFO)
                  (also added "ptfx" pipe preset) 
     SysEx: add: Yamaha FS1R editor
   Tracker: fix: piano widget layout
   Tracker: fix: remote(VST) param name reverted to "remote param <n>" after reloading project
   Tracker: fix: disable param widgets after instrument with no params was selected
                  while instrument editor was hidden
   Tracker: fix: update instruments table when dev or ch changed
   Tracker: fix: common CC import (inherited synth profile controllers)
   Tracker: fix: cel styles+ranges for imported params
   Tracker: fix: a thousand-fold speed optimization of block-copy operations
                  (also affects rotate, reverse, tap-mode, etc)
   Tracker: change: CTL_MUTE (step-mute) now auto-resets after 4*dur_scl*value ticks
                     (i.e. 4=1/16 by default)
   Tracker: change/fix: insert/delete events on all tracks in 'pattern' block mode
                         (DEL/INS keys w/ lshift and/or lctrl modifier)
   Tracker: add: params context menu: add generic 1..4 CCs import option
   Tracker: add: global and per-track chance / probability modifiers (internal RPNs 700..716)
   Tracker: add: 'random' block interpolation mode (first/last selected step values = min/max)
   TrigSeq: add: toggle MIDI recording mode with lctrl-x RCTRL
                 (no note-to-track unmapping when disabled)
   TrigSeq: add: global and per-track chance / probability modifiers (internal RPNs 700..716)
   TrigSeq: add: mod1+mod2 can now be shifted 'n' ticks ahead
                  (to counter CC smoothing on certain synths, e.g. Rytm and Cycles)
        UI: add: filedialog: disable cursor key tab cycling (left/right)
        UI: add: filedialog: cycle auto-completions with TAB key w/o showing auto-completion dialog

Notable changes:

Bug fixes and optimizations:
Beside several (minor) bug fixes, the block-copy operations in the Tracker editor are several thousand times faster now.

TrigSeq ahead-of-time modulation:
The per-track mod1+mod2 modulation lanes can now be sent 'n' ticks ahead of the note events.
This is mostly useful to counter the implicite CC smoothing performed by synths like the Elektron Cycles or Analog Rytm.

TrigSeq and Tracker trig probabilities:
Both nodes now support the new chance / probability RPNs which can be used to roll the dice for all node tracks (global), each track separately, or any combination of both.

Yamaha FS1R editor:
The new version now comes with a patch editor and librarian for Yamaha's FS1R FM synthesizer.
It is possible to modulate _all_ parameters with the help of a Proxy node (controllers will be converted to SysEx as required).

Protracker-like Effects:
As a nod towards classic Amiga and PC trackers, the new ptfx Script node preset can be used to emulate classic tracker effects -- with a twist: The number of 'effects' is unlimited and unlike classic trackers, effects can be applied to any MIDI controller, not just volume and pitch.

From a technical point of view, each 'effect' lane consists of a mini-envelope, an LFO (sine/tri/pulse/saw/rand waveforms), and a lag processor.
Each 'ptfx' instance supports 4 command/argument pairs per channel (4 channels per node), and the number of instances is unlimited.

There's also a pipe preset named 'ptfx'. Edit the output ports in the Script node I/O tab to configure the note/event destinations.

By default, the first command on each channel controls pitchbend, the second one CC#7 Volume, the third one CC#11 Expression, and the fourth one CC#2 Breathcontrol. The CC destinations can be configured in the UI, and for more complex routings a ModMatrix node can be used to reroute events to RPN, NRPN, note velocity, and so on.
Since all controller processing is internally done with 32bit floats, the CC values can be converted to 14bit NRPNs at full precision.

Last but not least, here's a simple demo tune I just created for testing the release:

(Synths used: Korg Radias, DSI Tempest, Black Corporation Deckard's Dream, XILS Oxium, Synapse Software The Legend)
Attached Files
Post Reply

Welcome to the Gearslutz Pro Audio Community!

Registration benefits include:
  • The ability to reply to and create new discussions
  • Access to members-only giveaways & competitions
  • Interact with VIP industry experts in our guest Q&As
  • Access to members-only sub forum discussions
  • Access to members-only Chat Room
  • Get INSTANT ACCESS to the world's best private pro audio Classifieds for only USD $20/year
  • Promote your eBay auctions and listings for free
  • Remove this message!
You need an account to post a reply. Create a username and password below and an account will be created and your post entered.

Slide to join now Processing…
Thread Tools
Search this Thread
Search this Thread:

Advanced Search
Forum Jump
Forum Jump