Module Duplex.Applications.NotesOnWheels

Notes On Wheels (N.O.W) is an arpeggiating step sequencer.

Inheritance: Duplex.Application > Duplex.Application.NotesOnWheels

Features

N.O.W. allows you to create a sequence and control all aspects of each step (such as the pitch, velocity etc.) in realtime.

As for input, N.O.W. is very flexible, as you can control it via an additional MIDI input. Also, the virtual control surface will, when focused, detect and respond to keypresses within a specific range.

The virtual keyboard supports both ordinary transpose (one octave up/down from the middle C), and multi-step sequences (press keys while holding the SHIFT modifier). Same goes for the external MIDI keyboard, which can be set up to act upon CC messages and pitch bend.

Controller setup

A dedicated control surface is located in the Renoise tools menu: Duplex > Custombuilt > Notes On Wheels

_________________________________________________
|  _  _  _  _  _  _  _  _  _  _  _  _   _  _    |
| |_||_||_||_||_||_||_||_||_||_||_||_| |_||_|   | <- Position + Line offset
|  _  _  _  _  _  _  _  _  _  _  _  _   ______  |
| (_)(_)(_)(_)(_)(_)(_)(_)(_)(_)(_)(_) |__||__| | <- Pitch controls
|  _  _  _  _  _  _  _  _  _  _  _  _   ______  |
| (_)(_)(_)(_)(_)(_)(_)(_)(_)(_)(_)(_) |__||__| | <- Velocity controls
|  _  _  _  _  _  _  _  _  _  _  _  _   ______  |
| (_)(_)(_)(_)(_)(_)(_)(_)(_)(_)(_)(_) |__||__| | <- Offset controls
|  _  _  _  _  _  _  _  _  _  _  _  _   ______  |
| (_)(_)(_)(_)(_)(_)(_)(_)(_)(_)(_)(_) |__||__| | <- Gate controls
|  _  _  _  _  _  _  _  _  _  _  _  _   ______  |
| (_)(_)(_)(_)(_)(_)(_)(_)(_)(_)(_)(_) |__||__| | <- Retrigger controls
|  _  _  _  _  _  _  _  _  _  _  _  _   _  _    |
| |_||_||_||_||_||_||_||_||_||_||_||_| (_)(_)   | <- Steps + Spacing/Length
|                                               |
| |Write| |Learn| |Fill| |Global| |Modes...|    | <- Various controls
| ______________________________________________|

Also, check out the compact version, which use fewer controls, but still manages to contain every feature of it's bigger brother. This is possible because the sliders in that version are switching between the currently active mode (pitch, velocity etc.), and therefore, require only a small set of physical controls. Perhaps it's a more realistic starting point for your wn controller mapping than the fully expanded version? It's located here: Duplex > Custombuilt > Notes On Wheels (compact)

Discuss

Tool discussion is located on the Renoise forum

Changelog

0.98

- First release

Functions

__init (VarArg) Constructor method
start_app () inherited from Application
select_midi_port (port_idx) initialize MIDI input
midi_callback (message) receive MIDI from device
schedule_output (seq_step, mask_mode) schedule output, simple way to reduce number of pattern writes: remember the last step / mode - if either change, output immediately
output_sequence (seq_step, mask_mode, stream, force) output sequence to pattern
on_idle () inherited from Application
on_new_document () inherited from Application
disable_write_mode () Update display of write mode
on_keypress (key) inherited from Application
create_empty_sequence () create or empty sequence
_attach_to_instrument (new_song) attach to selected instrument
detect_slices () detect number of slices, and if using "white keys"
to_sliced_pitch_range (int_val, invert) convert the pitch range (normally 0-121) to the sliced sample range (for example, middle C and every white key for the next two octaves)
change_mode (mode) when mode has changed
shift (amount) shift sequence in either direction if we have a pending offset, update that one as well
_build_app () inherited from Application
reset_adjustments () reset adjustments will apply the default adjustment for each parameter, and update the display (dedicated/multi-control)

Tables

default_options These are the default options for the application
available_mappings These are the available mappings for the application

Note: the setmode[...] mappings allow you to assign a mode directly to a specific button.

white_keys list of white keys
self._controls all UIComponent references are kept here create tables in advance, the rest ad hoc

Fields

