beatfix studios

soft power

FracticeBasic.PIE

Posted Wednesday, April 1st, 2009
Posted in code | 1 Comment »Print This Post Print

/* — Fractice – Wiimote — */
var.x = (Wiimote.gx + 1) / 2
var.y = (Wiimote.gy + 1) / 2
var.z = (Wiimote.gz + 1) / 2

midi.ByteControl4 = 1
midi.ByteControl11 = 1
midi.ByteControl3 = var.z   // color cycling rate A
midi.ByteControl17 = 1-var.y    // lissajous speed A

midi.ByteControl22 = 1
midi.ByteControl29 = 1
midi.ByteControl21 = var.z  // color cycling rate B
midi.ByteControl35 = 1-var.y    // lissajous speed B

var.damping = .9 // ranges from 0 (infinite) to 1 (none)
var.delta = var.x – (1-midi.ByteControl37) // calculate delta from input
var.x = var.x – (var.delta * var.damping) // apply damping and update position
midi.ByteControl37 = 1-var.x // xfader position
debug=var.x

midi.ByteControl42 = .1

/* — Fractice – Buttons — */
if clicked(wiimote.A) then {
if midi.ByteControl41<.5 then midi.ByteControl41=1 else midi.ByteControl41=0
} // mirror

if (var.x>.5)+clicked(wiimote.Plus) then midi.ByteControl5=midi.ByteControl5+1 // zoom in A
if (var.x>.5)+clicked(wiimote.Minus) then midi.ByteControl6=midi.ByteControl6+1  // zoom out A
if (var.x>.5)+clicked(wiimote.up) then midi.ByteControl7=midi.ByteControl7+1 // scroll up A
if (var.x>.5)+clicked(wiimote.down) then midi.ByteControl8=midi.ByteControl8+1  // scroll down A
if (var.x>.5)+clicked(wiimote.left) then midi.ByteControl9=midi.ByteControl9+1 // scroll left A
if (var.x>.5)+clicked(wiimote.right) then midi.ByteControl10=midi.ByteControl10+1 // scroll right A

if (var.x<.5)+clicked(wiimote.Plus) then midi.ByteControl23=midi.ByteControl23+1 // zoom in B
if (var.x<.5)+clicked(wiimote.Minus) then midi.ByteControl24=midi.ByteControl24+1  // zoom out B
if (var.x<.5)+clicked(wiimote.up) then midi.ByteControl25=midi.ByteControl25+1 // scroll up B
if (var.x<.5)+clicked(wiimote.down) then midi.ByteControl26=midi.ByteControl26+1  // scroll down B
if (var.x<.5)+clicked(wiimote.left) then midi.ByteControl27=midi.ByteControl27+1 // scroll left B
if (var.x<.5)+clicked(wiimote.right) then midi.ByteControl28=midi.ByteControl28+1  // scroll right B

ParticleView.PIE

Posted Tuesday, March 31st, 2009
Posted in code | No Comments »Print This Post Print

// ParticleView by Jeff Matson
// Uses WiiMouse 0.1 by WiiScript.co.nr (sbraidley@yahoo.co.uk)

wiimote.Leds=0
Shift=Equals = wiimote.Up
minus = wiimote.Down
Left = wiimote.Left
Right = wiimote.Right
Mouse.LeftButton = Wiimote.minus
Mouse.RightButton = Wiimote.plus
Mouse.LeftButton= Wiimote.A
//D = wiimote.home
E = wiimote.Two

if doubleclicked(wiimote.A) then {
if var.latch!=1 then var.latch=1 else var.latch=0
}

//(var.latch=1) = Mouse.LeftButton
//(var.latch=0) = Release(Mouse.LeftButton)
//if (var.latch=1) then Mouse.LeftButton=1 else Mouse.LeftButton=0
// Key.B = KeepDown(Mouse.LeftButton = )

