Document:Eureka Sampler / DAW

1 About

"Eureka" is a sampler, synth, plugin host, and multi-track recorder designed for low latency audio.
It is the audio companion app to the MIDI-only "Synergy" sequencer.

2 Table of Contents

3 Features

4 Prerequisites

For building custom STFX plugins from Cycle patches, a C compiler is required (e.g. Clang or GCC).
Please see the "STFX plugin export: compiler command line" section in eureka_config.tks or the Cycle manual for installation details.

5 Installation

  1. install Synergy
  2. open the "stop button" menu and select Start "Eureka" audio host.. to launch the application
  3. in Eureka, open the preferences dialog (Prefs.. button), and configure the audio device, sample rate, paths, .. as required.
    • The settings will be saved to eureka_config_local.tks when the preferences dialog is closed.

5.1 MIDI loopback (deprecated)

since v20230803, Synergy and Eureka come with a built-in virtual MIDI driver ("LocalMIDI") so the following MIDI loopback configuration is not necessary anymore.
  1. install MIDI loopback device driver (e.g. loopMIDI on Windows), or use the built-in IAC driver on macOS
  2. add two loopback devices named remote_audio and remote_seq
  3. add four loopback devices named vst_a, vst_b, vst_c, vst_d (optional: also add vst_e..vst_h)
  4. set b_enable_localmidi = false; in both synergy_config.tks and eureka_config.tks
on macOS, launch the Audio MIDI, select Window ⇒ Show MIDI Studio, double click the IAC driver (red), set Device Name to "" (empty string), then add the remote_audio, remote_seq, vst_a, vst_b, vst_c, vst_d, vst_e, vst_f, vst_g, vst_h MIDI ports, and click "Apply".

5.2 Optional

  1. open eureka_config.tks in a text editor
  2. adjust b_minimal_startup variable (false=enable VST/voiceplugin/samplecache scans)
  3. adjust rootpath variable
  4. adjust audiotrack_wav_rootpath variable
  5. adjust exported_samples_wav_rootpath variable
  6. adjust project_samples_wav_rootpath variable
  7. adjust sample_rootpath variable
  8. adjust b_force_single_thread variable (set to false to enable multicore rendering (default on macOS))
  9. adjust vst_paths variable
  10. adjust atrk_rec_skip_num_frames (latency compensation) as required (default=-80)
on macOS, multi-threaded audio rendering is enabled by default

5.3 Audio input and output channel aliases

  1. open eureka_config_local.tks in a text editor
  2. edit the audio_in_aliases and / or audio_out_aliases arrays

6 Keyboard Shortcuts

shortcuts assume a US keyboard layout (unless stated otherwise).

6.1 Global

RCTRLtoggle recording
numpad ENTER
BACKSPACEstop all voices
qtoggle scope

hold to play 261.63Hz (middle C) reference tone
Global keyboard shortcuts

6.2 "Audio" page

nCreate new audio track
SPACEStart / Stop audio track replay
PAGEUPSelect previous audio track
PAGEDOWNSelect next audio track
lalt-iShow sample import dialog
lalt-lLoad sequencer project
lctrl-2show Project page
lctrl-3show Track page
lctrl-5show Samples page
Audio Page keyboard shortcuts

6.3 "Samples" page

F2edit sample or zone name (when table has keyboard focus)

toggle (wav) sample browser

toggle zone drumpad view
F11show synth dialog (Cycle)
lctrl-TABtoggle zone table model (show names or velocity/mod ranges)
1select all zones
2select previous zone
3select next zone
4edit previous ModSample OR previous sample pad of parent track
5edit next ModSample OR next sample pad of parent track
lctrl-1show Audio Tracks page
lctrl-2show Project page
lctrl-3show Track page
Samples Page keyboard shortcuts