self.step_focus the step which was last modified (used for non-global output)
self.number_of_slices set to something else than 0 when instrument is sliced (tracked in realtime via the sample_mappings property)
self.lower_note remember where the sample mappings start/end (tracked in realtime via the sample_mappings property)
self.white_keys_only detect if sample mappings are 'white keys only' (tracked in realtime via the sample_mappings property)
self.accept_note_input true while the sequencer accepts incoming notes PC keyboard: when shift modifier is pressed
self.has_received_input true, once we input using shift modifier
self.midi_pressed_keys MIDI keys: remember pressed keys
self.midi_max_keys MIDI keys: max number of simultaneously pressed keys
self.scheduled_step use these for scheduled output (assign a special value to make them output first time)
self._blink track playback progress in 'blinks'
self.write_button_state the lit state of buttons
self.track_changed track changed?
self.touched when using the 'latch' write method, this will indicate that no control has yet been touched
self._playing the song is playing?
self.realtime_pos realtime position
self.autolearn when auto-learning is enabled
self.just_entered_autolearn (bool) temporary flag set when entering autolearn mode
self.seq (NOW_Sequence) internal sequence representation
self.last_line the pattern-line last detected by idle loop
self.line_offset the current line offset
self.pending_line_offset the upcoming pattern's line offset
self.pending_seq_pos sequence-pos of upcoming pattern
self.mode (enum) the current mode
self.write_method (enum) write method
self.global_mode (bool) global mode
self.fill_mode (bool) fill mode
self.write_mode (bool) write mode
self.midi_in (renoise.Midi.MidiDevice)


Functions

__init (VarArg)
Constructor method

Parameters:

  • VarArg )

See also:

start_app ()
inherited from Application

Returns:

    bool or nil

See also:

select_midi_port (port_idx)
initialize MIDI input

Parameters:

  • port_idx
midi_callback (message)
receive MIDI from device

Parameters:

  • message
schedule_output (seq_step, mask_mode)
schedule output, simple way to reduce number of pattern writes: remember the last step / mode - if either change, output immediately

Parameters:

  • seq_step (int), step to output (can be nil)
  • mask_mode (enum), restrict to specific mode (can be nil)
output_sequence (seq_step, mask_mode, stream, force)
output sequence to pattern

Parameters:

  • seq_step (int), step to output (can be nil)
  • mask_mode (enum), restrict to specific mode (can be nil)
  • stream (bool), produce output in 'short bursts'
  • force (bool), force output (e.g. when mode buttons are held)
on_idle ()
inherited from Application

See also:

on_new_document ()
inherited from Application

See also:

disable_write_mode ()
Update display of write mode
on_keypress (key)
inherited from Application

Parameters:

  • key (table)

See also:

create_empty_sequence ()
create or empty sequence
_attach_to_instrument (new_song)
attach to selected instrument

Parameters:

  • new_song
detect_slices ()
detect number of slices, and if using "white keys"
to_sliced_pitch_range (int_val, invert)
convert the pitch range (normally 0-121) to the sliced sample range (for example, middle C and every white key for the next two octaves)

Parameters:

  • int_val (number) the value to scale
  • invert (bool) when the value is sent to a control
change_mode (mode)
when mode has changed

Parameters:

  • mode (int, MODEPITCH,MODEVELOCITY,etc)
shift (amount)
shift sequence in either direction if we have a pending offset, update that one as well

Parameters:

  • amount (int)
_build_app ()
inherited from Application

Returns:

    bool

See also:

reset_adjustments ()
reset adjustments will apply the default adjustment for each parameter, and update the display (dedicated/multi-control)

Tables

default_options
These are the default options for the application

Fields:

  • write_method

    Select the desired write method

    WRITE_METHOD_TOUCH will only output notes while the controller is being used
    WRITE_METHOD_LATCH will start output once the controller is being used
    WRITE_METHOD_WRITE will output notes continously, no matter what
    
  • edit_sync Enable output when recording/edit-mode in Renoise is active
  • global_mode Enable this to start the application in global mode
  • fill_mode Enable this to start the application in fill mode
  • offset_quantize Adjust this to divide a sample into a number of equally sized segments when (applied when using the sample-offset controls).
  • offset_wrap Enable this to wrap the sample-offset
  • midi_keyboard Select among available MIDI devices
available_mappings
These are the available mappings for the application

Note: the setmode[...] mappings allow you to assign a mode directly to a specific button. If two or more modes are assigned in this way, they will act as radio buttons. As a secondary feature, hold any of these buttons for a moment, and the sequence will be written to the pattern, fill mode

