some externals for _maxmsp

  • f0.auto_scale - finds minimum and maximum values of a stream of numbers and uses them as input scaling range
  • f0.auto_scale~ - msp
  • f0.beats_to_frames - calculates how many [video]frames will fit in x beats
  • f0.construct - a constructive constructor. wanna weave pictures like _these or like _this? connect to a standard 2d graphics object like max's [lcd], jitter's [jit.lcd], softvns' [v.draw] or nato.0+55's [242.qd]
  • f0.distance - calculate the distance between successive (delta) points in 1, 2 or 3 dimensions
  • f0.distance~ - msp
  • f0.fold - fold float and integer numbers to a specified range
  • f0.frames_to_beats - calculates how many beats will fit in x [video]frames
  • f0.gcd - find the greatest common divisor
  • f0.inc_dec_split - detect direction of incoming values and split to different outlets
  • f0.limit_counter - a different counter with floor and ceiling
  • f0.noergaard - per nørgård's infinity series
  • f0.range - finds minimum, middle and maximum values from a stream of values
  • f0.range~ - msp
  • f0.range2 - similar to f0.range but with an added smooth factor
  • f0.range2~ - msp
  • f0.ratio - keep width/height proportion
  • f0.slub - generate cpu spikes - disrupt timing version
  • f0.slub~ - generate cpu spikes - audio click version
  • f0.smooth - single exponential smoothing. good for filtering data from sensors
  • f0.smooth~ - msp
  • f0.smooth2 - double exponential smoothing
  • f0.smooth2~ - msp
  • f0.snap - smooth by snapping
  • f0.tune - an external that "quantise" frequencies
  • f0.tune~ - msp
  • f0.ultimate_counter - counter with float direction/rate and loop settings
  • f0.wrap - wrap float or integer numbers

now also on https://github.com/redFrik/f0ext
and many have been ported to javascript (the js object in max). see https://github.com/redFrik/f0js

version 13-08-10 / freeware(gnugpl) / source & binaries included
_download for osx (336kb) (64/32bit for both max5 and max6)

previous version for os9, max4 and max5.
_download for osx (275kb) (universal binary - for both max4 and max5)
_download for win (174kb) (not tested with windows max5 but should work)
_download for os9 (120kb)


get and set keyboard layout and input method. osx only.
version 1.1 / freeware(gnugpl) / source & binaries included
_download for osx (19kb) (universal binary)

f0.jit2n2 / f0.n22jit

bridge objects for peace and understanding. converts data between nato.0+55 and jitter. os9 only.
version 1.0 / freeware
_download f0.jit2n2 for os9 (23kb)
_download f0.n22jit for os9 (23kb)



framework for stacking, chaining and mixing max/jitter patches. been working on it since 2006 and now contains >100 modules.
hosted at _code.google.com/p/red-framework
download via svn.


