Audio setup old

From Things and Stuff Wiki
Jump to navigation Jump to search


Specific notes on my Linux audio workflow.

What do I like to do?

  • All controller and keyboard, no mouse interaction
  • Headphone click track and visual metronome
  • Live recording and looping of MIDI note patterns
  • Live recording and looping of MIDI control patterns
  • Generation of MIDI note and control patterns
  • Dynamic routing of MIDI note and control messages
  • MIDI automation/apreggiation
  • MIDI velocity scaling
  • MIDI gating
  • MIDI swing/groove
  • MIDI delay/loop
  • MIDI key transpose
  • MIDI scale alteration/filtering
  • MIDI chord generation
  • Soundfonts and sample bank synthesis
  • Drum, bass, pad and lead synthesis
  • Audio FX - gating, reverb, delay, distortion, filters, etc.
  • Synchronised audio loop capture and loop FX
  • Have a system that is expressive enough for both live and studio use
  • Have a system that is quick to navigate and configure a workflow in
  • Have a system with robust session management
  • Ideally touching no Win VST

MIDI control hardware

  • Yamaha DJX
  • Korg Nanokontrol 2
  • Numark DJ2GO
  • MIDI to USB adapter for DJX
  • QWERTY keyboard to MIDI via midikb


Audio setup

  • Audio systems
    • ALSA
    • PulseAudio - sending PA app outputs to jack sinks
    • JACK - jackd 2, multiprocessor, D-Bus enabled
    • Cadence - good JACK configuration utility, automatic ALSA/PulseAudio/MIDI bridging
cadence
  # JACK config and start/stop

non-session-manager -- --session-root ~/audio/NSM
  # same session root directory for all projects
  # alias the command "nsm" for this, starting in a terminal for output/error messages


Session management

  • Non Session Manager
    • buggy but works.
    • JACKPatch - NSM tool to save JACK patch connections - known to loose configuration when programs crash
jackpatch
  # nsm specific util to save and restore jack connections
  # can occasionally bugs out and lose settings on some systems

From the commandline, in the project directory

aj-snapshot projectname.aj.bak
  # backup JACK connection snapshot as JACKPatch can lose its memory on a bad crash or accidental NSM entry removal
  • Carla
    • Can start/stop JACK engine
    • Provisional JACK app launcher - buggy, not enough ports can be exposed.
    • Catia

Hosts and routing

  • Carla - plugin host and graph patcher
    • LV2, LASDSPA, DSSI, Linux/Win VST
    • plugin tempo sync
    • internal/external Patchbay - buggyish views, no grid
    • MIDI automation CC per parameter but no MIDI learn
    • no channel strips
  • Patchage - JACK/ALSA patchbay - same graph engine as Ingen
    • Looks better than Catia, though Carla has an internal rack patchbay view
  • Ingen - modular host with internal units and inline LV2 plugins, MIDI learn
    • no channel strips
    • needs webkitgtk, which doesn't have an Arch binary package and takes more than a day to build
  • Qtractor - plugin host and channel routing
    • SDI interface is hard to work with
  • Ardour - plugin host and channel routing
    • very good channels/routing
    • no tempo change on JACK Transport tempo change
  • Non Mixer - modular mixer with MIDI2OSC learn
    • LV2 hosting with falktx fork
    • mixer format so automatic channel strips
    • interface is slow to work with
  • alsa_in/alsa_out - for adding to JACK additional input and output devices beyond the primary sound device
carla
  # plugin host

nsm-proxy patchage -A
  # GUI patch graph manager, less frustrating than that of Carla
  # via nsm-proxy for the -A argument to not load ALSA
  # Ctrl-g to sort, Ctrl-f to fit-to-screen zoom

( 
 nsm-proxy nsm-ingen
   # via nsm-proxy, hack of sequencer64 script above, copies in a blank project, starts ingen modular host engine and gui
   # ingen -eg project.ingen
)

(
 nsm-proxy alsa_out -j "USB Out 1" -d hw:5 -q 1 2>&1 1> /dev/null &
 nsm-proxy alsa_out -j "USB Out 2" -d hw:6 -q 1 2>&1 1> /dev/null &
   # additional 2 stereo outputs, USB soundcards for DJ main and headphone
)

Click track / metronome

  • Metronome - seq64 will have one soon
    • JVMetro - visual
    • something for extended section length


