Skip to content

Latest commit

 

History

History
79 lines (58 loc) · 3.49 KB

sequential_switch.md

File metadata and controls

79 lines (58 loc) · 3.49 KB

Sequential Switch

This script acts as a sequential switch, routing a copy of the analogue input to one of the outputs. When a gate is received the output is changed.

Note that the output is a digital copy of the input, and not a direct circuit path. The output may undergo some transformation in the process. See the section on limitations, below.

  • ain: the input signal that is copied to one of the 6 output channels
  • din: when a rising edge is detected, the active output changes
  • cv1-6: one of these will have a copy of ain, the others will be zero
  • button 1: manually advance the output (on default view), or apply the current option (in menu view)
  • button 2: cycle between default & menu views
  • knob 1: cycle through the menu items (in menu view)
  • knob 2: cycle through the options for the current menu item (in menu view)

Pressing button 1 will manually advance the output, just like a trigger on the digital input.

Pressing button 2 will enter the options menu. Use knob 1 to advance through the available options. Knob 2 will cycle through the values for the selected option. Pressing button 1 will apply the current selection. Pressing button 2 will return to the default view.

Options:

  • number of outputs: 2-6, determines the number of output ports used
  • mode: one of:
    • sequential: port changes in order 1->2->3->4->5->6->1->....
    • reverse: port changes in order 1->6->5->4->3->2->1->6->....
    • ping-pong: port changes in order 1->2->3->4->5->6->5->4->...
    • random: port changes randomly, with a 1/n chance of repeating the current port
    • shift: instead of a traditional sequential switch, treat the module as a sample & hold shift register

After 20 minutes of idle time the screen will go blank. While blank the module will continue to operate normally.

Pressing button 1 while the screen is blank will wake the module up and advance the output. Pressing button 2 will only wake up the screen.

Shift Mode

When operating in shift mode, every time b1 is pressed or a trigger is read on din, the current value from ain is read and inserted into the first position of a shift register. Outputs 1-N (where N is the number of outputs set in the menu) are set to the first N items in the shift register. In other words, cv1 is the most-recent S&H reading, cv2 is the second most recent, cv3 is the third most recent, and so on.

Unused outputs (e.g. if the number of outputs is 4, cv5 and cv6) are set to zero.

Limitations

Because the Sequential Switch script reads the input voltage, processes it through an A-to-D converter and uses that to determine the output voltage the output signal will never be a perfect 1:1 copy of the input.

Audio signals will be completely destroyed. You should only use this program for routing control voltages or gates/triggers.

Square LFOs, gate, and trigger signals may be slightly noisy, but should still be within Eurorack tolerance for triggering external modules.

Constant input voltages will also be noisy. Be careful if you're sending a quantized input into the module, as the quantization may be ruined in the A-to-D and D-to-A conversions.

Smoothly-changing voltages, like triangle or sine LFOs may undergo some bit-crushing effects, which depending on your use may be desirable.

Patch Idea 1

Patch a constant voltage of 1V into ain. Every time the output changes it will effectively trigger a gate that will last until the next cycle. This will let you trigger effects, envelopes, etc... in sequence.