Just Another (Drum) Sequencer...SortOf, codename: Virgo

virgo-screenshot.png

virgo.zip

REQUIRES: zexy, moonlib, tof (as of Pd 0.50.2, all of which are in deken) and hcs (which comes by default with Pd 0.50.2 and is in deken (for extended))

Special Features

  • Unique playhead per row; each with their own metro (beat)
  • Up to 8 Volume states-per-beat (by clicking multiple times on the bang; where an rms=1 is divide among the states (2 states:0=rms=0(black), 1=rms=1(red); 3 states:rms=[0|0.5|1])
  • Design approach: using creation arguments to alias abstractions, so subsequently they are referred to by their creation arguments, ex. in [KITS sample] sample is referred to as [$1]; which is how they are listed below)

(notes: what I learned experimenting with this design approach, I will share as a separate post. Currently, it does not include cut-copy-paste (of regions of the pattern)). I good way to start trying it out is clicking the "R" to get a random kit and a random pattern).

virgo:[virgo/PROJECT KITS PATTERNS]

  • PROJECT[KITS PATTERNS]
    • $1:[KITS sample]
      • GUI
        • K: openpanel to load a previously saved *.txt (text object) kit of samples; on loadbang the default.txt kit is loaded
        • S: save the current set of samples to the most recently opened *.txt (kit) preset
        • SA: saveas a *.txt of the current set of samples
        • D: foldererpanel a sample directory to load the first (alphabetically) 16 samples into the 16 slots
        • RD: load a random kit from the [text samples] object where the samples where previously loaded via the "SAMPLES" bang on the right
        • U: undo; return to the previously opened or saved *.txt kit, so not the previously randomized
        • MASTER: master gain
        • (recorder~: of the total audio~ out)
          • record
          • ||: pause; either recording or play;
          • play: output is combined with the sequencer output just before MASTER out to [dac~]
        • SAMPLES: folderpanel to load a (recursive) directory of samples for generating random kits
      • ABSTRACTIONS
        • $1: sample
          • bang: openpanel to locate and load a sample for a track
          • canvas: filename of the opened sample; filenames are indexed in alignment with track indices in the PATTERNS section
    • $2:[PATTERNS row]
      • GUI
        • P: openpanel to load a previously saved *.txt (pattern) preset file; on loadbang the default.txt pattern is loaded; the preset file includes the beat, pattern, and effect settings for the row
        • S: save the current pattern to the most recently opened pattern .txt
        • SA: save as (self-explanatory)
        • states: the number of possible states [2..8] of each beat;
        • %: weight; chance of a beat being randomized; not chance of what it will result in; ex. 100% implies all beats are randomized ; random beats result in a value)gain) between 1 and states-1
        • PLAY(reset): play the pattern from "start" or on stop reset all playheads to start
        • start: which beat to start the playheads on
        • length: how many beats to play [+/-32]; if negative the playheads will play in reverse/from right to left
        • bpm: beats-per-minute
        • rate: to change the rate of play (ie metro times) by the listed factor for all playheads
        • R: randomize the total pattern (incl period and beats, but not the effect settings; beats of 1/32 are not included in the possibilities)
        • CL: clear, set all beats to "0", i.e. off
        • U: undo random; return to the previously opened or saved preset, ie. not the previous random one
        • M: mute all tracks; the playheads continue moving but audio does not come out of any track
        • ||:pause all playheads; play will resume from that location when un-paused
        • per: period; if 0=randomizes the period, >0 sets the period to be used for all beats
        • Edit Mode
          • Check the [E] to enter edit mode (to cut, copy, or paste selected regions of the pattern)
            • Entering edit mode will pause the playing of the pattern
            • Play, if doing so beforehand, will resume on leavng edit mode
            • The top-left most beat of the pattern grid will be selected when first entering edit mode
          • Single-click a beat to select the top-left corner of the region you wish to cut or copy
          • Double-click a beat to select the bottom-right corner
            • You may not double-click a beat "less than" the single-clicked (top-left) beat and vice-versa
          • Click [CL] to clear your selection (i.e. start over)
          • The selected region will turn to dark colors
          • If only one beat is selected it will be the only one darkened
          • Click the operation (bang) you wish to perform, either cut [CU] or copy [CP]
            • Then, hold down the CTRL key and click the top-left corner of where you want to paste the region
            • The clicked cell will turn white
            • And click [P] to paste the region
          • Cut and copied regions may both be pasted multiple times
            • The difference being, cutting sets the values (gains) for the originating region to "0"
          • Click [UN] to undo either the cut, copy, or paste operation
            • Undoing cut will return the gains from 0s to their original value
        • (effect settings applied to all tracks)
          • co: vcf-cutoff
          • Q: vcf-q
          • del: delay-time
          • fb: delay-feedback
          • dist: distortion
          • reverb
          • gn: gain
      • ABSTRACTIONS
        • $1: [row (idx) b8] (()=a property not an abstraction)
          • GUI
            • (index): aligns with the track number in the KITS section
            • R: randomize the row; same as above, but for the row
            • C: clear the row, i.e. set all beats to 0
            • U: undo the randomize; return to the originally opened one, ie. not the previous random one
            • M: mute the row, so no audio plays, but the playhead continues to play
            • S: solo the row
            • (beat): unit of the beat(period); implying metro length (as calculated with the various other parameters);1/32,1/16,1/8, etc.
            • (pattern): the pattern for the row; single-click on a beat from 0 to 8 times to increment the gain of that beat as a fraction of 1 rms, where resulting rms=value/states; black is rms=0; if all beats for a row =0 (are black) then the switch for that track is turned off; double-click it to decrement it
            • (effects-per-row): same as above, but per-row, ex. first column is vcf-cutoff, second is vcf-q, etc.
          • ABSTRACTIONS
            • $1: b8 (properties:row column)
              • 8-state bang: black, red, orange, yellow, green, light-blue, blue, purple; representing a fraction of rms(gain) for the beat

Credits: The included drum samples are from: https://www.musicradar.com/news/sampleradar-494-free-essential-drum-kit-samples

p.s. Though I began working on cut-copy-paste, it began to pose a Huge challenge, so backed off, in order to query the community as to 1) its utility in the current state (w/o that) and 2) just how important including it really is.

p.p.s. Please, report any inconsistencies (between the instructions as listed and what it does) and/or bugs you may find, and I will try to get an update posted as soon as enough of those have collect.

Love and Peace through sharing,
Scott