Live recording and looping of MIDI

Software options:

  • sequencer64 - no MIDI record control or MIDI learn
  • harmonySEQ - no recording. sequences and LFOs with multiple patterns, MIDI learn for: sequence toggle/one-shot, note/chord/octave change, pattern change, tempo and sequence sync.
  • Multi-Arp - ncurses MIDI looper, beta, TUI with typed commands
  • Giada - MIDI/audio looper, limited MIDI mapping


nsm-proxy nsm-seq64
  # via nsm-proxy, requires an empty midi file
  # make sure set to jack transport master


  • seq64 - beta features
    • variset feature (commandline flag) - allows larger set sizes/dimensions
    • indep mainwids feature - allows viewing three sets at a time
  • seq64 - part/pattern progression layout and switching process
    • follows a mostly vertical direction
      • how is set play meant to work? move up/down in column feature request? manual.


  • seq64 - MIDI hardware mapping to seq64 MIDI control - see Audio#sequencer64
    • start -
    • stop - nano stop - cc42
    • pause (stop/start toggle) - nano play - cc41
    • screen-set up - nano marker > - cc 62
    • screen-set down - nano marker < - cc 61
    • screen-set play - nano marker set - cc 60
    • bpm page down - dj2go left jog - cc#25 - value 127
    • bpm page up - dj2go left jog - cc#25 - value 1
    • mod thru toggle/on/off -
    • mod record -
    • mod queue - b4
    • mod solo toggle/on/off
    • mod replace - c5
    • mod snapshot - c#5
    • mod group learn - d5
    • mod group mute select - d#5
    • pattern toggle - 0-31 in sequencer64 - c2 (32)-g4

Key for configuration syntax:

[OPR INV STAT D1 D2min D2max] (toggle / enable / disable), where;

  • OPR=on/off
  • INV=inverse
  • STAT=MIDI status byte(channel ignored)
  • D1=data1
  • D2min=data2 min
  • D2max=data2 max

to redo:

# bpm up:
64 [0 0   0   0   0   0] [1 0 176  24   0   2] [0 0   0   0   0   0]
# bpm down:
65 [0 0   0   0   0   0] [1 0 176  24   3 127] [0 0   0   0   0   0]
# screen set up:
66 [0 0   0   0   0   0] [1 0 176  62   1 127] [0 0   0   0   0   0]
# screen set down:
67 [0 0   0   0   0   0] [1 0 176  61   1 127] [0 0   0   0   0   0]
# mod replace:
68 [0 0   0   0   0   0] [0 0   0   0   0   0] [0 0   0   0   0   0]
# mod snapshot:
69 [0 0   0   0   0   0] [0 0   0   0   0   0] [0 0   0   0   0   0]
# mod queue:
70 [0 0   0   0   0   0] [0 0   0   0   0   0] [0 0   0   0   0   0]
# mod gmute:
71 [0 0   0   0   0   0] [0 0   0   0   0   0] [0 0   0   0   0   0]
# mod glearn:
72 [0 0   0   0   0   0] [0 0   0   0   0   0] [0 0   0   0   0   0]
# screen set play:
73 [0 0   0   0   0   0] [1 0 176  60   1 127] [0 0   0   0   0   0]
# Extended MIDI controls:
# start playback (pause, start, stop):
74 [1 0 176  41   1 127] [0 0   0   0   0   0] [0 0   0   0   0   0]
# performance record:
75 [1 0 176  45   1 127] [0 0   0   0   0   0] [0 0   0   0   0   0]
# solo (toggle, on, off):
76 [0 0   0   0   0   0] [0 0   0   0   0   0] [0 0   0   0   0   0]
# MIDI THRU (toggle, on, off):
77 [1 0 176  44   1 127] [0 0   0   0   0   0] [0 0   0   0   0   0]
# bpm page up:
78 [0 0   0   0   0   0] [1 0 176  25   0   2] [0 0   0   0   0   0]
# bpm page down:
79 [0 0   0   0   0   0] [1 0 176  25   3 127] [0 0   0   0   0   0]
# reserved for expansion:
80 [0 0   0   0   0   0] [0 0   0   0   0   0] [0 0   0   0   0   0]
# reserved for expansion:
81 [0 0   0   0   0   0] [0 0   0   0   0   0] [0 0   0   0   0   0]
# reserved for expansion:
82 [0 0   0   0   0   0] [0 0   0   0   0   0] [0 0   0   0   0   0]
# reserved for expansion:
83 [0 0   0   0   0   0] [0 0   0   0   0   0] [0 0   0   0   0   0]