Fields:

  • choose_mode

    (UISlider) The mode determine which kind of output the 'Steps' dials will generate

    1 = Pitch - set the pitch of each step - max/min value will clear
    2 = Velocity - set the volume of each step
    3 = Offset - set the sample offset of each step
    4 = Gate - set the length of each step, max is infinite
    5 = Retrig - set the retrig rate of each step
    
  • set_mode_pitch (UIButton) Set mode to Pitch*
  • set_mode_velocity (UIButton) Set mode to Velocity*
  • set_mode_offset (UIButton) Set mode to Offset*
  • set_mode_gate (UIButton) Set mode to Gate*
  • set_mode_retrig (UIButton) Set mode to Gate*
  • multi_sliders (group of UISliders) Specifies mode-dependant input dials (can control any parameter by switching mode)
  • pitch_sliders (group of UISliders) Direct pitch control of each step
  • velocity_sliders (group of UISliders) Direct velocity control of each step
  • offset_sliders (group of UISliders) Direct offset control of each step
  • gate_sliders (group of UISliders) Direct gate control of each step
  • retrig_sliders (group of UISliders) Direct retrig control of each step
  • num_steps (UISlider, 1-12) Set the number of steps in the sequence (mode-dependant)
  • step_spacing (UISlider, 1-16) This value will determine the space between each note in lines (a value of 0 will output all notes simultaneously)
  • pitch_adjust (UISlider) global pitch adjust (affects all steps)
  • velocity_adjust (UISlider) global velocity adjust (affects all steps)
  • offset_adjust (UISlider) global offset adjust (affects all steps)
  • gate_adjust (UISlider) global gate adjust (affects all steps)
  • retrig_adjust (UISlider) global retrig adjust (affects all steps)
  • multi_adjust (UISlider) global adjust (affects all steps in given mode)
  • write (UIButton) Toggles between output and no output (if you don't have room for this, check out @edit_sync)
  • learn (UIButton) Import pattern editor data beginning from the cursor position
  • fill (UIButton) Fill the entire track with the sequence, each time something changes. Use with caution, as this might be heavy on the CPU (with long patterns and many note columns)
  • global (UIButton) Enable 'global' to output all parameters (pitch, velocity, etc.) at the same time. When off, only the modified parameter type is output
  • shift_up (UIButton) Control the line-number offset (increase offset by a single line)
  • shift_down (UIButton) Control the line-number offset (decrease offset by a single line)
  • extend (UIButton) The 'extend' button will multiply the sequence's length by two, by cloning all steps and doubling the global retrig rate.
  • shrink (UIButton) Pressing 'shrink' will reduce the length of the sequence and global retrig rate by 50%
  • position (UIButton) Set the position of the sequence, based on the position of the edit cursor
white_keys
list of white keys

Fields:

  • ... lot of keys
self._controls
all UIComponent references are kept here create tables in advance, the rest ad hoc

Fields:

  • multi_sliders
  • pitch_sliders
  • velocity_sliders
  • offset_sliders
  • gate_sliders
  • retrig_sliders
  • pos_buttons

Fields

self.step_focus
the step which was last modified (used for non-global output)
self.number_of_slices
set to something else than 0 when instrument is sliced (tracked in realtime via the sample_mappings property)
self.lower_note
remember where the sample mappings start/end (tracked in realtime via the sample_mappings property)
self.white_keys_only
detect if sample mappings are 'white keys only' (tracked in realtime via the sample_mappings property)
self.accept_note_input
true while the sequencer accepts incoming notes PC keyboard: when shift modifier is pressed
self.has_received_input
true, once we input using shift modifier
self.midi_pressed_keys
MIDI keys: remember pressed keys
self.midi_max_keys
MIDI keys: max number of simultaneously pressed keys
self.scheduled_step
use these for scheduled output (assign a special value to make them output first time)
self._blink
track playback progress in 'blinks'
self.write_button_state
the lit state of buttons
self.track_changed
track changed? check via idle loop
self.touched
when using the 'latch' write method, this will indicate that no control has yet been touched
self._playing
the song is playing? check via idle loop
self.realtime_pos
realtime position
self.autolearn
when auto-learning is enabled
self.just_entered_autolearn
(bool) temporary flag set when entering autolearn mode
self.seq
(NOW_Sequence) internal sequence representation
self.last_line
the pattern-line last detected by idle loop
self.line_offset
the current line offset
self.pending_line_offset
the upcoming pattern's line offset
self.pending_seq_pos
sequence-pos of upcoming pattern
self.mode
(enum) the current mode
self.write_method
(enum) write method
self.global_mode
(bool) global mode
self.fill_mode
(bool) fill mode
self.write_mode
(bool) write mode
self.midi_in
(renoise.Midi.MidiDevice)
generated by LDoc 1.4.2