..when samples table has keyboard focus:
F2edit sample name
INSERTcreate new sample
lshift-INSERTclone selected sample
DELETEdelete selected sample
lctrl-DELETEdelete selected sample without confirmation
lctrl-UPmove selected sample up
lctrl-DOWNmove selected sample down
Samples Page Sample Table keyboard shortcuts
..when zone table has keyboard focus:
F2edit zone name
INSERTcreate new zone
lshift-INSERTclone selected zone
lctrl-INSERTclone zone synth (Cycle)
DELETEdelete selected zone
lctrl-DELETEdelete selected zone without confirmation
lctrl-UPmove selected zone up
lctrl-DOWNmove selected zone down
Samples Page Zone Table keyboard shortcuts
..when voice plugins table has keyboard focus:
F12rescan+reload voice plugins
DELset current plugin slot type to "-"
Samples Page Plugin Table keyboard shortcuts

6.4 "Project" page

WHEEL UPselect previous track
WHEEL DOWNselect next track
cursor keysselect track
lctrl WHEEL UPdecrease track size
lctrl WHEEL DOWNincrease track size
1..6select track size 1..6
eedit focused track
fedit first ModSample or ModVST of focused track
dmute focused track
ssolo focused track
nadd new track
ctrl-nadd new track and edit it
lshift-nadd new audio track for selected MIDI track and edit it
e.g. "drums" ⇒ "a_drums"
Project Page keyboard shortcuts

6.5 "Track" page

LEFTselect previous track
RIGHTselect next track
F3show/hide plugin browser
RETURNedit first or last selected mod

toggle modmatrix / lanes view (alt key: F4, lctrl-4)
lctrl-wsync mods on other lanes with last selected mod
lctrl-hsync other lanes with last selected lane
lctrl-lload track patch
lctrl-ssave track patch
lctrl-qhide plugin browser or show Instrument (or STFX) plugins
lctrl-fshow Effect plugins
lctrl-eshow track patch variations table
lctrl-tenable experimental (resampler) menu items / keys
lctrl-1show Audio Tracks page
lctrl-2show Project page
lctrl-3show Track page
Track Page keyboard shortcuts
lane modules:
LMB hold clickshow (VST) patch browser
lshift-LMB clickshow generic param editor instead of regular UI
lalt-LMB clickshow parameter set editor
Track Page keyboard shortcuts
when VST editor window is focused:
ESChide plugin window
`sync MPE/LPC/VRR mirror mods (^ on german kbd)
F12add mod matrix entry for last touched parameter
RCTRLtoggle audio(-track)recording
VST Window keyboard shortcuts

6.6 Sample View

Key SequenceDescription
lctrl-lshift-SPACEShow all
lctrl-SPACEFit selection to window or show all
lctrl-lshift-aSelect none
LMB dblclickSet selection to highlighted area or Select none
lctrl-aSelect all / show all
lctrl-bDeclick selection end (512 sample frames fade out)
lctrl-lshift-bDeclick selection start (512 sample frames fade in)
lctrl-cCopy selection to clipboard
lctrl-lshift-cAppend selection to clipboard
RETURNAppend selection to clipboard
lctrl-dSilence selection
lctrl-lshift-dSurround selection with silence (for transient detection tools)
lctrl-e(partially handled by SampleView) Export selection to WAV (send event)
lctrl-lshift-e(partially handled by SampleView) Multi-Export regions to WAV (send event)
lctrl-fFade-out selection
lctrl-lshift-fFade-in selection
lctrl-gToggle show highlight
lctrl-hCopy selection to highlight (modifies either sampleoff/len or current loop off/len)
lctrl-iToggle show RMS
lctrl-jToggle show regions
lshift-jToggle RMS autoshop mode
lctrl-lshift-jToggle autochop dialog
lctrl-lshift-iToggle show samples
lctrl-kDelete left channel
lctrl-lshift-kDelete right channel
lctrl-lshift-lClear undo/redo history
lctrl-mConvert to mono
lctrl-lshift-mConvert to stereo
lctrl-nNormalize selection
lctrl-lshift-nNormalize regions
lctrl-oAmplify selection (show dialog)
lctrl-pPhase-invert selection
lctrl-qSelect next region, or select next cycle (in cycle-edit mode) (same as cursor RIGHT)
lctrl-lshift-qSelect previous region, or select previous cycle (in cycle-edit mode) (same as cursor LEFT)
lctrl-rReverse selection
lctrl-lshift-rCrossfade selection
lshift-rLoop-xfade selection. Needs 128 frames before selection start.
lctrl-sTighten selection (via transient detection)
lctrl-lshift-sShow SoX / Rubberband dialog
lctrl-tTruncate to selection
lctrl-lshift-tAuto-trim (select all, tighten selection, trim)
lctrl-vPaste clipboard at end of selection
lctrl-lshift-vReplace selection by clipboard
lshift-vAdd clipboard to selection (mix)
lctrl-wCut selection to clipboard
lctrl-yUndo ('z' on german kbd)
lctrl-lshift-yRedo ('z' on german kbd)
lctrl-zToggle snap-to-zero-crossing mode ('y' on german kbd)
lshift-zToggle cycle edit mode (same as MMB click) ('y' on german kbd)
UPZoom in
DOWNZoom out
LEFTSelect previous region, or select previous cycle (in cycle-edit mode)
lctrl-LEFTScroll left
lctrl-lshift-LEFTMove region left (+add silence around region)
RIGHTSelect next region, or select next cycle (in cycle-edit mode)
lctrl-RIGHTScroll right
`Toggle freedraw mode (^ on german kbd)
lctrl-lshift-RIGHTMove region right (+add silence around region)
DELETEDelete selection
HOMEMove selection start to 0
ENDMove selection end to end of waveform
Press twice to move selection start to end of wave
ENDSet selection start to end of selection or end of wave
lshift-ENDExpand selection end to end of waveform
Press twice to move selection start to end of wave
WHEEL UP/DOWNZoom in/out
Select previous / next cycle (in cycle-edit mode)
Select previous / next region (when selection exceeds max cycle length)
lctrl + WHEELZoom vertically
lctrl + WHEELZoom vertically in cycle mode
RMB + MOUSEMOVEScroll left / right
LMB + MOUSEMOVEMark region / autoscroll
RMB holdShow popup menu
MMBCycle bpm/marker snap modes
LMB click in upper areaSet marker
RMB click in upper areaDelete marker
lctrl + LMB clickToggle marker
Sample View keyboard shortcuts