seq64 pattern GUI layout:
Kick Kit Perc Bass Pad Phrase A 1 Phrase B 1 Phrase C 1
Kick Kit Perc Bass Pad Phrase A 1 Phrase B 1 Phrase C 1
Kick Kit Perc Bass Pad Phrase A 1 Phrase B 1 Phrase C 1
Kick Kit Perc Bass Pad Phrase A 1 Phrase B 1 Phrase C 1


Channel and output conventions:

  • Drums: output 1, channel 10
  • Bass: output 2
  • Pad: output 3
  • Lead: output 4


  • midifilter.lv2: MIDI Duplicate Blocker - for live vs. seq64 notes


Generation of MIDI

See also Audio#Algorithmic / generative

  • MIDI generator, related to fractions of bpm
    • either momentary or toggled.
    • passing beats between parts


  • harmonyseq can be used to map MIDI events to one shot or repeating notes/chords/patterns, hard to send the tempo float over osc to....



Dynamic routing of MIDI

  • a2jmidid - via Cadence, as jackd 2 doesn't do the Metadata API yet so hardware interface names are opaque.
  • mididings - filtering, scripting, switching via 'scenes' and MIDI program change messages. m_mididings.py
  • jack_midi_dump - MIDI monitor, prints to terminal stdout.
  • moony.lv2
nsm-proxy a2jmidid -eu
  # because cadence misses -u arg

nsm-proxy mididings -f path/to/m_control.py [2]
  # 

nsm-proxy livedings -l 56801 -p 56800 -T -f "Sans 22 bold" -F "Sans 22 bold" -w 50 -n "control"

nsm-proxy mididings -f path/to/m_drums.py [3]
  # drum selection. to redo.

nsm-proxy livedings -T -f "Sans 22 bold" -F "Sans 22 bold"

nsm-proxy xterm -e jack_midi_dump
  # MIDI monitoring


  • toggle between sequencer64 controls and playing notes/chords - e5?
  • mididings scene mod between toggle and on and off?


  • MIDI controlled MIDI routing/switching using mididings scenes
    • find a better workflow
    • use cc toggle more? (overtone nanokontrol 2 config?)
    • need "if note held, this, else"?
    • scenes for
      • nano control of seq64 horizontal column level selection?
      • delay sends - function key select scene, nano buttons to send, nano rotary for feedback? nano cycle to toggle momentary or toggled send
      • gate/lfo sends - function key select scene, nano buttons to send, nano rotary for level, nano cycle to toggle momentary or toggled send
      • drum midi receive select, allows one/some/all.
        • mididings outputs for ersdrums, drum kit sf, drmr - scenes: ersdrums, kit, drmr, ersdrums+drmr, ersdrums+kit, ersdrums+kit+drmr
    • harmonic control
      • set the key - kick/bass/synth
      • play various kinds of chord progressions - synth



  • MIDI filtering
    • midifilter.lv2: ScaleCC - scale CC range sent to delay down for easier time sync length selection
    • midifilter.lv2: MIDI Note to CC
  • MIDI Sostenuto
  • midiFingered - Selectively sends standard portamento on/off CC messages to emulate "fingered portamento" for synths that don't have it. For this to work, the target instrument must have a portamento on/off switch that responds to CC 65.
  • midi16CCRouter - Changes up to 16 CCs to 16 other CCs. Optionally responds to Program Change.

to sort:

  • midiChannelize - Transforms everything to the selected channel. When set to "No Change" the plugin will have no effect.


  • midiAlias - Note values are reflected between a "Nyquist Note" and a "Zero Note," similar to the effect of audio sample aliasing.


  • AudioToCC - Converts audio amplitude (RMS) to CC messages.

MIDI automation/apreggiation

Carla:

  • CC 2 Breath Controller = Dry Wet
  • CC 7 Volume = Volume
  • CC 8 Balance = Left/Right


  • QMidiArp - an advanced MIDI arpeggiator, programmable step sequencer and LFO


  • midiStrum - Sequentially delays notes of an input chord to simulate strumming.


  • midiCCModulator - Use one CC to modulate another CC (or note velocity) in various ways.
  • midiCCReset - Remembers CC values and sends them out again at selected times.