a bunch of abstractions that someone might find helpful including:

  • f0.active - help to turn off processes if inactive in more than x ms
  • f0.atolf - ascii to list-of-floats conversion
  • f0.average_tempo - gives an average tempo of the last n bangs
  • f0.bounds - detect if a xy location is within the bounds of a shape
  • f0.clock - slow down metro/line/delay/pipe/clocker/timeline objects
  • f0.coords_to_rect - convert x1, y1, x2, y2 to x, y, width, height
  • f0.data_seq - record and playback messages
  • f0.delay - fifo delay line for messages
  • f0.delayf - fifo delay line for numbers with feedback
  • f0.dict - simple dictionary
  • f0.drunk - floating-point drunk
  • f0.duplicates_in_coll - remove duplicate data in coll objects
  • f0.ease - ease in, ease out
  • f0.efxgate - route via effect. also works with jitter
  • f0.float_counter - counter with float direction/rate
  • f0.flush - replacement for the standard [flush] object. this one also handles midi channels
  • f0.fold~ - fold values
  • f0.folder - wrapper for the standard [folder] object. easily connects to coll, umenu and msgbox
  • f0.hms_to_ms - converts hours-minutes-seconds to milliseconds
  • f0.jit_dimchange - outputs dim if a jitter frame differs from previous
  • f0.jit_dimchange2 - outputs dim if a jitter frame differs from previous. more efficient version
  • f0.jit_fade - fader built for efficiency
  • f0.jit_fade_uyvy - fader built for efficiency
  • f0.jit_lfos - a bank of lfos
  • f0.jit_mix - mixer built for efficiency
  • f0.jit_mix_uyvy - mixer built for efficiency
  • f0.key - wrapper for key and keyup
  • f0.l== - outputs 1 if two lists match
  • f0.lchange - filter out repeated lists
  • f0.lftoa - list-of-floats to ascii conversion
  • f0.line - different line
  • f0.line_exp - exponential line
  • f0.line_log - logarithmic line
  • f0.list_all_zero - outputs 1 if all numbers in a list are zero
  • f0.list_arpeggio - iterates over a list with a delay
  • f0.list_collect - builds a list of incoming messages
  • f0.list_first_nonzero - output index of first non-zero item in list
  • f0.list_num_nonzero - count number of non-zero items in a list
  • f0.live - record and repeat x messages y times
  • f0.makenote - replacement for the standard [makenote] object. this one also handles midi channels
  • f0.miniseq2 - midi note sequencer with variable playback rate
  • f0.mouse_move - this abstraction will move the mouse by a small amount if inactive for more that x seconds
  • f0.ms_to_hms - converts milliseconds to hours-minutes-seconds
  • f0.multidelay~ - tap delay with variable number of tap outputs, independent delaytimes and levels
  • f0.oitar - calculate width/height proportion
  • f0.once - loadbang that only fires once for all instances
  • f0.one_block_gate - blocks only one message, then opens the gate
  • f0.one_through_gate - lets only one message pass, then closes the gate
  • f0.play~ - one shot sample player
  • f0.play_env~ - one shot sample player with an envelope
  • f0.r - receiver that remembers and has a built in gate
  • f0.rand - floating-point random
  • f0.rand2 - floating point random bilinear
  • f0.rect_to_coords - convert x, y, width, height to x1, y1, x2, y2
  • f0.rotary - for endless rotary encoders
  • f0.route_index - route lists beginning with index
  • f0.route_pattern - prepends indexes from a pattern
  • f0.s== - outputs 1 if two symbols match
  • f0.sah - sample and hold messages
  • f0.sample - reduce a stream of messages by only letting every x message pass
  • f0.schange - filter out repeated symbols
  • f0.sched - delay items or lists
  • f0.seed - custom seed for random objects
  • f0.seq - simple step sequencer for messages
  • f0.sine_rule - sine rule
  • f0.vmk - basic computer keyboard -> piano mapping
  • f0.vr - value+receive that remembers what has been received
  • f0.vs - value+send that remembers what has been sent
  • f0.wrap~ - wrap values

version 11-02-16 / freeware
_download for osx & win (162kb) (max4 format but also works under max5)

previous version for os9.
_download for os9 (49kb)

now also on github


seven abstractions that creates different kinds of envelopes. perfect for grain synthesis. including adsr, blackman, curve, gauss, hamming, hanning, trapezoid.
version 01-11-06 / freeware
_download for osx & win (17kb) (max4 format but should work under max5)
_download for os9 (17kb)

java classes


some java classes for max.

  • f0.pdu - decode mobile phone text messages (sms)

version 09-07-27 / freeware(gnugpl) / source included
_download (32kb) (helpfiles in max5 format but classes should also work under max4)


max java - buf.Op extras

with this copyFrom method you can select and copy into a msp buffer at any position. to install open the java source code for buf.Op from within max with 'viewsource'. then paste this code at the end of that document - just before the last closing curlybracket. save, press cmd+k and click compile. last restart max. notice that this will be overwritten whenever you update max.

	//redFrik 050513, 051128, 060927
	public void copyFrom(String frombuf, long destoffset) {
		copyFrom(frombuf, destoffset, 0);
	public void copyFrom(String frombuf, long destoffset, long srcoffset) {
		long length= MSPBuffer.getSize(frombuf);
		copyFrom(frombuf, destoffset, srcoffset,  length-srcoffset);
	public void copyFrom(final String frombuf, final long destoffset, final long srcoffset, final long srcsize) {
		MaxSystem.deferLow(new Executable() {	
			public void execute() {	
				int channels= MSPBuffer.getChannels(frombuf);
				for(int i= 1; i<=channels; i++) {
					MSPBuffer.poke(bufname, i, destoffset, MSPBuffer.peek(frombuf, i, srcoffset, srcsize));
				outlet(0, "done");

and here is a little example patch...
_download (1,2kb)


browser patch for all my objects. by courtesy of dlf:telco.sys
version 11-02-16
_download for osx & win (24kb) (max4 format but also works under max5)

(see also maxobjects.com)


optional file for my externals and abstractions. drop in Cycling '74/init/ folder
version 08-10-09
_download (1kb)


jitter - simple demo patches made for a presentation at fylkingen, stockholm in march 2004
_download (8kb)