theHarmonicAlgorithm-3.1.1: Real-time harmonic progression generation for TidalCycles live performance
Safe HaskellNone
LanguageGHC2021

Harmonic.Interface.Tidal.Instruments

Description

Provides the channel-assignment helpers every MIDI line in the library routes through, and the studio-rig channel map. Device and section launchers (wind, strg, brss, perc; grnd, hmnx, s101, gnlr) are NOT defined here — they are composed per-performance in the .tidal files (documents/ALGORITHMIC_ORCHESTRATION.md for the orchestra, documents/LIVE_ENVIRONMENT.md for the studio rig) and in the Pulsar snippets, each block owning its channel with the ch N postfix. Library code never carries a launcher's name: a block and a wrapper of the same name would shadow each other in the session.

Synopsis
  • p10 :: Pattern ValueMap -> Pattern ValueMap
  • p11 :: Pattern ValueMap -> Pattern ValueMap
  • p12 :: Pattern ValueMap -> Pattern ValueMap
  • p13 :: Pattern ValueMap -> Pattern ValueMap
  • p14 :: Pattern ValueMap -> Pattern ValueMap
  • p15 :: Pattern ValueMap -> Pattern ValueMap
  • p16 :: Pattern ValueMap -> Pattern ValueMap
  • ch :: Int -> Pattern ValueMap
  • pad :: Int -> ControlPattern
  • padbank :: Int -> Int -> ControlPattern
  • vel :: Pattern Double -> Pattern ValueMap

Channel shorthand

p10 :: Pattern ValueMap -> Pattern ValueMap Source #

Route a pattern to a MIDI channel, by position. p10 is MIDI channel 10 (midichan 9, zero-indexed) through p16 on channel 16.

Postfix onto any pattern:

d1 $ p14 $ n "0 3 5 7"

Use ch when the channel number is computed rather than literal.

p11 :: Pattern ValueMap -> Pattern ValueMap Source #

Route a pattern to a MIDI channel, by position. p10 is MIDI channel 10 (midichan 9, zero-indexed) through p16 on channel 16.

Postfix onto any pattern:

d1 $ p14 $ n "0 3 5 7"

Use ch when the channel number is computed rather than literal.

p12 :: Pattern ValueMap -> Pattern ValueMap Source #

Route a pattern to a MIDI channel, by position. p10 is MIDI channel 10 (midichan 9, zero-indexed) through p16 on channel 16.

Postfix onto any pattern:

d1 $ p14 $ n "0 3 5 7"

Use ch when the channel number is computed rather than literal.

p13 :: Pattern ValueMap -> Pattern ValueMap Source #

Route a pattern to a MIDI channel, by position. p10 is MIDI channel 10 (midichan 9, zero-indexed) through p16 on channel 16.

Postfix onto any pattern:

d1 $ p14 $ n "0 3 5 7"

Use ch when the channel number is computed rather than literal.

p14 :: Pattern ValueMap -> Pattern ValueMap Source #

Route a pattern to a MIDI channel, by position. p10 is MIDI channel 10 (midichan 9, zero-indexed) through p16 on channel 16.

Postfix onto any pattern:

d1 $ p14 $ n "0 3 5 7"

Use ch when the channel number is computed rather than literal.

p15 :: Pattern ValueMap -> Pattern ValueMap Source #

Route a pattern to a MIDI channel, by position. p10 is MIDI channel 10 (midichan 9, zero-indexed) through p16 on channel 16.

Postfix onto any pattern:

d1 $ p14 $ n "0 3 5 7"

Use ch when the channel number is computed rather than literal.

p16 :: Pattern ValueMap -> Pattern ValueMap Source #

Route a pattern to a MIDI channel, by position. p10 is MIDI channel 10 (midichan 9, zero-indexed) through p16 on channel 16.

Postfix onto any pattern:

d1 $ p14 $ n "0 3 5 7"

Use ch when the channel number is computed rather than literal.

ch :: Int -> Pattern ValueMap Source #

Set the MIDI channel from a 1-indexed Int, so ch 1 is MIDI channel 1. The general form of p10 .. p16; used internally by every orchestral instrument in Harmonic.Interface.Tidal.Orchestra.

Studio rig

The JV-1010 orchestra owns a separate, library-fixed map (Harmonic.Interface.Tidal.Orchestra); the studio rig is the one below, block names as the snippets launch them. Every channel has exactly one owner; the blocks set it with ch N (documents/LIVE_ENVIRONMENT.md).

1 grnd  grand piano (soft)        9 k909 / kgrv  drum machines
2 mini  Minimoog pad (soft)      10 subk / kmpc  MPC sub, kit, 12-step LEDs
3 DFAM osc1                      11 hmnx  MPC harmonics keygroup
4 DFAM osc2                      12 slce  MPC misc-sample kit
5 DFAM step trigger              13 s101  Roland S-1 (s1 controls)
6 m32   Moog Mother-32           14 gnlr  P-6 G.CH  granular engine
7 jura  Juno poly bells (soft)   15 smpl  P-6 S.CH  pads, 48 one-shots
8 walk  bass line                16 auto  P-6 Auto CH focused pad + program change

pad :: Int -> ControlPattern Source #

MPC misc-sample pad n (1..16 = MIDI 36..51, bank A) on channel 12, the slce block's channel, baked in like the JV1010 drum voices. One note per cycle: inside a mark cue it fires once; for rhythm, struct "1 ~ ~ ~" (pad 4).

padbank :: Int -> Int -> ControlPattern Source #

pad addressed as the MPC lays it out: pad n (1..16) of bank b, the banks being successive sets of sixteen pads, not MIDI bank select. padbank 1 3 is pad 1 of bank C = pad 33 = MIDI 68; bank A is pad itself.

Velocity

vel :: Pattern Double -> Pattern ValueMap Source #

Velocity, as an alias for the amp control. Multiply onto a pattern to scale it:

, violin1 T (0,1) k vl grid Soprano |* vel 0.7