MIDI velocity scaling


MIDI gating


MIDI swing/groove

  • midiSwing - Delays and/or offsets velocity of and applies probability to notes (and optionally also CCs) at every other step of a selected note value.
  • midiProbability


MIDI delay/loop


MIDI key transpose


MIDI scale alteration/filtering


MIDI chord split

  • midiChordSplit
  • chordemux - a MIDI filter/router utility which receives chords on its input channel, routes chords' notes to different channels depending on chord type and inversion
  • midiPolyphony


  • Note2CC
  • midiConverter3 - Change and convert between CC, Channel Pressure, Poly Aftertouch, Program Change, Pitch Bend, NRPN/RPN, Note On/Off, and other messages in various ways. Pitch Bend and (N)RPN conversions will use the full 14-bit values when possible.


MIDI chord generation

  • MIDI Chord - Harmonizer - midifilter.lv2
  • tonespace - standalone, VST
  • Piz midiChordHold - ??



Soundfont and sample bank synthesis

For velocity layers: Hydrogen, DrMr, DrumGizmo, Fabla2, avldrums

  • Sampler (live)
    • Fabla2
  • Samplers (file based)
    • samplv1 - one sample, various pitches. effects but no sample editing.
    • drumkv1 - many samples, one pitch. effects but no sample editing.
  • Sample slicing
    • shuriken - file based beat slicer, MIDI controllable, soundfont generator. no MP3.
    • freecycle - file based beat slicer
  • Soundfont hosts
    • Carla - sf2/sfz/gig host (compiled in fluidsynth backend)
    • DrMr - Hydrogen kit based sampler, 16 voices - LV2
    • DrumGizmo - drumgizmo format
    • avldrums.lv2 - self-contained soundfonts; Red Zeppelin stereo, Red Zeppelin multi-out, Black Pearl stereo, Black Pearl multi-out - LV2
    • Konfyt - additional soundfont and performance management, uses Carla (fluidsynth) as backend
    • SFZero - untested
    • Hydrogen - multilayer

Drum synthesis

  • Metronome
    • Bleep - synth, seq64 clicktrack


  • Mixed drum synth
    • Stegosaurus - LV2 - hard to use, kick: c4, snare: d4, closed hat: e4, open hat: f4
    • DrumSynth - LV2/VST - 32 voices polyphonic, 24 drum notes, 1 tone with sweep, 2 overtones, 2 overtones, envelope editor, midi automatable with learn function
    • Rudolf 556 - LV2 - old [5]
    • Smack - Ladspa - deps: Ingen, om, omins, and blop, cmt, and swh


  • Single drum synth - Win VST
    • TW-Opkicker - kick drum
    • TW-Percussion1 - 2.5 osc, various presets
    • KickMaker - kick drum, 4 osc+envelope plus output envelope - Windows VST. Linux build?
  • Mixed drum synth - Win VST
    • ErsDrums - drum machine, phat, track mono/stereo and stereo out options
    • KMT2 - 8 voices, individual outs, sensitive controls

Bass, pad and lead synthesis

  • Synths
    • ZynAddSubFX - good, no host tempo sync yet [6][7] - LV2
    • ObXd - nice. Oberheim OB-X
    • Dexed - Yamaha DX7
    • Tyrell N6
    • setBfree - A DSP Tonewheel Organ emulator
  • Synths w/ host tempo sync
    • TAL Noizemak3r - nice - LV2
    • triceratops - LV2
    • Infamous Cellular Automaton Synth - LV2
    • synthv1 - standalone, LV2
    • PHASEX - standalone


  • Synths w/ host tempo sync - Win VST
    • basic65 - chip tune
    • Crystal - pad
    • Diodow - atmospheric
    • dlM entropy
    • TheBlooo, TheScrooo


Audio routing

  • Audio mixing
    • MixerStereoEight - 16 ins and outs, 8 stereo channel control
      • AVL Drums Multi out control
    • m_mixer_S4toS32 [8] - lv2, 4 stereo to 8 stereo sends each - for fx sends
    • AMS Stereo Mixer 8 channels (alsa modular) - lv2, 8 mono to l/r stereo
    • AMS Stereo Mixer 2 channels (alsa modular) - lv2, 2 mono to l/r stereo mixdown