if (Wiimote.B || Wiimote.A || var.latch==1) { // begin mouse conditional
var.trimx = 6
var.trimy = -31
var.trimz = 6
var.x = Wiimote.RawForceX + var.trimx
var.y = Wiimote.RawForceY + var.trimy
var.z = Wiimote.RawForceZ + var.trimz
var.sense0 = 1000
var.thresh0x = 2
var.thresh0y = 1
var.sense = 300
var.threshx = 10
var.threshy = 5
var.sense2 = 100
var.thresh2x = 15
var.thresh2y = 8
var.sense3 = 50
var.thresh3x = 20
var.thresh3y = 12

if var.x > var.thresh0x then mouse.x = mouse.x – 1/var.sense0
if var.x < -var.thresh0x then mouse.x = mouse.x + 1/var.sense0
if var.z > var.thresh0y then mouse.y = mouse.y – 1/var.sense0
if var.z < -var.thresh0y then mouse.y = mouse.y + 1/var.sense0
if var.x > var.threshx then mouse.x = mouse.x – 1/var.sense
if var.x < -var.threshx then mouse.x = mouse.x + 1/var.sense
if var.z > var.threshy then mouse.y = mouse.y – 1/var.sense
if var.z < -var.threshy then mouse.y = mouse.y + 1/var.sense
if var.x > var.thresh2x then mouse.x = mouse.x – 1/var.sense2
if var.x < -var.thresh2x then mouse.x = mouse.x + 1/var.sense2

//yaxis
if var.z > var.thresh2y then mouse.y = mouse.y – 1/var.sense2
if var.z < -var.thresh2y then mouse.y = mouse.y + 1/var.sense2
if var.x > var.thresh3x then mouse.x = mouse.x – 1/var.sense3
if var.x < -var.thresh3x then mouse.x = mouse.x + 1/var.sense3
if var.z > var.thresh3y then mouse.y = mouse.y – 1/var.sense3
if var.z < -var.thresh3y then mouse.y = mouse.y + 1/var.sense3
}
end if

debug = var.x + ” ” + var.y + ” ” + var.z

DJ Mix – Grow (2008)

Posted Thursday, March 5th, 2009
Posted in dj | No Comments »Print This Post Print
grow
DOWNLOAD MP3
mixed live by Jeff Mission @ WZBC | June 9, 2008 | 9 tracks | 50:09

Artist Track (Remix) Label Year
Circunbalation 5 Net23 2008
Koljah Antigua Vidab 2008
Solomun No Comment Dessous 2008
Hideo Kobayashi and Jerome Sydenham Gsxr 810 Apotek 2008
Martin Eyerer and Oliver Klein Babylon (Patrick Zigon mix) Kling Klong 2008
Corrugated Tunnel One Night in Barcelona (Chymera remix) Elevation 2008
Booka Shade Charlotte (Dubfire mix) Get Physical 2008
Velkro Dip Stain Presslab 2008
John Digweed Gridlock (Stereo Club mix) Renaissance 2007

Open Studios

Posted Wednesday, March 4th, 2009
Posted in images, vj | No Comments »Print This Post Print

Whorld installation at Fort Point Open Studios, Boston, MA.

WiiWhorld.PIE

Posted Wednesday, March 4th, 2009
Posted in code | No Comments »Print This Post Print

midi.DeviceOut = midi.yoke1.DeviceOut
debug=wiimote.gx
wiimote.leds=0

/* — WiiWhorld – Buttons — */
f6 = Wiimote.Down                               // fill
f7 = Wiimote.Up                                 // outline
backspace = Wiimote.Left                        // reverse
backslash =Wiimote.Right                        // convex
f8 = doubleclicked(wiimote.Up)                  // xray
f5 = doubleclicked(wiimote.Down)                // mirror
delete = wiimote.A                              // clear
esc = wiimote.home + wiimote.A                  // panic
f3 = Wiimote.One                                // rotate hue
f2 = doubleclicked(Wiimote.One)                 // loop hue
f4 = Wiimote.Two                                // invert color
if (Wiimote.plus) then midi.ByteControl22=midi.ByteControl22+.01 // zoom in
if (Wiimote.minus) then midi.ByteControl22=midi.ByteControl22-.01 // zoom out
if (doubleclicked(wiimote.plus)) then midi.ByteControl22=.8
if (doubleclicked(wiimote.minus)) then midi.ByteControl22=.2
if (doubleclicked(wiimote.home)) then midi.ByteControl25=.2

/* — WiiWhorld – Wiimote — */
var.x = (Wiimote.gx + 1) / 2
var.y = (Wiimote.gy + 1) / 2
var.z = (Wiimote.gz + 1) / 2

if (wiimote.b) then {
midi.ByteControl66 = var.x                      // global rotate
midi.ByteControl22 = var.z                      // zoom
} else {
midi.ByteControl5 = var.x                       // rotate speed
midi.ByteControl13 = var.z                      // saturation
} end if