7 MIDI implementation

7.1 vst_a .. vst_h ports

7.2 remote_audio port

in Synergy, the remote_audio device is also used for context-sensitive routing of MIDI events (e.g. in synth editors)

7.3 remote_seq port

7.4 Module specific MIDI events

7.4.1 Sampler

7.4.2 VST2 and STFX plugins

8 Files and Directories

8.1 Project

When a project is saved in Synergy, it will also be saved in Eureka.
The Eureka project name is determined by the Synergy project name.
For example, when the Synergy project is named test, the following Eureka project files and directories will be written:

8.1.1 samples

samples/ contains the .wav files for the samples along with the .esa sampler patches, e.g.

8.1.2 tracks

tracks/ contains the .wav files for the "audio tracks" (stems and scratchpads).

8.1.3 exported_samples

exported_samples/ contains the .wav files exported in the (Audio page) sample editor via the Export Selection and Multi-Export Regions context menu items.

8.2 Library

8.2.1 Samples

The sample library path is configured in the Prefs dialog or by editing eureka_config_local.tks (sample_rootpath).
By default, it points to
the sample library scan result is stored in samplecache.dat
it is not recommended to point this directory to huge 3rd party archives. Rather put your favourites and own samples in there.
other samples can be imported into a project from any drive via drag'n'drop
the library source path will be preserved when importing samples from the library. this allows the sample to be later saved back to the library again User Samples