Used: MixerStereoEight to AMS Stereo Mixer 2 channel


  • Audio routing hardware control
    • nano2 faders / solos
    • dj2go master vol - master vol out
    • QWERTY keyboards (main for seq64 and secondary via midikb)


  • Mechanism with hotkeys for general mute (+volume?) groups
    • drums
    • synths
    • effects


  • Mechanism with hotkeys for effect send trigger/application
    • Seq64 patterns for effect automation
    • audio level fade change cc pattern


  • Visualisation
    • x42 Stereo/Frequency Scope


  • Ardour channels as hosts has bugs, see section below


Audio FX

  • gating, reverb, delay, distortion, filters, etc.


todo:

  • box off an fx plugin rack
    • delay - cc range filter/alter for fine synced delay time control - tal dub - better plugin for delay time sync (options as spectrum of length, not grouped)?
    • gate -
    • eq - dj hi/low pass? - dj2go three faders for low mid hi. eq over master out?
    • filter -
    • autopanner -
    • fuck shit up plugin - anarchy rhythms?


Audio reverb

  • Reverb
    • mverb - lv2
    • Tal-Reverb-III - all plate reverbs

Audio EQ

  • EQ
    • x42-eq - LV2
    • Lv2fil - Stereo and mono LV2 plugins, four-band parametric equalisers
    • HiLoFilter - vst

Audio gating

  • Gate
    • mda Dynamics - lv2, vst
    • GT10QM / GT10QS - lv2
  • Gates with host tempo sync
    • SuperCutSequencer - LV2 - Cut "On/Off" Sequencer (8 steps with smooth) synced to Midi-Clock Beats and Midi-Clock Start/Stop
    • dfx skidder - fun but tempo sync doesn't work properly - Win VST
    • dlM moot - Win VST
    • StormGate1 - Win VST
    • dlM gator - meh? - Win VST
    • gate3 - meh? - Win VST


  • Delays with host tempo sync:
    • TAL-Dub-3 - LV2
    • Anarchy Rhythms - Win VST
    • Calf Vintage Delay, Calf Reverse Delay, ZamDelay (mono), Della (mono), Leet Delay 2 (Win VST), TigerDelay (Win VST), Spaceship Delay (Win VST), PPD Echobox (Win VST), Tapatiki (Win VST), Delazi (Win VST), Rubbadub (Win VST), KR-Delay FS, SoundHack +delay (Win VST)


  • Filters
    • TAL-Filter-2 (filter) - LV2
    • ams-lv2, avw.lv2, Fomp, BLOP
    • mda: Re-Psycho! - Drum loop pitch changer, RezFilter - Resonant filter with LFO and envelope follower, Round Panner - 3D panner
    • Channelswap, MAutopan, Spectral Autopan
    • Ducka (side-chain envelope), ndcTrem+ (tremelo), dlM bent (desync), Masha (beat grinder), dfx buffer override (stutter), dlM thrummaschine (distortion) Kitchen Sync (complex LFO), The Modulator 2 (amplitude/ring/frequency modulation), dlM sfilter (sequenced filter), dlM pfilter (probabalistic filter), dlM manic (glitch sampler), Livecut (glitch), Muchacho (stutter), Phase Seq (glitch), dlM truc/2 (multi), Frakture (multi), Hysteresis (multi)
    • kn0ck0ut-LV2 - an LV2 plugin to perform spectral subtraction. It can be used to achieve a wide variety of effects, most notably removing or extracting the center of a two channel audio file. As Kn0ck0ut is only a plugin, you will need a host for LV2 plugins in order to use it, such as Ardour, Qtractor, Ingen, jalv, lv2_jack_host, or lv2file.
    • ArtyFX
    • rkrlv2


  • Pitch shifting:
    • talentedhack
    • x42-autotune (fat1.lv2)
    • TAL-Vocoder
    • VocProc
    • mod-pitchshifter
    • lv2vocoder
  • Distortion
    • mod-distortion
    • gx_vobtb.lv2 - fuzzbox
    • deteriorate-lv2
    • Deathcrush
    • bitfilter.lv2
    • bitrot


  • Granular
    • Argotlunar - tempo sync, multiplatform VST
    • grANALiser - Windows VST
    • 23_words - Host-synced randomised sample player/modulator. Windows VST
    • Muchacha - Applies David Haupt's granulator to clock-synced probability sequencer. Windows VST


  • Looping
    • SuperBeatRepeater - Carla doesn't see?
    • beatslash-lv2
    • InstaLooper - vst
    • Tempo Sync Reverser
    • SooperLooper - larger, proper
    • Luppp - Ardour-like


  • Compression
    • Radium Compressor - over master out
    • New Visual Compressor - LV2

