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

Harmonic.Interface.Tidal.Devices.RC10R

Description

The pedal's own switches own everything one-off or stateful: recording, undo/redo, phrase memories, clearing. This module covers the timed, repeated and structural side: starting and stopping the recorded tracks, breaks, the preset rhythm's start, stop, fills and A/B groove, the rhythm kit, and levels that follow the form.

Every function is a control change on MIDI channel 10, CC 70-84. The rig's X3 interface consumes that lane before the MPC sees it and re-sends it on the RC-10R's own wire (X3 Out C): CC 70-83 on the RC-10R's control channel (1), CC 84 as a program change on its note channel (2). The pedal's MIDI menu carries the matching assignments:

CC  RC-10R function        CC  RC-10R function
70  TRK1 START             78  RHY STOP
71  TRK1 STOP              79  RHY FILLIN
72  TRK2 START             80  RHY DIVISION
73  TRK2 STOP              81  LOOP LEVEL
74  LOOP STOP              82  RHY LEVEL
75  ALL BREAK              83  TOTAL LEVEL
76  RHY BREAK              84  rhythm kit (program change, value = kit 1-16)
77  RHY START
RX CONTROL CH 1 · RX NOTE CH 2 · SYNC CLOCK MIDI (Tidal's clock, re-clocked by the X3)

Presses take a gate, like the drum names: rcFill "[0 0 0 0 0 0 0 1]/32", mark 33 k [silence, rcBreak "1"], once $ rcStop "1".

The pedal's drum kit is played through the MPC on a second lane, ch 10 CC 33-48: CC 33 + pad, value = velocity. The X3 consumes it and sends each hit as note 19-34 (pad + 19, clear of every other ch 10 note) out of its USB port 2 (Drums) to an MPC MIDI track (pads Chromatic C-2 transposed +19), which records or plays it and sends it on through port 3 (Looper); the X3 translates those notes to the kit's own and plays them on the note channel. A dkit block is written with the shared drum names (Harmonic.Interface.Tidal.Devices.JV1010, notes 0-15) and finished by x3rc10.

Synopsis

Loop tracks

rcTrk1 :: Pattern Bool -> ControlPattern Source #

Start or stop a recorded track. With LOOP TRACK MODE set to PARALLEL the two tracks are independent, so they can be arranged like instruments.

rcTrk1Stop :: Pattern Bool -> ControlPattern Source #

Start or stop a recorded track. With LOOP TRACK MODE set to PARALLEL the two tracks are independent, so they can be arranged like instruments.

rcTrk2 :: Pattern Bool -> ControlPattern Source #

Start or stop a recorded track. With LOOP TRACK MODE set to PARALLEL the two tracks are independent, so they can be arranged like instruments.

rcTrk2Stop :: Pattern Bool -> ControlPattern Source #

Start or stop a recorded track. With LOOP TRACK MODE set to PARALLEL the two tracks are independent, so they can be arranged like instruments.

rcStop :: Pattern Bool -> ControlPattern Source #

Stop the looper (both tracks), observing the pedal's STOP MODE.

Breaks

rcBreak :: Pattern Bool -> ControlPattern Source #

ALL BREAK: rhythm and loops cut out for the rest of the bar and return on the next downbeat.

rcRhythmBreak :: Pattern Bool -> ControlPattern Source #

RHY BREAK: the same, drums only; the loops keep playing.

Preset rhythm

rcRhythm :: Pattern Bool -> ControlPattern Source #

rcRhythmStop :: Pattern Bool -> ControlPattern Source #

rcFill :: Pattern Bool -> ControlPattern Source #

rcPattern :: Pattern Bool -> ControlPattern Source #

rcKit :: Pattern Double -> ControlPattern Source #

Select the rhythm kit, 1-16, in Roland's order: Studio, Live, Light, Heavy, Rock, Metal, Jazz, Brushes, Cajon, Drum&Bs, R&B, Dance, Techno, Dance Beats, Hiphop, 808+909. One message per event: mark 1 k [silence, rcKit 8].

Levels

rcLoopLevel :: Pattern Double -> ControlPattern Source #

Playback levels, 0-1. Any signal — a constant, an lfo, or the form's own kDynamic (fst k) — sampled sixteen times per bar.

rcRhythmLevel :: Pattern Double -> ControlPattern Source #

Playback levels, 0-1. Any signal — a constant, an lfo, or the form's own kDynamic (fst k) — sampled sixteen times per bar.

rcLevel :: Pattern Double -> ControlPattern Source #

Playback levels, 0-1. Any signal — a constant, an lfo, or the form's own kDynamic (fst k) — sampled sixteen times per bar.

Loops entering with the form

rcGate :: (Double, Double) -> IK -> Int -> ControlPattern Source #

A recorded track that enters and leaves with the form, like a section at its kinetics threshold: TRKtrk START on the first bar the form's kinetics is inside (lo, hi), TRKtrk STOP on the first bar it is outside. Sampled at each downbeat; only the crossings send anything, so no state is kept.

Drum kit

x3rc10 :: ControlPattern -> ControlPattern Source #

The dkit block's finaliser: every drum-pad event (notes 0-15) becomes a CC on the drum lane, CC 33 + pad with its final velocity (amp x 127) as the value. It comes last because a block applies |* vel d after the names. An event without amp takes SuperDirt's default, 0.4, as it would on the MPC kits. Any other note, and a velocity that rounds to 0, is dropped.