/* — WiiWhorld – Nunchuk — */
if (Wiimote.HasNunchuk) {
var.nx = (Wiimote.Nunchuk.gx + 1) / 2
var.ny = (Wiimote.Nunchuk.gy + 1) / 2
var.nz = (Wiimote.Nunchuk.gz + 1) / 2
var.jx = (Wiimote.Nunchuk.JoyX + 1) / 2
var.jy = (Wiimote.Nunchuk.JoyY + 1) / 2

//midi.playback.firstnote = var.jx * 127  // musical joystick
//midi.playback.secondnote = var.jy * 127

if Wiimote.Nunchuk.ZButton {
midi.ByteControl23=.3                           // damping
midi.ByteControl24=.8                           // trail
midi.ByteControl31 = var.jx                     // origin x
midi.ByteControl32 = var.jy                     // origin y
midi.ByteControl9 = var.nx                      // star factor
midi.ByteControl10 = var.nz                     // pinwheel
} else if Wiimote.Nunchuk.CButton {
midi.ByteControl72 = var.jx                     // global even curve
midi.ByteControl73 = var.jy                     // global odd curve
midi.ByteControl31 = 1-var.nx                   // origin x
midi.ByteControl32 = 1-var.nz                   // origin y
} else {
midi.ByteControl70 = var.jx                     // global star factor
midi.ByteControl71 = var.jy                     // global pinwheel
midi.ByteControl11 = var.nx
midi.ByteControl21 = var.nz
} end if
} end if

// Speech Commands (requires http://www.ics.forth.gr/uachess/downloads/IE-speech_add-in_v1.zip)
// to activate – hold home button, say “voice” – wait for computer to confirm
if (wiimote.home and said(”voice”)) {
wait 100ms
if var.voice=0 {
say(”voice on”)
var.voice=1
} else {
say(”voice off”)
var.voice=0
}
}
if var.voice==1 {
//right=said(’next’)
backspace=said(’back’)
delete=said(’clear’)
esc=said(’panic’)
spacebar=said(’stop’)
spacebar=said(’go’)
f5=said(’mirror’)
f6=said(’fill’)
f7=said(’outline’)
f8=said(’xray’)
f9=said(’phase’)
f10=said(’new’)
ctrl+f11=said(’vj’)
shift+r=said(’random’)
shift+c=said(’center’)
shift+d=said(’drag’)
ctrl+a=said(’auto’)
backslash=said(’convex’)

alt+f=said(’file’)
ctrl+o=said(’load patch’)
ctrl+shift+o=said(’load playlist’)
ctrl+r=said(’record’)
up=said(’up’)
down=said(’down’)
//left=said(’left’)
//right=said(’right’)
enter=said(’enter’)
} end if

//debug = midi.OutDevName

Fractice Whorld

Posted Thursday, February 26th, 2009

Jeff Mission and Chris Korda performing live with the visual software tools WiiWhorld and Fractice. Fractice is used to create the background layer, while WiiWhorld is being controlled in the foreground – the two layers were lumakeyed together with an Edirol V4 video mixer.

Friday March 6th – WiiWhorld at MGFest09

Posted Wednesday, February 25th, 2009

Chris Korda and I will be doing a live performance of WiiWhorld at the Brattle Theater in Cambridge on Friday, March 6th.  The event runs from 10pm – midnight, and also includes performances by Peter Kirn, Joshue Ott, and Morgan Packard.

Complete details of MGFest09 can be found at http://mgfest.com/

Eyewash – past performances

Posted Wednesday, February 25th, 2009
Posted in general, vj | No Comments »Print This Post Print

jeffmission_eyewash041406The wonderful people (and talented VJs) of Eyewash in New York have been gracious enough to have me out to perform three times over the years.  Eyewash is a performance night where VJs take center stage – literally, you stand in the middle of the room, surrounded by four giant screens and audience members on all sides.  Here are links to my performances, from the Forward Motion theater website:

Eyewash: Fixation

Eyewash: A Good Friday

Eyewash: Boston2NewYork

djDecks.PIE

Posted Wednesday, February 25th, 2009
Posted in code | No Comments »Print This Post Print

A GlovePIE script for DJ mixing in the software djDecks.

// djDecks script by Jeff Mission – http://beatfix.com
// Make sure numlock is ON

if wiimote.leds=240 then wiimote.leds=0 // fix led bug

Numpad2=wiimote.one+wiimote.up or wiimote.two+wiimote.up // xfader step left
Numpad4=wiimote.a+wiimote.up // xfader left
Numpad8=wiimote.one+wiimote.down or wiimote.two+wiimote.down // xfader step right
Numpad6=wiimote.a+wiimote.down // xfader right
Numpad5=wiimote.a+wiimote.left // xfader center