The name of the user sample library directory (relative to the sample library path) is configured in the Prefs dialog or by editing eureka_config_local.tks (sample_userpath).
Before changing this setting, make sure that the corresponding directory exists.
For example, when the user sample path is set to bsp, the following directories should exist:
mProjects/samples/bsp/drumkit/ Drum Kits
The drumkit/ directory (within the user sample path) contains patches and samples (.edk, .wav, .esa) for tracks that are set to Drum Pad Sampler mode.
Each drum kit is stored in a subdirectory, i.e. the example drum kit 808_95 is associated with the following files and directories:
a unique sample namespace should be assigned to drum kits and drum kit samples in order to distinguish them from other samples. The From Kit utility function creates / assigns a namespace based on the drum kit's name. To pads assigns the selected namespace to all drum kit samples uniquely referenced by the drum kit (and its variations)

8.2.2 Track patches

Track patches (.epa files) are stored in the patches/ directory, which, by default, points to
Track patches contain the module, mod matrix, and output setups for all track lanes.
plugins and samples in track patches are stored by reference, i.e. they must exist in the library when the patch is loaded. Samples must be saved to the library (Save As..) before saving the track patch (via the Save button on the Current Track page)
a track patch may contain an arbitrary number of variations. By default, a new variation is created each time the patch is saved (see Auto-create track patch variations setting in the Prefs dialog which is saved in eureka_config_local.tks)

8.2.3 VST plugins Plugin Paths

The VST plugin paths are configured in eureka_config.tks (vst_paths).
the VST scan result is stored in vstcache.dat. Eureka will incrementally scan for added / removed plugins during startup. FXP / FXB Patches

VST patches are stored in the vstpatch_rootpath which, by default, points to
the patch folder contains (auto-created) subdirectories (one per plugin)

8.2.4 STFX plugins

STFX plugins are located in the voice_plugins/ application subdirectory. Patches

STFX patches are stored in the stfxpatch_rootpath which, by default, points to
the patch folder contains (auto-created) subdirectories (one per plugin)

9 Pages

9.1 Audio page

samples are automatically split into regions which can be selected by double-clicking them, or by cycling through them with the mousewheel or the left and right cursor keys
a new collection of regions can be assembled in the clipboard by copying the first region via lctrl-c (replaces the clipboard), then adding further regions by pressing RETURN. The regions will be separated by brief periods of silence. The result can be pasted to any sample view (lctrl-v (insert), lctrl-lshift-v (replace selection))

9.2 Tracks page

9.3 Current Track page

