Development Log

27/4/09

- Added 'iemmatrix' directory (as opposed to 'iem_matrix' which is different somehow) to the pd-extended path so that the 'matrix' object will load.  (NOTE: iem_matrix (w/underscore) is deprecated and should NOT be added to the path.)

- Removed conflicting 'matrix' object definition in 'cyclone' external set.  Method: moved iemmatrix path higher up the path search list in pd-extended.  This means that matrix~ object now has the correct number of inlets so the vbap.main.pd abstraction in vbap-demo.pd loads correctly.

- Seems like we should use 'mtx_*~' instead of matrix~.  Deprecation warning when matrix~ is loaded.  Note: mtx_*~ is not a wildcard - the * represents multiplication here.

- From pd-list archives it seems that matrix~ from Zexy (mentioned in the vbap-help/demo patch) is now the iem one which has also been renamed mtx_* (see above).  Sigh.

- OK, so what is the format of the matrix?  If I have 8 speakers and 48 masses in the model, from vbap I wil get 8 amplitudes which are multipliers for each of the 48 input signals.  So I have 48 x 8 multiplications to do.  Could look like this:

.4 .3 .3 .0 .0 .2 .3 .7
.2 .2 .6 .8 .2 .0 .4 .0
..
...and so on for 48 rows in total.

So the mtx_*~ object will always have 48 inputs because that's the number of masses.  The number of outputs might vary depending on how many speakers are in the setup being used at any particular time.

- Hacked pd to make mtx_*~ load.  Had to add matrix~ object to startup load list???  It works, but can't be a good thing...

1/5/09

- Got office vbap setup working.

15/5/09 (at STEIM)

- Have added a quick & dirty OSC link so that Wii controllers can change link tension and damping.  Need to use STEIM's Junxion software to map data from Wii controllers to OSC messages sent to localhost.

- Another (possible cheaper?) option is to use OSCulator.  This works quite well too...

26/5/09 (Sydney)

- Downloaded mrmr: an open source iPhone -> OSC app.  Pain in the arse to get it working but eventually did.  Key was to:

* Create local (computer-computer) wifi network.
* Join this wifi network on iphone 
* Find (self assigned) laptop IP address.
* Type this into server box of mrmr.

Accelerometer from iPhone seems much more accurate and stable than Wii controller.

- Modified force manager to tidy up and to set up forces so they are always applied between two masses.  This avoids the problem of force direction suddenly changing from one mass to another.  Force is now always applied to two masses.  If pitch is half way in-between two masses they get half the force each and so on pro-rata.

11/6/09

- Bit more work on getting matrices working for vbap.

17/6/09

Got vbap working.  Realised there was no need to use matrices as it turned out.

23/11/09

Bit behind.  For concert at UTS with Ben I started using an iCon MIDI controller which has sliders and buttons on it.  Much better way to change string tension, etc more subtly and in parallel with other changes.

Also, since then I added code to enable a fixed mass to be moved around using mouse (or IR pen coupled with Wii controller).  The fixed mass can be used to push other masses around.  It works, but the model refresh rate needs to be increased so that collisions are more reliably detected.

My thoughts are now to make the model more malleable during performance.  Should be able to 'draw' new shapes using some kind of device.  Likewise, links should be able to be cut and reformed more directly.  ie. Should be able to:

- Move (invisible) fixed masses around.
- Change tension in links by drawing somehow..?
- Be able to cut links by drawing.

Actually points 2 and 3 may essentially be the same thing as turning the link K down to 0 effectively cuts the link...

26/11/09

BRAINSTORMING HOW TO MAKE MSD MORE FLEXIBLE

- Be able to create MassCollections and LinkCollections
- Each mass/link in a collection can be individually accessed.  blobMasses[16].forceX(200); blobMasses[16].setM(10);
- Properties of all masses/links in a collection can be set.  blobMasses.setM(10);
- Forces can be applied to all masses in a collection.  blobMasses.forceY(200);
- Individual masses/links in a collection can be deleted.  blobLinks[16].delete(); or blobLinks.delete(16);
- Masses/links can be removed from a collection.  blobMasses[16].remove(); or blobMasses.remove(16);
- All masses/links in a collection can be deleted.  blobMasses.deleteAll();
- Masses/links can be accessed via collections.  eg. new Link(blobMasses[16], circleMasses[12], k, ...)
- New masses/links can be added to collections.  blobMasses.add(new Mass(M, fixed, ...);
- All new masses/links automatically added to global collection?  allMasses[]; allLinks[];
- Existing masses/links can be added to collections.  blobMasses.add(allMasses[16]);

16/12/09
In response to lots of comments about the lack of colour in big circle, I mapped the frequency of each masses oscillator to the colour of each mass.  One advantage is that it is much easier to 'play' the circle in a percussive way now as the frequencies are much more visible.