New one v9.18.18-1
2 2 loop polyrhythm tone seq chord apregg v 9.18.18-1.audulus (2.3 MB)
Switched to one scale for everything.
Important signal types:
I haven’t been totally consistent with signal naming in the project, but here are what I’d call the musically important signal types
- Scale: integer (1 - 4095—Binary-derived) decimal code for various musical scales. The LSB is tonic, so scales will nearly always have an odd numbered code)
- Key: octave-format —the current key frequency
- Progression Octave: integer—, where 0 is original key octave
- Progression Degree: integer (1-7)—the current degree of scale of the progression
- Scale-rotated: integer (1 - 4095)— Scale code, bit-rotated to place the current progression degree of scale at position 1, allowing chords and arpeggios to remain in-scale (note that the code will always be an odd number if the scale is rotated correctly)
- Progression-interval: octave-format—root frequency of the progression, normalized to middle-C.
- Melody interval: positive integer (1,2,3…)— in-scale tones, normalized to the current progression root.
- Melody octave: integer (…-2, -1, 0, 1, 2…)—number of octaves to the current melody tone.
- Melody interval: octave-format—melody, normalized to the current progression root.
- o TL out: octave-format—sum of key, progression interval, and melody interval.
Added a “tap” button to the tone loops to allow you to tap out tones from midi if the loop is off-auto. Once you have a nice loop tapped out, you can run it over a progression.
Tone loop 2 now randomly plays any in-scale tones over a two octave (plus 1 for high-tonic). You dial in the lowest tone you want and the highest (note, this is scale-based numbering, where 1 in a seven-tone scale represents the root, 8 is the root up one octave, and 15 is the root up two octaves.
Setting both dials in tone loop 2 to the same number forces the loop to just output that one tone. If you set the upper dial lower than the upper, You get the same tones as you’d get the other way, but inverted in order. For a random set of tones, direction has no meaning, but for arpeggios, in which you’d be actually outputting sequential indexes to the mux loaded with the tones, reversing the roles of the dials would reverse the arpeggio.
SO—I’m planning to add this two-dial approach to tone loop one, and probably make a single random/arpeggio patch to be used in both tone loops, were the chord tone patch board would be used by tone loop 1 and a straight sequence would be thre arp source for loop 2.
All octave signals outside of the sequencer UI are in Audulus A440 format, for compatibility with other folks’ patches.
Inversions: to do inversions (remember, this thing arpeggiates—it doesn’t do full-voiced chords) you just place the intervals where you want. Want to put the third below the root? You can, but that slides the rest of the chord up an octave. The problem with this at present is that my method of progressing up 1-7 intervals is via a brute-force if-then-else method which falls apart at two octaves. A better one’s coming! I swear! Some lovely, naturally terminating, recursive sort of expression for an arbitrary number of octaves is right on the tip of fingers! I’m certain this is reinventing the wheel. I believe, however, that reinventing the wheel is important if you want to learn more about wheels!
Will I be using any of this stuff in a year? Dunno, but it’s fun now, and still inspiring to listen to. Keeping everything in-scale may not help it sound more interesting, but I’ve figured that to develop an ear for a musical scale, you’d need to be exposed to it properly played. I hope I’m approaching that.