Audio setup old
Specific notes on my audio workflow.
Hardware
- MIDI hardware
- Yamaha DJX
- Korg Nanokontrol 2
- Numark DJ2GO
- MIDI to USB adapter for DJX
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
- 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. use wip branch 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.
Arrangement
- MIDI parts
- Kick - channel 10
- Snare - channel 10
- Other percussion - channel 10
- Hi-hat / crash - channel 10
- Bass - channel 1
- Phrase A - channel 2
- Phrase B - channel 3
- Phrase C - channel 4
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 |
Routing
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
- Drum soundfont
- avldrums.lv2 - self-contained soundfont - LV2
- DrMr - Hydrogen kit based sampler, 16 voices - LV2
- Synths
- ZynAddSubFX - good
- 0bxd - nice
- Wollo Drone - pad
- Synths w/ host tempo sync
- TAL Noizemak3r - nice - LV2
- basic65 - chip tune - Win VST
- Crystal - pad - Win VST
- Diodow - atmospheric - Win VST
- dlM entropy - Win VST
- TheBlooo, TheScrooo, Infamous Cellular Automaton Synth
- Samples
- drumkv1 - file based sampler
- shuriken - file based beat slicer. no MP3.
- freeycle - file based beat slicer
- Visualisation
- xjackfreak
- Audio mixing
- m_mixer_S4toS32 [1] - lv2, 4 stereo to 8 stereo sends each - for fx sends
- AMS Stereo Mixer 8 channels (alsa modular) - 8 mono to l/r stereo - for fx returns
Effects
- Reverb
- mverb - lv2
- Tal-Reverb-III - all plate reverbs
Effects w/ host tempo sync:
- Gates
- 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
- 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
- Channelswap, MAutopan, MFlanger, MFreqShifter, Ducka (side-chain envelope), TAL-Filter-2 (filter), 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)
- Granular
- Argotlunar
- grANALiser
- 23_words
- Muchacha
- Looping
- SuperBeatRepeater - carla doesn't see?
- beatslash-lv2
- InstaLooper - vst
- Tempo Sync Reverser
- SooperLooper - larger, proper
MIDI mapping
- seq64 - MIDI control config - keyboard mapping - 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
- toggle between sequencer64 controls and playing notes/chords - e5?
- mididings scene mod between toggle and on and off?
[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]
- MIDI automation
- arpage
- QMidiArp
- Hypercyclic
- BlueARP - Win VST
- RandARP - Win VST
- arp4midi - Win VST
- Audio routing
- dj2go master vol - master vol out
To do
- mapping computer keyboard to MIDI keyboard for more than just seq64 use - midikb
- MIDI controlled MIDI routing/switching - mididings scenes
- move individual midi filter plugins into mididings?
- use cc toggle more? (overtone nanokontrol 2 config?)
- need "if note held, this, else"?
- scenes for
- seq horizontal column levels
- 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
- part/pattern progression switching - seq64 vertical columns and sets, with mute groups
- part/channel preset switching - set play? move up/down in column feature request? manual.
- pick an fx plugin rack
- delay - cc range filter/alter for fine synced delay time control - tal dub
- pick reverb plugin - use/make nice presets - mverb?
- pick gate -
- pick eq - dj hi/low pass? - dj2go three faders for low mid hi
- pick filter -
- pick fuck shit up - anarchy rhythms?
- pick a metronome -
- audio level change cc sequences - bottom 2 sequence columns
Session setup commands
cadence #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 'nsm' for this
NSM entries:
jackpatch # nsm specific util to save and restore jack connections nsm-proxy a2jmidid -eu # because cadence never managed to autostart this and misses -u arg anyway nsm-proxy patchage -A # connection manager gui. ctrl-g, ctrl-f to sort connections # via nsm-proxy for the -A argument to not load ALSA carla # plugin host nsm-proxy mididings -f path/to/mididingsscript.py [2] # MIDI routing nsm-proxy livedings -T -f "Sans 22 bold" -F "Sans 22 bold" nsm-proxy xterm -e jack_midi_dump # MIDI monitoring nsm-proxy nsm-sequencer64 # via nsm-proxy, requires an empty midi file # make sure set to jack transport master radium_compressor xjackfreak ( optional 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 ) ( optional 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 )
aj-snapshot projectname.aj.bak
Bugs
- 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?) [3]
- Carla - takes a while to close [4]
- Carla - no NSM portability yet [5]
- Routing
- MIDI controlled MIDI looping - no software good enough yet, would allow live loop of mute and effect changes
- sequencer64 - no MIDI start/stop/arm just yet [8]. can't change BPM whilst running yet [9].
- Giada - audio/midi looping - problems between nanoKONTROL2s no button off note off CC and parameter scales [10]. 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 [11]
- Jack Director only has set bpm presets triggerable by midi
- InConcert doesn't take external input or display bpm, crashes often
- Samples
- petri-foo - broken, always starts from 0 :(
- Specimin - no mp3 at least until the end of 2017 due to patents
- Session management