Fungn - arc, cv, function utility

fungn is a simply utility for using an arc to generate control voltages. one or more encoders sweep through fixed functions… or switch to cv control. input position and output values are represented on each arc ring.

inspiration came from many places, cold mac patch surveillance, discussions on using one knob to control increasing complexity, and simply wanting a way to use an arc to control many different parts of a modular patch.

the testing has been fairly light and tool was developed with a fairly specific hardware setup:

  • expert sleepers es-3 and es-6 modules
  • minidsp usbstreamer (a simple usb to adat interface)
  • monome arc 2 (an arc 4 should work)
  • max 7.1

i’m sure more can be done to make it more flexible for different configurations. this is my first attempt at building some beyond a quick hack in max so suggestions, comments, and bug reports are welcome.

the initial fungn-0.2.1 release is available on github along with all the source. i’ve attempted to build a standalone for people who don’t have max however I haven’t been able to figure out how to give it a proper icon and there is some more polish needed overall.

if you download the standalone app you’ll need to delete the quarantine attribute in order to bypass osx’s non-signed application security system:
% xattr -d
enjoy, hopefully folks find it useful.


Looks great!

I have been hoping for something similar to become a module (or a firmware hack for one of the existing modules) that alows the arc4 to function as a complex envelope generator/controller. Arc has an amazing tactile quality, and peformative thrust, it would be an amazing addition to a modular environment. Much like the grid became a beautiful extension to the modular world.

what do you think @scanner_darkly ? :smile:

1 Like

yeah, will be watching this with interest - i’m particularly interested in using encoders to control complex behavior.

one benefit this will have over modular is the visual representation. would be interesting to try something similar on teletype.

there are scant details on it but the omnimod module from macro machines might be able to do much of what this does minus the nice encoders. i tried to build something similar to this shortly after i acquired an aleph but didn’t finish the implementation (was working on a curve/breakpoint editor ops for bees).

in the end there is nothing that this is doing that is complex, what i was after (for my own use) was something which was visual and quick to use. something that didn’t take me out of the flow of patching.

i’m curious how omnimod does editing with 2 encoders (push encoders i think?) as they did mention editing was quick and intuitive.

using the encoders on arc to edit curves point by point could be a bit tedious i think. i’ve been considering something along the lines of having 4 envelopes where all 4 are affected by each encoder that controls a spread of some parameter. as an example, one encoder would control decay but to a different degree on each envelope [fuzzy explanation as i’m keeping ideas fuzzy as well at this point to see what manifests].

it does. last night while working on the tool i found myself entirely engrossed playing a simple dpo -> mmg -> optomix patch. one hand on grid + es, the other hand sweeping through four channels of modulation driven but one arc encoder.

i’m not sure. i have a 2012 (non-pushbutton) arc 2 so the thought of using a push action to set a key didn’t come up. when thinking about doing this sort of thing on the aleph (without implementing a graphical operator) i was imagining just supporting a fixed number of keys per function, say four. the editing would then consist of two encoders and two buttons.

  • encoder one controls the x position
  • button one sets a “key” at the current x position with the current value of y at that position
  • button two clears a “key”
  • with button one held down encoder two adjusts the y position
  • when all (say four) keys are set and one tries to key a new position the nearest key to the new position is moved/stolen and it’s y value is initialized to the y value which existed prior to moving the key (thus ensuring that while the shape/slope of the function around the moved key is changing that specific breakpoint stays the same)

i’ve pushed up a new version to github which contains a few minor bug fixes:

  • initial cv polling value now matches the initial value displayed on the respective control
  • bipolar/unipolar controls now reflect the current mode when the channel is first selected (no need to toggle)
  • morph control input is now clipped to 1-10 range to provide more consistent behavior

(the links in the original post have also been changed to point at this latest version)

This looks great @ngwese, thanks! Really happy to see all these new, well designed community contributed apps popping up.

bumped, thanks @glia for digging this up in another thread

1 Like