Strict Standards: Declaration of action_plugin_importoldchangelog::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /home/merfasmean/ on line 8

Strict Standards: Declaration of action_plugin_importoldindex::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /home/merfasmean/ on line 57

Deprecated: Assigning the return value of new by reference is deprecated in /home/merfasmean/ on line 208

Deprecated: Assigning the return value of new by reference is deprecated in /home/merfasmean/ on line 211

Deprecated: Assigning the return value of new by reference is deprecated in /home/merfasmean/ on line 421

Deprecated: Assigning the return value of new by reference is deprecated in /home/merfasmean/ on line 594

Strict Standards: Declaration of cache_instructions::retrieveCache() should be compatible with cache::retrieveCache($clean = true) in /home/merfasmean/ on line 291

Deprecated: Function split() is deprecated in /home/merfasmean/ on line 154

Warning: Cannot modify header information - headers already sent by (output started at /home/merfasmean/ in /home/merfasmean/ on line 245

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/merfasmean/ on line 475

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/merfasmean/ on line 472

Strict Standards: Only variables should be passed by reference in /home/merfasmean/ on line 71

Warning: Cannot modify header information - headers already sent by (output started at /home/merfasmean/ in /home/merfasmean/ on line 141
#hackpact []


  • hackpact = make and document something new everyday during September 2009

This page holds Sam Freeman's hackpact documentation

Any feedback via Twitter I guess, because there's no comments feature here…

day 1 : a html site for a friend.

I had arranged to do this site today before learning of hackpact.
Mike (Pempi) wanted help with a basic site and I had five hours of sitting on trains to do…
As it happens, I feel this is an appropriate start to the month because html was the first that language I taught myself c.a. 11 years ago.
The code-creates-stuff process had me hooked from the start → I like stuff and I like making stuff thus I like programming

Back in the day I was on Windows98 writing code in Notepad, after picking up the basics from some demo web development software.
Today on Mac OS X (version 10.4.11) I wrote in jEdit (version 4.2final (there must be a newer version out there as i've had this more than two years(maybe i'll follow that link now that i've made it…)), and used Safari (Version 4.0 (4530.17)) to preview the pages because Firefox hangs so often since its last update.
I did use Firefox (version 3.5.2) to refer to CSS reference and for other browsing because Safari on my machine doesn't know how to find the internet (the list of thing I should update on my machine would be very long if i wrote it out).
Fetch was used for ftp'ing

Today's project began in a bar near Leicester train port at lunch time.
Over a drink and a pizza, Mike showed me the sites of a few similar artists, and the html that he had hacked together, and we discussed the design specification for
Then between LEI and DBY, DBY to LDS, and LDS to HUD (plus some at home) I wrote the css and html, made a gif (which i'm not really happy with) and hacked and old img for a background which wasn't called for, but, you know…
Finally I wrote this documentation and next, to end the day, I will link to this from the hackpact home at

day 2 : buffernow

it's not finished but it is made → a new version of 'GetBuffers'
max patch online here

The basic idea is that a circular buffer is recording input audio and sections can be grabbed by the user for use elsewhere in MSP.

the theoretical problem is how to grab a section that starts near the end of the buffer and stops somewhere past the beginning of the buffer…
my solution is to have two circular buffers of equal duration recording the same input but to have one of the buffers offset in time by 50%

in this way the data at the end of one buffer occurs in the middle of the other.

the patch that I build during my MA (c.a two years ago) was based on [record~] and had [waveform~] objects for overview and closerview UI.
in this new version [poke~] is used to record the input and a Jitter solution is prototyped for the overview.

day 3 : sgii doku

Today I made this page having completed and compiled

the page speaks for itself in documenting the software, this is the brief documentation of that documentation.

I had hoped to actually use said software to capture some live coded sounds, but the day just didn't go that way, so instead I present that there page on the i i wiki as the what I made today.

day 4 : live code

Used sgii2.n to screen-cast a 7 minute Max MSP patch
patches (.zip)

_ #hackpact day 4 from Samuel Freeman on Vimeo.
first live code i've done for a long time. think it shows. The only plan i had was to use adsr~ inside poly~ , but then i forgot to do that...

This whole hackpact thing is, to me, just an exercise in getting things done, a daily deadline. So far, I've posted three just before midnight and this one the next morning - despite having done the screen-cast at 8pm…

day 5 :

today I had an idea for a 5min Max patch; a plan which I followed. It didn't quite take 5 min, but rather than drag it out, I implemented a fade out.

5 minutes for day 5 #hackpact from Samuel Freeman on Vimeo.

Also today I have had an idea for a new type of screen-casting for “live code” ← quotation marks inserted there because the result will not be a full real-time documentation of a performance → the output will not be a live code set, but it will be the product of a live coding session…
The performer will be able to start and stop the recording such that the finished video will consist of some selected bits while skipping out other periods of time (perhaps where something complex is being set up).
Anyone who grew up with a tape cassette recorder knows of this type of linear editing - you cannot go back to change previous transitions, but you can leave it on pause for as long as you wish before continuing…
The next thought, then, is that such start/stop edits are basically rubbish, to which I propose a method for preemptive cross-fades:
_• whilst recording, the player decides how long the cross fade from the current passage to the next will be. [Let's say 30 sec for this example].
_• the player marks the point in time where the cross fade will begin, at which the system begins to buffer the screen and audio data for the next [30 sec].
_• recording is then on pause.
_• when they are ready to record the passage, the buffered data streams will be cross faded with the live data.
_• repeat to end.

What do you think??

I can see (in my mind) how to code this up with Jitter, but will not have time for that this month…

day 6 : Via Ferrata

The only thing that I made on day 6 was a list of photos.
The day was taken up diving to the Honister Pass, Cumbria, climbing the 'zip wire' via ferrata route with my eldest brother and Dad (and nine other people)
At various points along the route the guide type dude took photographs of us, the punters, which were offered on disc for sale at the end of the climb for an extortionate fee.

So, the list that I made that night is of the 30 out of 71 photos that were 'applicable' to us three out of the twelve people in the group.
… and of those, only handful have I uploaded :

day 7 : improv

monthly inclusive improv session

live coded this towards the end.
(.aif write of buffer final contents included in zip ← mainly featuring cello by Scott McLaughlin)

Also played my 2007 laptop junkie system, and a version of QWERTYpartials.

and a plan for a monome based experimental performance was also hatched . . .

day 8 : Primes

algorithmic composition using first twenty-five prime numbers, modulo, and midi.


groupings of modulo outputs summed are as they are so as to ensure that the pitch and velocity values remain within midi range
→ with retrospect, it might have been a good idea to attach a [closebang] object to [flush]

day 9 : monome CA

was thinking about the monome thing
about messages to it and from it
the format is same as [matrixcontrol]
let's take an on state for a walk…

thinking about a monome from Samuel Freeman on Vimeo.
no sound by the way... video is as much about testing the selection feature of sgii2.n and compression settings as it is about showing the patch...

the [r-incdec] sub patch (which aught to be an abstraction) was made a few months ago, but i did add the int input management today

day 10-13 :

Pempi video draft edit, various soups, sponge cakes, some photography, rearranged most of the furniture down stars.

Booked to attend seeing sound

-> 8by8monome_13.maxpat

more 8by8 from Samuel Freeman on Vimeo.
a few more small steps towards a bigger plan, simple things pretty much hacked together

day 14 : Pempi

finished Pempi video

but only managed to get a copy with over compressed audio online → internet connection at home sucks

will have to wait til I'm next in uni

day 15 : monomemidi

another monome interaction idea

monomemidi from Samuel Freeman on Vimeo.
with a matrix control object as a surrogate monome, a simple patch gives a midi map hack - on 8x8 there are notes missing, on 16x16 there would be duplicated notes... just an thought towards a plan


sam_freeman/hackpact.txt · Last modified: 20090915_1543 by samuelfreeman
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki

Strict Standards: Only variables should be passed by reference in /home/merfasmean/ on line 79