• svanya

    Stumbled on this the other on night.
    You may find it useful:
    http://cmuphyscomp.github.io/physcomp-f15/exercises/index.html

    Peace through sharing.
    -s

    posted in tutorials read more
  • svanya

    This is an arduino (mega) with four ultrasounds to capture 8 drumheads, plus effects on the shared drums based on the distance from the adjoining's ultrasounds..

    The Pure Data patch is derived from Virgo, as found here: https://forum.pdpatchrepo.info/topic/13325/just-another-drum-sequencer-sortof-codename-virgo

    The info on how to make this work is forthcoming.

    posted in output~ read more
  • svanya

    Published on Apr 10, 2021
    first real try at gamepad control. The Pure Data patch I used can be found here
    https://forum.pdpatchrepo.info/topic/13325/just-another-drum-sequencer-sortof-codename-virgo/1
    In this recording, I hooked up a gamepad controller to steer the cutoff, Q, delaytime, and feedback of all 16 tracks at once.

    posted in output~ read more
  • svanya

    route2d: a two dimensional route~ing matrix

    screenshot.png

    route2d~.zip

    everything in 1 gets masterIN;
    Everything in 4 sends to masterOUT;
    all columns;
    receive 1 in~;
    sent to all objects, i.e. red, yellow, green, and blue, inside that column;
    send 1 out~ (summed/+~) for that slot, i.e. each color is processed in parallel then mixdowned;
    each column passes its input from left to right;
    if no objects are in a column it passes the clean signal;
    if an object is inside column "0" it is not included anywhere in the matrix;
    whether the signal flows from left to right or right to left can be set via the ":>|<" toggle;
    objects may be moved ([wrap]) to the right with the ">" bangs;
    the left-most inlet is the original signal;
    the 2nd, 3rd, 4th, and 5th inlets~ are the in~s respectively for red, yellow, green, and blue;
    vice versa for the outlets~, r, y, g, b, then masterout~.

    So the given example is a linear configuration: chorus to delay to flanger to reverb.

    Enjoy.

    "May it serve you well."

    posted in abstract~ read more
  • svanya

    UPDATED version-without dependence on external .txt files

    mmp-state-saving.zip

    One of the great benefits and allures of Mobmuplat is it allows (via OSC) you to create virtual versions of hardware, ex. arduino, HID controllers etc.

    But one of things it does NOT naturally do is retain state. And while loading initial states, via loadbang, is nice, it is very clunky and does Not emulate hardware.

    What this (class) abstraction does is:
    Read all incoming GUI values (address+values) and writes them to a [text]. If the controller hasn't been changed yet, i.e. it's "new", then it adds a row to the [text]. If it is not new, then it finds that row (via search) and amends it with the new value(s) (that includes multi-value controls like xy-slider and multislider, though the multislider must be in "output all sliders mode"). It then uses menusave to save the [text] and just reads it back in on loadbang.

    It takes one creation argument: the period in ms of the metro which sends a bang to the menusave message.

    So...

    By copying and renaming the abs to whatever you want, for instance, {name-of-main-mmp-patch}-state.pd, then dropping that abs into your main mmp patch it will always be exactly like you left it. Then the next time you open the MMP document, it behaves like hardware, with all the knobs, sliders, etc. being where you left them.

    p.s. not going to bother with screenshots. As the zip files are very self-explanatory and include a demo.

    Peace through sharing. I hope your day is going well.

    Sincerely,
    S

    Supports:

    MMPSlider
    MMPKnob
    MMPToggle
    MMPXYSlider
    MMPMultiSlider

    Does Not Support:

    MMPButton (nonsensical)
    MMPLCD (no input)
    MMPGrid (non-linear)
    MMPMenu (output!=input)
    MMPMultiTouch (no input)
    MMPPanel (no output)
    MMPTable (output!=input)

    posted in abstract~ read more
  • svanya

    UPDATED version without dependence on external .txt files (below in comments)

    This is cool. I figured out how to do Automated state-saving in MobMuPlat.

    In order to better emulate (virtually via OSC) how my arduino/pi project will actually behave, i.e. the location of hardware knobs can't be set on loadbang, I needed a mechanism for mmp to constantly retain its state. So like hardware knobs they kept their "place".

    )aside: the fromGUI toNetwork is Not part of the idea.)

    Screenshot_2021-03-07_22-59-02.png
    mmp-state.zip

    See the zip to demo it.

    It only requires that you FIRST make a .txt "state" (ex. mmp-state.txt) file listing all the control addresses you want to save/load and a dummy value for each address.

    Works like a charm.

    May it serve you well.

    Note: the 10s automated save period is completely arbitrary and you could even set it with a knob, slider, textdialog etc.

    Peace through sharing,
    S

    p.s. a todo would be make it automatically harvest the control names/addresses by loading itself (the .mmp) file into a [text] object and just searching for the control classes and write that file as the mmp-state.txt ...perhaps another day :-)

    posted in abstract~ read more
  • svanya

    A remastering of a swarm of bees field recording with each audio partial (sigmund) being transformed into its own instrument (fluid~) in the mode-key(mmbh) of Aeolian A and that result being fedback into processing.

    p.s. then using projectM, a milkdrop I created (adaptation of others), and vokoscreen for the video.

    posted in output~ read more
  • svanya

    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

    posted in patch~ read more
  • svanya

    2021-02-18_20-57-10-first recording of my program creating his video and music as he watches what he creates

    my programs first fully autonomous music-video production where he is reacting to the video his music creates and thereby alters the video he is watching.

    notes:
    I am gearing up to sharing the patch, but it is not quite ready yet.
    So will explain more about when it's done.

    Currently, can say this:

    This is with:
    my usb camera pointed at the screen
    where his projectM visualization is being rendered
    according to the music
    his reaction
    to the visualization
    creates.

    So a visual loop (which also outputs audio) according to the visual stimulus itself provides.

    I.e. He sees the visual, makes music stimulated by it, then changes the visual he is reacting to.

    posted in output~ read more

Internal error.

Oops! Looks like something went wrong!