Synchronised audio loop capture/FX

Structures

ABAC, etc. with length and intensity as a varying state.

AB either harmonic relation or on/off.


Kick

  • 4/4 - variations of
  • Swung / offbeat
  • Matching bass

Bass

  • 8 beats one tone, 8 another
  • 64 beats one tone, 64 another


Bugs

(and nitpicks)

  • Cannot yet do/use/is annoying
    • Session management
      • NSM - undeveloped UI, can't delete/move/rename sessions, no delete confirmation, new session/client button confusion, nsm-proxy doesn't save label first time. no jackpatch connection state file save/argument, loses states on bad crash. mostly does its job though..
      • i3 - working towards a sound layout save and restore process..
      • Carla - plugin state has to be manually loaded, plugin windows need to be manually opened (nsm?) [9]
      • Carla - takes a while to close [10]
      • Carla - no NSM portability yet [11]
    • Routing
      • jack2 - lacks Metadata API so no pretty device port names [12]
      • Patchage - doesn't auto-refresh when a client changes input/output ports.
      • Carla - crashes after a plugin is renamed [13]
      • Carla - has a max plugin instantiation limit of 10s, ErsDrums loads only 50% of the time depending on load
      • Carla - cannot reorder/group plugins in rack [14]
    • MIDI
      • MIDI controlled MIDI looping - no software good enough enough yet, would allow live loop of mute and effect changes. seq64 is closest.
      • sequencer64 - no MIDI start/stop/arm just yet [15].
      • sequencer64 - can't change BPM whilst running yet [16].
      • sequencer64 - can't see if text field is active or button is selected (accidental space) in editor window
      • Giada - audio/midi looping - problems between nanoKONTROL2s no button off note off CC and parameter scales [17]. fiddly midi control; learn but no 'mod' like sequencer64, i.e., no MIDI 'channel' (sample/sequence) select or channel groups - every item requires unique MIDI CCs and learns for each of it's functions.
    • External interactive tempo changes
      • klick doesn't do JACK transport and OSC mode (from gtklick) at same time [18]
      • Jack Director only has set bpm presets triggerable by midi
      • InConcert doesn't take external input or display bpm, crashes often
    • DAW
      • LMMS - no LinuxVST or LV2 [19]
      • Qtractor - doesn't see some VSTs linked by Airwave..
      • Qtractor - plugin MIDI ports are exposed through jack "system" block?! name is unuseful "midi_playback_13"
      • Qtractor - clicking on a bus option bus not changing it, then clicking another bus prompts to save (no) change
      • Qtractor - ERSDrums - on a MIDI track and no audio outs, on a Audio track and no MIDI ins?
      • Ardour - can't undo various tasks
      • Ardour - "Add New Subgroup Buss" doesn't work
      • Ardour - can't create busses in routing page
      • Ardour - plugin output channel numbering reversed/whack! (ERSDrums at least)?
      • Ardour - no virtual piano to plugin MIDI input for testing
      • Ardour - metronome is a fixed pattern, faster would enable quicker beatmatching with external source [20]
      • Ardour - no VST tempo sync? :( [21]
      • Ardour - no Jack tempo sync! [22] also no MIDI Clock sync [23]
      • Ardour or sequencer64 - with seq64 as Jack Transport Masteer, Ardour starts but doesn't use the correct tempo
    • Synthesis
      • ZynAddSubFX / Yoshimi - no host tempo sync for lfo/etc. [24] [25]
    • Samples
      • petri-foo - broken, always starts from 0 :(
      • Shuriken - no mp3 at least until the end of 2017 due to patents [26] [27]
      • Shuriken - playback line position becomes incorrect after change to/from Zoom Original scale [28]
      • Shuriken - cannot zoom in after enabling or disabling Slice [29]
      • Shuriken - sometimes crashes when rearranging samples [30]
      • Shuriken - major problems with Export As... feature [31]