Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| sounds:zoia [2023-02-06 01:57] – asdf | sounds:zoia [2024-02-13 23:40] (current) – [Bluebox MIDI sync] remove section, as it is not feasible asdf | ||
|---|---|---|---|
| Line 8: | Line 8: | ||
| * [[https:// | * [[https:// | ||
| * [[https:// | * [[https:// | ||
| + | |||
| + | ===== Patch notes ===== | ||
| + | |||
| + | ==== Turing Machine ==== | ||
| + | To imitate the Music Thing Turing Machine, we use a ring of sample and hold modules as our shift register. The output of the last is fed into both the output and an input switch. The switch is controlled by a comparator whose inputs are the write probability (positive) and a triggered random value (negative). When the latter exceeds the former, the ring continues to loop unchanged; otherwise, a new note is inserted into the start of the loop. Thanks to the module' | ||
| + | |||
| + | Unlike the Turing Machine, the number of steps is hardcoded into the patch and cannot be adjusted on the fly (yet). The user can adjust the write probability, | ||
| + | |||
| + | < | ||
| + | digraph G { | ||
| + | rankdir=LR; | ||
| + | | ||
| + | sh1 [label=" | ||
| + | sh2 [label=" | ||
| + | shk [label=" | ||
| + | shn [label=" | ||
| + | mux [label=" | ||
| + | comp [label=" | ||
| + | quant [label=" | ||
| + | rand_newnote [label=" | ||
| + | param_pwrite [label=" | ||
| + | out; | ||
| + | rand_roll [label=" | ||
| + | | ||
| + | sh1 -> sh2 -> shk -> shn; | ||
| + | shn -> mux [headlabel=" | ||
| + | rand_newnote -> mux [headlabel=" | ||
| + | mux -> sh1; | ||
| + | shn -> quant -> out; | ||
| + | | ||
| + | param_pwrite -> comp [headlabel=" | ||
| + | rand_roll -> comp [headlabel=" | ||
| + | comp -> mux; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | An alternative idea would be to use a sequencer as the shift register. This arrangement requires a connection to each step of the sequence, but it allows us to dynamically adjust the number of steps (and program an initial sequence). | ||
| + | |||
| + | < | ||
| + | digraph G { | ||
| + | rankdir=LR; | ||
| + | | ||
| + | seq; | ||
| + | lfo_ramp [shape=" | ||
| + | rand1 [shape=" | ||
| + | rand2 [shape=" | ||
| + | quant; | ||
| + | dmux; | ||
| + | mux; | ||
| + | comp1 [shape=" | ||
| + | comp2 [shape=" | ||
| + | var_steps [shape=" | ||
| + | var_pwrite [shape=" | ||
| + | out; | ||
| + | | ||
| + | var_pwrite -> comp1; | ||
| + | rand1 -> comp1; | ||
| + | rand2 -> quant -> mux; | ||
| + | comp1 -> mux [headlabel=" | ||
| + | | ||
| + | mux -> dmux; | ||
| + | dmux -> seq [penwidth=2, | ||
| + | | ||
| + | lfo_ramp -> dmux [headlabel=" | ||
| + | var_steps -> comp2 [headlabel=" | ||
| + | lfo_ramp -> comp2 [headlabel=" | ||
| + | comp2 -> lfo_ramp [headlabel=" | ||
| + | comp2 -> seq [headlabel=" | ||
| + | | ||
| + | seq -> mux; | ||
| + | seq -> out; | ||
| + | } | ||
| + | </ | ||
| ===== Module reference ===== | ===== Module reference ===== | ||
| Line 128: | Line 201: | ||
| === Cabinet sim === | === Cabinet sim === | ||
| + | {{tag> | ||