ctrl+down=wiimote.home+wiimote.left // playlist scroll down
ctrl+up=wiimote.home+wiimote.right // playlist scroll up
ctrl+left=wiimote.one+wiimote.home // load track Deck A
ctrl+right=wiimote.two+wiimote.home // load track Deck B

A = wiimote.one+wiimote.right // bass up Deck A
Z = wiimote.one+wiimote.left // bass down Deck A
F = wiimote.two+wiimote.right // bass up Deck B
V = wiimote.two+wiimote.left // bass down Deck B

I = wiimote.one+wiimote.Plus // pitch bend up Deck A
U = wiimote.one+wiimote.Minus // pitch bend down Deck A
P = wiimote.two+wiimote.Plus // pitch bend up Deck B
O = wiimote.two+wiimote.Minus // pitch bend down Deck B

ctrl+f10 = wiimote.one+doubleclicked(wiimote.Plus) // pitch up Deck A
ctrl+f9 = wiimote.one+doubleclicked(wiimote.Minus) // pitch down Deck A
ctrl+f12 = wiimote.two+doubleclicked(wiimote.Plus) // pitch up Deck B
ctrl+f11 = wiimote.two+doubleclicked(wiimote.Minus) // pitch down Deck B

f2=wiimote.one+wiimote.A+wiimote.B // play / pause Deck A
f6=wiimote.two+wiimote.A+wiimote.B // play / pause Deck B
f3=wiimote.one+doubleclicked(wiimote.b) // cue Deck A
f7=wiimote.two+doubleclicked(wiimote.b) // cue Deck B
f4=wiimote.one+doubleclicked(wiimote.a) // loop Deck A
f8=wiimote.two+doubleclicked(wiimote.a) // loop Deck B

pageup = wiimote.home+doubleclicked(wiimote.plus) // master volume up
pagedown = wiimote.home+doubleclicked(wiimote.minus) // master volume down

// The following require custom keyboard bindings in djDecks
key.equals = doubleclicked(wiimote.home) // tempo sync (Auto button)
//key.8 = wiimote.home+wiimote.one // cue on/off Deck A
//key.9 = wiimote.home+wiimote.two // cue on/off Deck B

Two-Player WiiWhorld with FFRend

Posted Monday, February 23rd, 2009

Here are a few notes on how to run multiple instances of Whorld on the same screen, also known as “two-player mode” – I can’t give the exact step-by-step, but this should be a good starting point for people who want to experiment on their own:

The technique is built around FFRend, Chris Korda’s free, open-source software for rendering FreeFrame effects, and the UltraWhorld plugin. Start on the FFRend download page:

Download the “FFRend application” and “Chris Korda’s FreeFrame Plugins” from this page.

Now we need to get UltraWhorld from the Whorld site:
Download the UltraWhorld FreeFrame plugin.

Unpack and install FFRend.

Unpack ultrawhorld-1.1.00-bin.zip into a folder called “WhorldFF”, and place this folder inside your “My Documents” directory. This will enable UltraWhorld to automatically find your patches.

Unpack ckffplugs-1.0.07-bin.zip. Move all of the .dll files into the WhorldFF directory. We will be using “BoolMix.dll”.

Run FFRend. On the left side of the screen, you will see four empty slots for plugins. Right-click the top one, select “load”, and find the “UltraWhorld.dll” plugin. Load “UltraWhorld.dll” into the top slot.

Load a second instance of “UltraWhorld.dll” into the second slot.

Load “BoolMix.dll” into the third slot. In the dropdown next to “BoolMix A” select the first instance of UltraWhorld. You should now see the two UltraWhorld objects in the preview window.

You can change parameters for any loaded plugin by clicking on it, then adjusting the sliders to the right. Try playing with the “patch” sliders in UltraWhorld, and the blend modes in BoolMix.

Every loaded plugin in FFRend is MIDI controllable, using the MIDI section on the bottom of the screen. For multi-player WiiWhorld, you need to map the desired parameters for each instance of UltraWhorld to MIDI data coming from GlovePIE. This involves pairing multiple Wiimotes to your computer, then addressing them in GlovePIE as Wiimote1, Wiimote2, etc. I recommend using separate MIDI channels for each instance of UltraWhorld, to reduce confusion.

Unlike regular Whorld, the MIDI settings for UltraWhorld are not pre-filled, so you have to do some configuration. Also, don’t forget to configure FFRend to receive MIDI on the same port that GlovePIE is sending to. Once that’s all done, you should be off and running.

Now, wasn’t that simple? ;-)