Audio setup old

From Things and Stuff Wiki
Revision as of 22:32, 13 October 2017 by Milk (talk | contribs) (→‎Effects)
Jump to navigation Jump to search



Specific notes on my Linux audio workflow.

Hardware

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

Software

  • Session management
    • Cadence
    • Non Session Manager
    • JACKPatch - NSM tool to save JACK patch connections
    • i3 - dynamic tiling window manager with i3 layout saving features, automatic session save with i3session


  • Audio systems, routing and hosts
    • ALSA
    • Pulsesaudio - sending PA app outputs to jack sinks
    • JACK - jackd 2, multiprocess, gui config via dbus. to try jackd 1 for speed later.
    • alsa_in/alsa_out - for adding to JACK additional input and output devices beyond the primary sound device.
    • Patchage - JACK/ALSA patchbay.
    • Carla - plugin host (LV2, LASDSPA, DSSI, Linux/Windows VST). MIDI automation CC per parameter.
    • (Ingen - plugin host (LV2) and patcher. MIDI learn.)


  • MIDI routing
    • a2jmidid - via Cadence, as jackd 2 doesn't do the Metadata API yet.
    • mididings - filtering, scripting, switching via 'scenes' and MIDI program change messages. m_mididings.py
    • jack_midi_dump - MIDI monitor, prints to terminal stdout.
    • midifilter.lv2: ScaleCC - scale CC range sent to delay down for easier time sync length selection
    • midifilter.lv2: MIDI Note to CC - note to CC
    • midifilter.lv2: MIDI Duplicate Blocker - for live vs. seq64 notes
    • Piz: midiProgramChange - from the above to mididings for scene changes
    • Piz: midiCCToggle - momentary to toggle
  • MIDI sequencing
    • sequencer64 - no MIDI record control (in dev) or MIDI learn. check for wip branches where these are/will be implemented.
    • 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.
    • CCStepper - 64 steps max, no recording. Windows VST.

Session

To do

  • update this page
    • i tried using Ardour channels for hosting, but it doesn't recieve tempo changes from other Jack transport masters. back to Carla.

Setup commands

cadence
  # start jack with

#todo - non-gui start
# cadence-pulse2jack
# pacmd set-default-source jack_in && pacmd set-default-sink jack_out
non-session-manager -- --session-root path_to/NSM_projects_root
  # i.e. non-session-manager -- --session-root ~/audio/NSM
  # same session root for all projects
  # i alias the command "nsm" for this, starting in a terminal for output/error messages

NSM entries

Connections

jackpatch
  # nsm specific util to save and restore jack connections
  # can occasionally bug out and lose settings on some systems

nsm-proxy a2jmidid -eu
  # because cadence never managed to autostart this and misses -u arg anyway

nsm-proxy patchage -A
  # gui connection manager. ctrl-g, ctrl-f to sort connections.
  # via nsm-proxy for the -A argument to not load ALSA


From the commandline, in the project directory

aj-snapshot projectname.aj.bak
  # backup JACK connection snapshot, as JACKPatch loses it's memory on a bad crash or accidental NSM entry removal


Routing

nsm-proxy mididings -f path/to/m_control.py [1]
  # docs: MIDI routing

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 [2]
  # 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


Sequencing

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


Hosts

carla
  # plugin host


( optional modular sound synthesis
 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
)


Other

radium_compressor
  # for the master out


Additional ins/outs

 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


TODO:

  • mapping computer keyboard to MIDI keyboard for more than just seq64 use - midikb

MIDI sequencing

Sequencer64


  • 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 1 Snare 1 Hi-hat 1 Perc. 1 Bass 1 Phrase A 1 Phrase B 1 Phrase C 1
Kick 2 Snare 2 Hi-hat 2 Perc. 2 Bass 2 Phrase A 2 Phrase B 2 Phrase C 2
Kick FX 1 Snare FX 1 Hi-hat FX 1 Perc. FX 1 Bass FX 1 Phrase A FX 1 Phrase B FX 1 Phrase C FX 1
Kick FX 2 Snare FX 2 Hi-hat FX 2 Perc. FX 2 Bass FX 2 Phrase A FX 2 Phrase B FX 2 Phrase C FX 2


Channel and output conventions:

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

MIDI routing

  • 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 generation

  • 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....


  • MIDI generation tools


  • MIDI automation
    • arpage
    • QMidiArp
    • Hypercyclic
    • BlueARP - Win VST
    • RandARP - Win VST
    • arp4midi - Win VST
    • Malt
    • MIDI Shape Shifter