9.3.1 Track modes Default Lane Per Channel (LPC) Mirror Lane Per Channel (MLPC) MIDI Polyphonic Expression (MPE) Mirror MIDI Polyphonic Expression (MMPE) Voice Round Robin (VRR) Mirror Voice Round Robin (MVRR) Drum Pad Sampler (Drum) Drum Pad Layouts
Available drum kit pad layouts:
All layouts share the same note-to-sound mapping, e.g. C-4 always maps to BD1
The drum pad layouts, including the default layout, are defined in eureka_config.tks (search for drum pad) Drum kit pad indices, MIDI notes, short and long names
AR=Analog Rytm, MD=Machinedrum, TB=Tanzbär
IdxNrABNoteNoteNrNameAlt.NameTempest Pad/NoteARMDTB
0A1C-448BD1BDSHRTA1 / C-4C-0C-3C-4
8A2C-560BD2BDLONGA9 / C-5--D-4
16B1C-672BD3BT1B1 / C-6E-0--
24B2C-784BD4BT2B9 / C-7---
1A3D-450SD1SDSHRTA2 / D-4C#0D-3E-4
9A4D-562SD2SDLONGA10 / D-5---
17B3D-674SD3ZAP1B2 / D-6-A-4*-
25B4D-786SD4ZAP2B10 / D-7---
2A5E-452CP1CPSHRTA3 / E-4D#0A-3D-5
10A6E-564CP2CPLONGA11 / E-5---
18B5E-676CP3FX1B3 / E-6---
26B6E-788CP4FX2B11 / E-7---
3A7F-453LT1LOWTOMA4 / F-4F-0G-3E-5
11A8F-565LT2MA1A12 / F-5-B-4*E-6
19B7F-677LT3C_OPENB4 / F-6--F-5
27B8F-789LT4MA2B12 / F-7---
4A9G-455MT1MIDTOMA5 / G-4F#0F-3G-5
12A10G-567MT2CLAVES1A13 / G-5-C-5*C-5
20B9G-679MT3C_MUFFB5 / G-6--A-5
28B10G-791MT4CLAVES2B13 / G-7---
5A11A-457HT1HITOMA6 / A-4G-0E-3B-5
13A12A-569HT2CB1A14 / A-5B-0C-4D-6
21B11A-681HT3C_SLAPB6 / A-6-C-6
29B12A-793HT4CB2B14 / A-7--
6A13A#458CH1CLOSEDHATA7 / A#4G#0D-4B-4
14A14A#570CH2RS1A15 / A#5D-0B-3F-4
22B13A#682CH3NOISESHRTB7 / A#6-D-5*-
30B14A#794CH4RS2B15 / A#7---
7A15B-459OH1OPENHATA8 / B-4A-0E-4A-4
15A16B-571OH2CY1A16 / B-5A#0F-4G-4
23B15B-683OH3NOISELONGB8 / B-6---
31B16B-795OH4CY2B16 / B-7-G-4-
in linear pad index order:
IdxNrABNoteNoteNrNameAlt.NameTempest Pad/NoteARMDTB
0A1C-448BD1BDSHRTA1 / C-4C-0C-3C-4
1A3D-450SD1SDSHRTA2 / D-4C#0D-3E-4
2A5E-452CP1CPSHRTA3 / E-4D#0A-3D-5
3A7F-453LT1LOWTOMA4 / F-4F-0G-3E-5
4A9G-455MT1MIDTOMA5 / G-4F#0F-3G-5
5A11A-457HT1HITOMA6 / A-4G-0E-3B-5
6A13A#458CH1CLOSEDHATA7 / A#4G#0D-4B-4
7A15B-459OH1OPENHATA8 / B-4A-0E-4A-4
8A2C-560BD2BDLONGA9 / C-5--D-4
9A4D-562SD2SDLONGA10 / D-5---
10A6E-564CP2CPLONGA11 / E-5---
11A8F-565LT2MA1A12 / F-5-B-4*E-6
12A10G-567MT2CLAVES1A13 / G-5-C-5*C-5
13A12A-569HT2CB1A14 / A-5B-0C-4D-6
14A14A#570CH2RS1A15 / A#5D-0B-3F-4
15A16B-571OH2CY1A16 / B-5A#0F-4G-4
16B1C-672BD3BT1B1 / C-6E-0--
17B3D-674SD3ZAP1B2 / D-6-A-4*-
18B5E-676CP3FX1B3 / E-6---
19B7F-677LT3C_OPENB4 / F-6--F-5
20B9G-679MT3C_MUFFB5 / G-6--A-5
21B11A-681HT3C_SLAPB6 / A-6-C-6
22B13A#682CH3NOISESHRTB7 / A#6-D-5*-
23B15B-683OH3NOISELONGB8 / B-6---
24B2C-784BD4BT2B9 / C-7---
25B4D-786SD4ZAP2B10 / D-7---
26B6E-788CP4FX2B11 / E-7---
27B8F-789LT4MA2B12 / F-7---
28B10G-791MT4CLAVES2B13 / G-7---
29B12A-793HT4CB2B14 / A-7--
30B14A#794CH4RS2B15 / A#7---
31B16B-795OH4CY2B16 / B-7-G-4-

9.3.2 Plugins

9.4 Samples page

9.4.1 Zones

9.4.2 Live Recording

The Synergy Arranger audio-track feature and the Tracker node "audio patterns" use the sample live-recording mode to record / overdub audio clips.
By convention, the names of audio clip samples and namespaces start with a_ (e.g. "a_prophet12_1")

9.4.3 Voice Buses

9.4.4 Voice Plugins

9.4.5 Procedural Samples

empty sample waveforms can be created via the resize_waveform and resize_16th statusbar page commands

10 Projects

Valid HTML 4.01 Transitional

Document created on 19-Aug-2023 23:52:19