MIDI tools

  • MIDI key/scale/tonic alteration
    • midiForceToKey - no GUI
    • midiTranspose - no GUI
    • MIDI Chromatic Transpose
    • MIDI Keys Transpose
    • MIDI Enforce Scale
    • Cales - need to apply changes and use presets
    • AutoTonic Player - Windows app not VST. no.
    • midiScaleChanger - no GUI
    • midiBlackKeyFilter
    • tonespace


  • MIDI chords
    • MIDI Chord
    • tonespace
    • Chordz
    • Chordit
  • MIDI groove
    • Circuit
    • Phase Seq
  • MIDI other
    • MIDI Velocity Adjust
    • midiAlias
    • midiDelay
    • midiNoteGroups
    • midiProbability
    • midiSimpleLFO
    • midiStrum
    • midiSwing
    • midiVelocityScaler
    • AuioToCC


Sample synthesis

  • Sample slicing
    • shuriken - file based beat slicer, MIDI controllable, soundfont generator. no MP3.
    • freecycle - file based beat slicer
  • Samplers
    • samplv1 - old-school polyphonic sampler
    • drumkv1 - file based drum kit sampler
  • 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

Drum synthesis

  • Metronome
    • Bleep - synth, seq64 clicktrack


  • Single drum synth
    • KickMaker - kick drum, 4 osc+envelope plus output envelope - Win VST
    • TW-Opkicker - kick drum, Win VST
    • TW-Percussion1 - 2.5 osc, various presets - Win VST
  • Mixed drum synth
    • ErsDrums - drum machine, phat, track mono/stereo and stereo out options - Win VST
    • KMT2 - 8 voices, individual outs, sensitive controls - Win VST
    • Stegosaurus - hard to use, kick: c4, snare: d4, closed hat: e4, open hat: f4 - LV2
    • DrumSynth - Linux VST

General synthesis

  • Synths
    • ZynAddSubFX - good, no host temp sync yet - LV2
    • ObXd - nice. Oberheim OB-X
    • Dexed - Yamaha DX7
    • Tyrell N6
    • setBfree - A DSP Tonewheel Organ emulator
    • Wollo Drone - pad - Win VST
  • Synths w/ host tempo sync
    • TAL Noizemak3r - nice - LV2
    • triceratops - LV2
    • Infamous Cellular Automaton Synth - LV2
    • synthv1 - standalone, LV2
    • PHASEX - standalone
    • basic65 - chip tune - Win VST
    • Crystal - pad - Win VST
    • Diodow - atmospheric - Win VST
    • dlM entropy - Win VST
    • TheBlooo, TheScrooo - Win VST

Audio routing

  • Audio mixing
    • MixerStereoEight - 16 ins and outs, 8 stereo channel control
      • AVL Drums Multi out control
    • m_mixer_S4toS32 [3] - 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


Effects

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?


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


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


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


  • Gate
    • mda Dynamics - lv2, vst
    • GT10QM / GT10QS - lv2
  • Gates with host tempo sync:
    • SuperCutSequencer - carla doesn't load? - LV2
    • 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
    • MFlanger, MFreqShifter, 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)


  • 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


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

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?) [4]
      • Carla - takes a while to close [5]
      • Carla - no NSM portability yet [6]
    • Routing
      • jack2 - lacks Metadata API so no pretty device port names [7]
      • Patchage - doesn't auto-refresh when a client changes input/output ports.
      • Carla - crashes after a plugin is renamed [8]
      • 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 [9]
    • 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 [10].
      • sequencer64 - can't change BPM whilst running yet [11].
      • 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 [12]. 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 [13]
      • 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 [14]
      • 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 [15]
      • Ardour - no VST tempo sync? :( [16]
      • Ardour - no Jack tempo sync! [17] also no MIDI Clock sync [18]
      • 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. [19] [20]
    • Samples
      • petri-foo - broken, always starts from 0 :(
      • Shuriken - no mp3 at least until the end of 2017 due to patents [21] [22]
      • Shuriken - playback line position becomes incorrect after change to/from Zoom Original scale [23]
      • Shuriken - cannot zoom in after enabling or disabling Slice [24]
      • Shuriken - sometimes crashes when rearranging samples [25]
      • Shuriken - major problems with Export As... feature [26]