Mercurial > hg > soniczoomios
changeset 46:1e266647840d
beta 2.
interpolation movement , smoothing (crap) and timbre only.
author | Robert Tubb <rt300@eecs.qmul.ac.uk> |
---|---|
date | Wed, 24 Apr 2013 17:58:08 +0100 |
parents | c2fffc8ea84d |
children | 0d3a993405e4 |
files | HelpViewController.xib IntroViewController.xib SliderViewController.mm TopButtonViewController.h TopButtonViewController.mm TopButtonViewController.xib grid.h grid.mm presetManager.h presetManager.mm testApp.h testApp.mm |
diffstat | 12 files changed, 273 insertions(+), 162 deletions(-) [+] |
line wrap: on
line diff
--- a/HelpViewController.xib Tue Apr 23 18:29:55 2013 +0100 +++ b/HelpViewController.xib Wed Apr 24 17:58:08 2013 +0100 @@ -96,35 +96,29 @@ ZXdpc2UgaWYgeW91IG1vdmUgYSBzbGlkZXIgeW91IHdpbGwgaG9wIHRvIGEgZGlmZmVyZW50IHBvaW50 IG9uIHRoZSBzdXJmYWNlLiBZb3VyIHBhdGggdGhyb3VnaCB0aGUgc3BhY2Ugd2lsbCBzaG93IGFzIGEg d2hpdGUgbGluZSwgYW55IHBvaW50cyB5b3UgaGF2ZSBob3ZlcmVkIG92ZXIgd2lsbCBzaG93IGFzIGJs -dWUgY2lyY2xlcy7igKgNU2F2ZSBhbnkgc291bmRzL3NlcXVlbmNlcyB0aGF0IHlvdSBsaWtlIHVzaW5n -IHRoZSDigJxzYXZlIHByZXNldOKAnSBidXR0b24uIEEgbWFya2VyIHdpbGwgYXBwZWFyIG9uIHRoZSB6 -b29tIHN1cmZhY2UuIElmIHlvdSBtb3ZlIHRvIHRoZSB2aWNpbml0eSBvZiBhIHByZXNldCBtYXJrZXIs -IHRoZSBjcm9zc2hhaXJzIHdpbGwgc25hcCB0byB0aGUgcHJlc2V0LCBpdHMgZGV0YWlscyB3aWxsIGFw -cGVhciBhbmQgdGhhdCBzb3VuZCB3aWxsIHBsYXkuDeKAqFR3byBmaW5nZXIgcGluY2ggbW92ZW1lbnRz -IHpvb20gdGhlIHN1cmZhY2UganVzdCBhcyBpbiBhIG1hcHMgYXBwLiBUaGUgZnVydGhlciB5b3Ugem9v -bSBpbiwgdGhlIGxlc3MgdGhlIHNvdW5kIHdpbGwgY2hhbmdlIGFzIHlvdSBzY3JvbGwgYXJvdW5kLiBG -b3IgZXhhbXBsZSB0aGUgeWVsbG93IGxpbmVzIHRoYXQgYXBwZWFyIGF0IHRoZSBsYXJnZXN0IHNjYWxl -IGNvcnJlc3BvbmQgdG8gdGhlIHNsaWRlcnMganVtcGluZyA2NCB1bml0cy4gVGhlIHdoaXRlIGxpbmVz -IGF0IHRoZSBzbWFsbGVzdCBzY2FsZSBjb3JyZXNwb25kIHRvIGp1bXBzIG9mIG9uZSB1bml0LiBUaGVy -ZSBhcmUgNyBsZXZlbHM64oCo4oCoWWVsbG93ID0gNjQsIFRlYWwgPSAzMiwgUHVycGxlID0gMTYsIEdy -ZWVuID0gOCwgRGFyayBCbHVlID0gNCwgUmVkID0gMiwgV2hpdGUgPSAx4oCo4oCoTE9DS+KAqOKAqOKA -qElmIHlvdSBmaW5kIGEgc2VxdWVuY2UgeW91IGxpa2UgYnV0IHdhbnQgdG8gY2hhbmdlIHRoZSBzeW50 -aCBzb3VuZCB1c2UgdGhlICJMb2NrIFgiIGJ1dHRvbi4gVGhpcyB3aWxsIHByZXZlbnQgeW91IGFjY2lk -ZW50YWxseSBtb3ZpbmcgaW4gZnJvbSBsZWZ0IHRvIHJpZ2h0IGFuZCBtZXNzaW5nIHVwIHlvdXIgbm90 -ZSBwYXR0ZXJuLiBTaW1pbGFybHkgaWYgeW91IGZpbmQgYSBzeW50aCBzb3VuZCB0aGF0IHlvdSBsaWtl -LCBidXQgd2FudCB0byBjaGFuZ2UgdGhlIG5vdGUgc2VxdWVuY2UsIHVzZSB0aGUgIkxvY2sgWSIgYnV0 -dG9uLiDigKjigKjigKhFWFRSQSBGRUFUVVJFU+KAqOKAqEFmdGVyIHlvdSBjb21wbGV0ZSB0aGUgdGlt -ZWQgc2Vzc2lvbnMgYW5kIHRoZSBxdWVzdGlvbm5haXJlLCB5b3UgY2FuIHR1cm4gdGhlIHNsaWRlcnMg -YW5kIHRoZSB6b29tZXIgb24vb2ZmIHVzaW5nIHRoZSB0YWJzIGF0IHRoZSBib3R0b20gb2YgdGhlIHNj -cmVlbi4gVGhlc2UgZnVydGhlciBmZWF0dXJlcyB3aWxsIGJlIGVuYWJsZWQ64oCo4oCoV2hlbiB5b3Ug -aGF2ZSBmaW5pc2hlZCB0aGUgZXhwZXJpbWVudCwgYSAic21vb3RoIiBzd2l0Y2ggd2lsbCBhcHBlYXIu -IFRoaXMgd2lsbCBpbnRlcnBvbGF0ZSB0aGUgZ3JpZCBzbyB0aGF0IHRoZSBzbGlkZXJzIGNoYW5nZSBt -b3JlIHNtb290aGx5LiBOb3RlIHRoaXMgd2lsbCBicmVhayB0aGUgb25lIHRvIG9uZSBtYXBwaW5nIGJl -dHdlZW4gc2xpZGVycyBhbmQgc3VyZmFjZTogcHJldmlvdXNseSBzYXZlZCBwcmVzZXRzIHdpbGwgbm90 -IGFwcGVhciwgYW5kIGFueSBzYXZlZCBpbiB0aGlzIG1vZGUgd2lsbCB0ZW5kIHRvIGFwcGVhciBpbiBh -IHNsaWdodGx5IGRpZmZlcmVudCBwb3NpdGlvbiB3aGVuIHNtb290aCBpcyB0dXJuZWQgb2ZmLg3igKhN -SURJIENDIHZhbHVlcyAobnVtYmVycyAwLTkpIHdpbGwgYmUgc2VudCBmcm9tIHRoZSBzbGlkZXJzLCBv -biBjaGFubmVsIDcuIOKAqA0</bytes> +dWUgY2lyY2xlcy7igKjigKgNU2F2ZSBhbnkgc291bmRzIHRoYXQgeW91IGxpa2UgdXNpbmcgdGhlIOKA +nHNhdmUgcHJlc2V04oCdIGJ1dHRvbi4gQSBtYXJrZXIgd2lsbCBhcHBlYXIgb24gdGhlIHpvb20gc3Vy +ZmFjZS4gSWYgeW91IG1vdmUgdG8gdGhlIHZpY2luaXR5IG9mIGEgcHJlc2V0IG1hcmtlciwgdGhlIGNy +b3NzaGFpcnMgd2lsbCBzbmFwIHRvIHRoZSBwcmVzZXQsIGl0cyBkZXRhaWxzIHdpbGwgYXBwZWFyIGFu +ZCB0aGF0IHNvdW5kIHdpbGwgcGxheS4gVGFwIGEgcHJlc2V0IHBvaW50IHR3aWNlIGFuZCB5b3Ugd2ls +bCBzbW9vdGhseSBnbGlkZSB0byB0aGF0IHNvdW5kLg3igKhUd28gZmluZ2VyIHBpbmNoIG1vdmVtZW50 +cyB6b29tIHRoZSBzdXJmYWNlIGp1c3QgYXMgaW4gYSBtYXBzIGFwcC4gVGhlIGZ1cnRoZXIgeW91IHpv +b20gaW4sIHRoZSBsZXNzIHRoZSBzb3VuZCB3aWxsIGNoYW5nZSBhcyB5b3Ugc2Nyb2xsIGFyb3VuZC4g +Rm9yIGV4YW1wbGUgdGhlIHJlZCBsaW5lcyB0aGF0IGFwcGVhciBhdCB0aGUgbGFyZ2VzdCBzY2FsZSBj +b3JyZXNwb25kIHRvIHRoZSBzbGlkZXJzIGp1bXBpbmcgNjQgdW5pdHMuIFRoZSB3aGl0ZSBsaW5lcyBh +dCB0aGUgc21hbGxlc3Qgc2NhbGUgY29ycmVzcG9uZCB0byBqdW1wcyBvZiBvbmUgdW5pdC4gVGhlcmUg +YXJlIDcgbGV2ZWxzOuKAqOKAqFJlZCA9IDY0LCBPcmFuZ2UgPSAzMiwgWWVsbG93ID0gMTYsIEdyZWVu +ID0gOCwgQmx1ZSA9IDQsIFB1cnBsZSA9IDIsIFdoaXRlID0gMeKAqOKAqOKAqEVYVFJBIEZFQVRVUkVT +4oCo4oCoQWZ0ZXIgeW91IGNvbXBsZXRlIHRoZSB0aW1lZCBzZXNzaW9ucyBhbmQgdGhlIHF1ZXN0aW9u +bmFpcmUsIHlvdSBjYW4gdHVybiB0aGUgc2xpZGVycyBhbmQgdGhlIHpvb21lciBvbi9vZmYgdXNpbmcg +dGhlIHRhYnMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLiBUaGVzZSBmdXJ0aGVyIGZlYXR1cmVz +IHdpbGwgYmUgZW5hYmxlZDrigKjigKhXaGVuIHlvdSBoYXZlIGZpbmlzaGVkIHRoZSBleHBlcmltZW50 +LCBhICJzbW9vdGgiIHN3aXRjaCB3aWxsIGFwcGVhci4gVGhpcyB3aWxsIGludGVycG9sYXRlIHRoZSBn +cmlkIHNvIHRoYXQgdGhlIHNsaWRlcnMgY2hhbmdlIG1vcmUgc21vb3RobHkuIE5vdGUgdGhpcyB3aWxs +IGJyZWFrIHRoZSBvbmUgdG8gb25lIG1hcHBpbmcgYmV0d2VlbiBzbGlkZXJzIGFuZCBzdXJmYWNlOiBw +cmV2aW91c2x5IHNhdmVkIHByZXNldHMgY2Fubm90IGFwcGVhci4N4oCoTUlESSBDQyB2YWx1ZXMgKG51 +bWJlcnMgMC05KSB3aWxsIGJlIHNlbnQgZnJvbSB0aGUgc2xpZGVycywgb24gY2hhbm5lbCA3LiDigKgN +A</bytes> </object> <object class="NSColor" key="IBUITextColor"> <int key="NSColorSpace">1</int>
--- a/IntroViewController.xib Tue Apr 23 18:29:55 2013 +0100 +++ b/IntroViewController.xib Wed Apr 24 17:58:08 2013 +0100 @@ -42,6 +42,7 @@ <string key="NSFrame">{{326, 881}, {116, 44}}</string> <reference key="NSSuperview" ref="766721923"/> <reference key="NSWindow"/> + <reference key="NSNextKeyView"/> <string key="NSReuseIdentifierKey">_NS:9</string> <bool key="IBUIOpaque">NO</bool> <string key="targetRuntimeIdentifier">IBIPadFramework</string> @@ -88,45 +89,45 @@ <bytes key="NS.bytes">V2VsY29tZSB0byB0aGUgIlNvbmljIFpvb20iLiBUaGlzIGlzIGEgUXVlZW4gTWFyeSBVbml2ZXJzaXR5 IFBoRCByZXNlYXJjaCBwcm9qZWN0IGFpbWVkIGF0IGZpbmRpbmcgb3V0IGhvdyBwZW9wbGUgZXhwbG9y ZSBzb3VuZCBzeW50aGVzaXMgcGFyYW1ldGVycy4gDQ1JbiB0aGlzIGFwcCB0aGVyZSBhcmUganVzdCAx -MCBwYXJhbWV0ZXJzIOKAkyA1IGZvciB0aGUgbm90ZSBwYXR0ZXJuIGdlbmVyYXRvciBhbmQgNSBmb3Ig -YSBzb21ld2hhdCBiYXNpYyBGTS9zdWJ0cmFjdGl2ZSBzeW50aGVzaXplci4gSG93ZXZlciwgZXZlbiB3 -aXRoIG9ubHkgMTAgcGFyYW1ldGVycyB0aGUgYW1vdW50IG9mIGRpZmZlcmVudCBzb3VuZHMgdG8gZXhw -bG9yZSBpcyB2YXN0OiBpbiBmYWN0IHRoZXJlIGFyZSBqdXN0IG92ZXIgYSBiaWxsaW9uIHRyaWxsaW9u -IGRpc3RpbmN0IHNldHRpbmdzISBXZSBhaW0gdG8gbG9vayBhdCB3aGF0IHBhdGhzIHBlb3BsZSB0YWtl -IGluIHRoaXMgaHVnZSBzcGFjZSwgd2hhdCBwb2ludHMgdGhleSBsaWtlIGFuZCBkaXNsaWtlLCBhbmQg -dXNlIHRoZSBkYXRhIHRvIGNyZWF0ZSBzeW50aHMgdGhhdCBhcmUgZWFzaWVyIHRvIG5hdmlnYXRlLCBh -bmQgaG9wZWZ1bGx5IGVuY291cmFnZSBjcmVhdGl2aXR5Lg0NVGhlcmUgYXJlIHR3byBpbnRlcmZhY2Vz -IHByZXNlbnRlZCBoZXJlLiBUaGUgZmlyc3QgaXMgb25lIHlvdSB3aWxsIHByb2JhYmx5IGJlIHVzZWQg -dG8gaWYgeW91IGFyZSBhbiBlbGVjdHJvbmljIG11c2ljaWFuOiAxMCBzbGlkZXJzIGZvciBlYWNoIG9m -IHRoZSBwYXJhbWV0ZXJzLiBUaGUgc2Vjb25kIGlzIHNvbWV3aGF0IG5ldzogZXZlcnkgb25lIG9mIHRo -ZSBiaWxsaW9uIHRyaWxsaW9uIHBvaW50cyBoYXMgYmVlbiBtYXBwZWQgdG8gYSAyRCBzdXJmYWNlLiBC -dXQgYmFzaWNhbGx5LCB0aGUgZnVydGhlciB5b3UgdHJhdmVsIGFsb25nIHRoaXMgMkQgc3VyZmFjZSwg -dGhlIG1vcmUgZGlmZmVyZW50IHRoZSBzb3VuZCB3aWxsIGJlY29tZS4NDVVwIGRvd24gbW92ZW1lbnQg -Y29udHJvbHMgdGhlIHN5bnRoIHRpbWJyZSwgbGVmdCByaWdodCBjb250cm9scyB0aGUgc2VxdWVuY2Vy -LiBXaGVuIHlvdSBjbGljayDigJxzYXZlIHByZXNldOKAnSB5b3Ugd2lsbCBkcm9wIGEgcGluIG9udG8g -dGhlIHN1cmZhY2UsIGFuZCB5b3UgY2FuIHJldmlzaXQgdGhpcyBwb2ludCBhdCBhbnl0aW1lIGJ5IHNj -cm9sbGluZyB0byBpdC4gVGhpbmsgb2YgaXQgbGlrZSBhICJHb29nbGUgTWFwcyIgZm9yIHN5bnRoIHNv -dW5kcy4uLg0NWW91IGNhbiB1c2UgYSBwaW5jaCBnZXN0dXJlIHRvIHpvb20gaW4gYW5kIG91dCBvZiB0 -aGUgc3VyZmFjZS4gSW4gdGhpcyB3YXksIHlvdSBjYW4gZXhwbG9yZSB0aGUgIm5laWdoYm91cmhvb2Qi -IG9mIGEgcGFydGljdWxhciBzb3VuZC4gWm9vbWluZyBpbiB3aWxsIGVuYWJsZSB5b3UgdG8gZXhwbG9y -ZSBzbWFsbGVyIGxvY2FsaXRpZXMgb2YgdGhlIHNvdW5kIHNwYWNlLiBab29taW5nIG91dCB3aWxsIGdp -dmUgeW91IGEgYmlnZ2VyIHBlcnNwZWN0aXZlLCBidXQgb2YgY291cnNlIHRoZSB0cmFuc2l0aW9ucyB3 -aWxsIGJlY29tZSBtb3JlIHN1ZGRlbiBhbmQgcmFuZG9tIGFzIHlvdSBtb3ZlIGJpZ2dlciBkaXN0YW5j -ZXMuDQ1XaGF0IHdlIGFyZSBhc2tpbmcgeW91LCB0aGUgcGFydGljaXBhbnQsIHRvIGRvIGlzIHVzZSB0 -aGUgem9vbWVyLCB0aGUgc2xpZGVycyBhbmQgYSBjb21iaW5hdGlvbiBvZiBib3RoIGZvciA1IG1pbnV0 -ZXMgZWFjaCwgYW5kIHNhdmUgYW55IHNvdW5kcyB0aGF0IHlvdSBsaWtlLiBUaGUgaW50ZXJmYWNlcyB3 -aWxsIHN3YXAgYXV0b21hdGljYWxseS4gQWxzbyBjaGVjayBvdXQgdGhlICJyYW5kb21pc2UiIGFuZCAi -bG9jayIgYnV0dG9ucy4gQWZ0ZXIgdGhpcyBhIHNob3J0IHF1ZXN0aW9ubmFpcmUgd2lsbCBhcHBlYXIg -dGhhdCB3aWxsIGhlbHAgdXMgYXNzZXNzIHRoZSBpbnRlcmZhY2UgZnVydGhlci4gQWZ0ZXIgdGhhdCwg -cGxlYXNlIGZlZWwgZnJlZSB0byB1c2UgaXQgc29tZSBtb3JlOiB0aGUgbW9yZSBkYXRhIHdlIGdldCB0 -aGUgYmV0dGVyLiDigKjigKjigKhQTEVBU0UgTk9URTogWW91ciBhY3Rpb25zIHdpbGwgYmUgbG9nZ2Vk -LCBhbmQgc2VudCB0byBhIHNlY3VyZSBzZXJ2ZXIgaGVyZSBhdCBRdWVlbiBNYXJ5IFVuaXZlcnNpdHku -ICBIb3dldmVyIG5vIHBlcnNvbmFsIGRhdGEgKG5hbWUsIGVtYWlsIGV0Yy4pIHdpbGwgYmUgY29sbGVj -dGVkLCBhc3NvY2lhdGVkIHdpdGggdGhpcyBJRCBvciBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLiBJdCBp -cyBoaWdobHkgcmVjb21tZW5kZWQgdGhhdCB5b3UgYXJlIGNvbm5lY3RlZCB0byBXaUZpIGludGVybmV0 -IHdoaWxzdCB1c2luZyB0aGlzIEFwcCwgb3RoZXJ3aXNlIHRoZSBsb2cgZGF0YSB3aWxsIHRha2UgdXAg -c3BhY2Ugb24geW91ciBkZXZpY2UuDVRvIGNvbnNlbnQgdG8gdGhpcyBwbGVhc2UgcHJlc3MgIkFncmVl -IiBiZWxvdy4gVG8gZGVjbGluZSBqdXN0IGV4aXQgdGhlIGFwcC4NA</bytes> +MCBwYXJhbWV0ZXJzIGZvciBhIHNvbWV3aGF0IGJhc2ljIEZNL3N1YnRyYWN0aXZlIHN5bnRoZXNpemVy +LiBIb3dldmVyLCBldmVuIHdpdGggb25seSAxMCBwYXJhbWV0ZXJzIHRoZSBhbW91bnQgb2YgZGlmZmVy +ZW50IHNvdW5kcyB0byBleHBsb3JlIGlzIHZhc3Q6IGluIGZhY3QgdGhlcmUgYXJlIGp1c3Qgb3ZlciBh +IGJpbGxpb24gdHJpbGxpb24gZGlzdGluY3Qgc2V0dGluZ3MhIFdlIGFpbSB0byBsb29rIGF0IHdoYXQg +cGF0aHMgcGVvcGxlIHRha2UgaW4gdGhpcyBodWdlIHNwYWNlLCB3aGF0IHBvaW50cyB0aGV5IGxpa2Ug +YW5kIGRpc2xpa2UsIGFuZCB1c2UgdGhlIGRhdGEgdG8gY3JlYXRlIHN5bnRocyB0aGF0IGFyZSBlYXNp +ZXIgdG8gbmF2aWdhdGUsIGFuZCBob3BlZnVsbHkgZW5jb3VyYWdlIGNyZWF0aXZpdHkuDQ1UaGVyZSBh +cmUgdHdvIGludGVyZmFjZXMgcHJlc2VudGVkIGhlcmUuIFRoZSBmaXJzdCBpcyBvbmUgeW91IHdpbGwg +cHJvYmFibHkgYmUgdXNlZCB0byBpZiB5b3UgYXJlIGFuIGVsZWN0cm9uaWMgbXVzaWNpYW46IDEwIHNs +aWRlcnMgZm9yIGVhY2ggb2YgdGhlIHBhcmFtZXRlcnMuIFRoZSBzZWNvbmQgaXMgc29tZXdoYXQgbmV3 +OiBldmVyeSBvbmUgb2YgdGhlIGJpbGxpb24gdHJpbGxpb24gcG9pbnRzIGhhcyBiZWVuIG1hcHBlZCB0 +byBhIDJEIHN1cmZhY2UuIEJ1dCBiYXNpY2FsbHksIHRoZSBmdXJ0aGVyIHlvdSB0cmF2ZWwgYWxvbmcg +dGhpcyAyRCBzdXJmYWNlLCB0aGUgbW9yZSBkaWZmZXJlbnQgdGhlIHNvdW5kIHdpbGwgYmVjb21lLuKA +qA0gV2hlbiB5b3UgY2xpY2sg4oCcc2F2ZSBwcmVzZXTigJ0geW91IHdpbGwgZHJvcCBhIHBpbiBvbnRv +IHRoZSBzdXJmYWNlLCBhbmQgeW91IGNhbiByZXZpc2l0IHRoaXMgcG9pbnQgYXQgYW55dGltZSBieSBz +Y3JvbGxpbmcgdG8gaXQuIFRoaW5rIG9mIGl0IGxpa2UgYSAiR29vZ2xlIE1hcHMiIGZvciBzeW50aCBz +b3VuZHMuLi4NDVlvdSBjYW4gdXNlIGEgcGluY2ggZ2VzdHVyZSB0byB6b29tIGluIGFuZCBvdXQgb2Yg +dGhlIHN1cmZhY2UuIEluIHRoaXMgd2F5LCB5b3UgY2FuIGV4cGxvcmUgdGhlICJuZWlnaGJvdXJob29k +IiBvZiBhIHBhcnRpY3VsYXIgc291bmQuIFpvb21pbmcgaW4gd2lsbCBlbmFibGUgeW91IHRvIGV4cGxv +cmUgc21hbGxlciBsb2NhbGl0aWVzIG9mIHRoZSBzb3VuZCBzcGFjZS4gWm9vbWluZyBvdXQgd2lsbCBn +aXZlIHlvdSBhIGJpZ2dlciBwZXJzcGVjdGl2ZSwgYnV0IG9mIGNvdXJzZSB0aGUgdHJhbnNpdGlvbnMg +d2lsbCBiZWNvbWUgbW9yZSBzdWRkZW4gYW5kIHJhbmRvbSBhcyB5b3UgbW92ZSBiaWdnZXIgZGlzdGFu +Y2VzLg0NV2hhdCB3ZSBhcmUgYXNraW5nIHlvdSwgdGhlIHBhcnRpY2lwYW50LCB0byBkbyBpcyB1c2Ug +dGhlIHpvb21lciwgdGhlIHNsaWRlcnMgYW5kIGEgY29tYmluYXRpb24gb2YgYm90aCBmb3IgNSBtaW51 +dGVzIGVhY2gsIGFuZCBzYXZlIGFueSBzb3VuZHMgdGhhdCB5b3UgbGlrZS4gVGhlIGludGVyZmFjZXMg +d2lsbCBzd2FwIGF1dG9tYXRpY2FsbHkuIEFsc28gY2hlY2sgb3V0IHRoZSAicmFuZG9taXNlIiBhbmQg +ImxvY2siIGJ1dHRvbnMuIEFmdGVyIHRoaXMgYSBzaG9ydCBxdWVzdGlvbm5haXJlIHdpbGwgYXBwZWFy +IHRoYXQgd2lsbCBoZWxwIHVzIGFzc2VzcyB0aGUgaW50ZXJmYWNlIGZ1cnRoZXIuIEFmdGVyIHRoYXQs +IHBsZWFzZSBmZWVsIGZyZWUgdG8gdXNlIGl0IHNvbWUgbW9yZTogdGhlIG1vcmUgZGF0YSB3ZSBnZXQg +dGhlIGJldHRlci4gQXMgYSBib251cyBzb21lIGV4dHJhIGZlYXR1cmVzIHdpbGwgYmUgdW5sb2NrZWQg +d2hlbiB5b3UgY29tcGxldGUgdGhlIHF1ZXN0aW9ubmFpcmU6IE1JREkgb3V0IGFuZCBzbW9vdGggaW50 +ZXJwb2xhdGlvbiBtb2RlLuKAqOKAqOKAqFBsZWFzZSBub3RlOiBZb3VyIGFjdGlvbnMgd2lsbCBiZSBs +b2dnZWQsIGFuZCBzZW50IHRvIGEgc2VjdXJlIHNlcnZlciBoZXJlIGF0IFF1ZWVuIE1hcnkgVW5pdmVy +c2l0eS4gIEhvd2V2ZXIgbm8gcGVyc29uYWwgZGF0YSAobmFtZSwgZW1haWwgZXRjLikgd2lsbCBiZSBj +b2xsZWN0ZWQsIGFzc29jaWF0ZWQgd2l0aCB0aGlzIElEIG9yIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2Uu +IEl0IGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0aGF0IHlvdSBhcmUgY29ubmVjdGVkIHRvIFdpRmkgaW50 +ZXJuZXQgd2hpbHN0IHVzaW5nIHRoaXMgQXBwLCBvdGhlcndpc2UgdGhlIGxvZyBkYXRhIHdpbGwgdGFr +ZSB1cCBzcGFjZSBvbiB5b3VyIGRldmljZS4NVG8gY29uc2VudCB0byB0aGlzIHBsZWFzZSBwcmVzcyAi +QWdyZWUiIGJlbG93LiBUbyBkZWNsaW5lIGp1c3QgZXhpdCB0aGUgYXBwLg0</bytes> </object> <object class="NSColor" key="IBUITextColor"> <int key="NSColorSpace">1</int>
--- a/SliderViewController.mm Tue Apr 23 18:29:55 2013 +0100 +++ b/SliderViewController.mm Wed Apr 24 17:58:08 2013 +0100 @@ -112,8 +112,8 @@ nil]; */ self.paramNames = [NSArray arrayWithObjects: - @"Amp Env",@"Waveform",@"FM amount",@"FM frequency",@"Reverb", - @"Filter Type",@"Filter Cut off",@"Filter Resonance",@"Filter Env Shape",@"Filt Env Amount", + @"Amp Env Shape",@"Waveform (Sin,Saw,Pulse)",@"FM amount",@"FM frequency",@"Reverb", + @"Filter Type (LP,BP,HP)",@"Filter Cut off",@"Filter Resonance",@"Filter Env Shape",@"Filt Env Amount", nil]; } @end
--- a/TopButtonViewController.h Tue Apr 23 18:29:55 2013 +0100 +++ b/TopButtonViewController.h Wed Apr 24 17:58:08 2013 +0100 @@ -23,6 +23,7 @@ @property (retain, strong,nonatomic) IBOutlet UIBarButtonItem *newUserButton; @property (retain, nonatomic) IBOutlet UIBarButtonItem *lockXButton; @property (retain, nonatomic) IBOutlet UIBarButtonItem *lockYButton; +@property (retain, nonatomic) IBOutlet UILabel *seqNumText; - (IBAction)nextSequence:(id)sender;
--- a/TopButtonViewController.mm Tue Apr 23 18:29:55 2013 +0100 +++ b/TopButtonViewController.mm Wed Apr 24 17:58:08 2013 +0100 @@ -72,6 +72,7 @@ ((testApp *)self.theOFAppRef)->seqStartStop(true); self.playButton.enabled = false; self.pauseButton.enabled = true; + self.seqNumText.text = [NSString stringWithFormat:@"%d", ((testApp *)self.theOFAppRef)->currentSequence]; } - (IBAction)pausePressed:(id)sender { @@ -131,6 +132,8 @@ - (IBAction)randomise:(id)sender { ((testApp *)self.theOFAppRef)->randomise(); + int seqNum = ((testApp *)self.theOFAppRef)->nextSequence(); + self.seqNumText.text = [NSString stringWithFormat:@"%d", seqNum]; } - (IBAction)helpPressed:(id)sender { @@ -143,7 +146,8 @@ } - (IBAction)nextSequence:(id)sender { - ((testApp *)self.theOFAppRef)->nextSequence(); + int seqNum = ((testApp *)self.theOFAppRef)->nextSequence(); + self.seqNumText.text = [NSString stringWithFormat:@"%d", seqNum]; } - (IBAction)smoothSwitchChanged:(id)sender { @@ -179,6 +183,7 @@ [_savePresetButton release]; [_lockXButton release]; [_lockYButton release]; + [_seqNumText release]; [super dealloc]; } - (void)viewDidUnload { @@ -192,6 +197,7 @@ [self setSavePresetButton:nil]; [self setLockXButton:nil]; [self setLockYButton:nil]; + [self setSeqNumText:nil]; [super viewDidUnload]; } @end
--- a/TopButtonViewController.xib Tue Apr 23 18:29:55 2013 +0100 +++ b/TopButtonViewController.xib Wed Apr 24 17:58:08 2013 +0100 @@ -100,10 +100,11 @@ <reference key="IBUIToolbar" ref="358683122"/> <int key="IBUISystemItemIdentifier">20</int> </object> - <object class="IBUIBarButtonItem" id="528026433"> + <object class="IBUIBarButtonItem" id="83739751"> <string key="targetRuntimeIdentifier">IBIPadFramework</string> + <float key="IBUIWidth">42</float> <reference key="IBUIToolbar" ref="358683122"/> - <int key="IBUISystemItemIdentifier">5</int> + <int key="IBUISystemItemIdentifier">6</int> </object> <object class="IBUIBarButtonItem" id="180077124"> <string key="IBUITitle">Random</string> @@ -155,6 +156,7 @@ <string key="NSFrame">{{59, 11}, {59, 21}}</string> <reference key="NSSuperview" ref="766721923"/> <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="884250103"/> <string key="NSReuseIdentifierKey">_NS:9</string> <bool key="IBUIOpaque">NO</bool> <bool key="IBUIClipsSubviews">YES</bool> @@ -162,24 +164,45 @@ <bool key="IBUIUserInteractionEnabled">NO</bool> <string key="targetRuntimeIdentifier">IBIPadFramework</string> <string key="IBUIText">Smooth</string> - <object class="NSColor" key="IBUITextColor"> + <object class="NSColor" key="IBUITextColor" id="872514910"> <int key="NSColorSpace">1</int> <bytes key="NSRGB">MCAwIDAAA</bytes> <string key="IBUIColorCocoaTouchKeyPath">darkTextColor</string> </object> <nil key="IBUIHighlightedColor"/> <int key="IBUIBaselineAdjustment">0</int> - <object class="IBUIFontDescription" key="IBUIFontDescription"> + <object class="IBUIFontDescription" key="IBUIFontDescription" id="1069606170"> <int key="type">1</int> <double key="pointSize">17</double> </object> - <object class="NSFont" key="IBUIFont"> + <object class="NSFont" key="IBUIFont" id="1061524627"> <string key="NSName">Helvetica</string> <double key="NSSize">17</double> <int key="NSfFlags">16</int> </object> <bool key="IBUIAdjustsFontSizeToFit">NO</bool> </object> + <object class="IBUILabel" id="884250103"> + <reference key="NSNextResponder" ref="766721923"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{337, 11}, {42, 21}}</string> + <reference key="NSSuperview" ref="766721923"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView"/> + <string key="NSReuseIdentifierKey">_NS:9</string> + <bool key="IBUIOpaque">NO</bool> + <bool key="IBUIClipsSubviews">YES</bool> + <int key="IBUIContentMode">7</int> + <bool key="IBUIUserInteractionEnabled">NO</bool> + <string key="targetRuntimeIdentifier">IBIPadFramework</string> + <string key="IBUIText">Num.</string> + <reference key="IBUITextColor" ref="872514910"/> + <nil key="IBUIHighlightedColor"/> + <int key="IBUIBaselineAdjustment">0</int> + <reference key="IBUIFontDescription" ref="1069606170"/> + <reference key="IBUIFont" ref="1061524627"/> + <bool key="IBUIAdjustsFontSizeToFit">NO</bool> + </object> </array> <string key="NSFrameSize">{768, 44}</string> <reference key="NSSuperview"/> @@ -299,6 +322,14 @@ <int key="connectionID">57</int> </object> <object class="IBConnectionRecord"> + <object class="IBCocoaTouchOutletConnection" key="connection"> + <string key="label">seqNumText</string> + <reference key="source" ref="841351856"/> + <reference key="destination" ref="884250103"/> + </object> + <int key="connectionID">60</int> + </object> + <object class="IBConnectionRecord"> <object class="IBCocoaTouchEventConnection" key="connection"> <string key="label">savePressed:</string> <reference key="source" ref="996249183"/> @@ -411,8 +442,9 @@ <int key="objectID">2</int> <reference key="object" ref="766721923"/> <array class="NSMutableArray" key="children"> + <reference ref="459236656"/> <reference ref="358683122"/> - <reference ref="459236656"/> + <reference ref="884250103"/> </array> <reference key="parent" ref="0"/> </object> @@ -421,7 +453,6 @@ <reference key="object" ref="358683122"/> <array class="NSMutableArray" key="children"> <reference ref="680653375"/> - <reference ref="528026433"/> <reference ref="924591997"/> <reference ref="379344923"/> <reference ref="898331149"/> @@ -433,6 +464,7 @@ <reference ref="1056681435"/> <reference ref="1052071507"/> <reference ref="101764627"/> + <reference ref="83739751"/> </array> <reference key="parent" ref="766721923"/> </object> @@ -467,11 +499,6 @@ <reference key="parent" ref="358683122"/> </object> <object class="IBObjectRecord"> - <int key="objectID">29</int> - <reference key="object" ref="528026433"/> - <reference key="parent" ref="358683122"/> - </object> - <object class="IBObjectRecord"> <int key="objectID">30</int> <reference key="object" ref="180077124"/> <reference key="parent" ref="358683122"/> @@ -524,6 +551,16 @@ <reference key="object" ref="101764627"/> <reference key="parent" ref="358683122"/> </object> + <object class="IBObjectRecord"> + <int key="objectID">58</int> + <reference key="object" ref="884250103"/> + <reference key="parent" ref="766721923"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">59</int> + <reference key="object" ref="83739751"/> + <reference key="parent" ref="358683122"/> + </object> </array> </object> <dictionary class="NSMutableDictionary" key="flattenedProperties"> @@ -537,7 +574,6 @@ <string key="16.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string key="2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string key="28.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <string key="29.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string key="30.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string key="33.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string key="35.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> @@ -549,13 +585,15 @@ <string key="5.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string key="54.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string key="55.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> + <string key="58.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> + <string key="59.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string key="9.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> </dictionary> <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/> <nil key="activeLocalization"/> <dictionary class="NSMutableDictionary" key="localizations"/> <nil key="sourceID"/> - <int key="maxID">57</int> + <int key="maxID">60</int> </object> <object class="IBClassDescriber" key="IBDocument.Classes"> <array class="NSMutableArray" key="referencedPartialClassDescriptions"> @@ -634,6 +672,7 @@ <string key="playButton">UIBarButtonItem</string> <string key="qButton">UIBarButtonItem</string> <string key="savePresetButton">UIBarButtonItem</string> + <string key="seqNumText">UILabel</string> <string key="smoothSwitch">UIBarButtonItem</string> <string key="smoothText">UILabel</string> <string key="smoothToggle">UISwitch</string> @@ -667,6 +706,10 @@ <string key="name">savePresetButton</string> <string key="candidateClassName">UIBarButtonItem</string> </object> + <object class="IBToOneOutletInfo" key="seqNumText"> + <string key="name">seqNumText</string> + <string key="candidateClassName">UILabel</string> + </object> <object class="IBToOneOutletInfo" key="smoothSwitch"> <string key="name">smoothSwitch</string> <string key="candidateClassName">UIBarButtonItem</string>
--- a/grid.h Tue Apr 23 18:29:55 2013 +0100 +++ b/grid.h Wed Apr 24 17:58:08 2013 +0100 @@ -16,6 +16,7 @@ #include "presetManager.h" #include "hilbert.h" +#define PRESET_INTERP_TIME 90 // frames using namespace std; class Preset; @@ -23,7 +24,7 @@ public: bool snapped; - bool automatedMovement; + bool automatedMovementInProgress; bool presetWasTapped; Hilbert hilbert; @@ -33,6 +34,8 @@ void move(TwoVector moveP); // shift view by pixels void zoom(float factor); + void animateTo(TwoVector point); + void tap(TwoVector pixel); // user has tapped a point typedef enum{NO_INTERPOLATION, INTERPOLATE_GRID, INTERPOLATE_PRESET} interpolateModeType; @@ -41,7 +44,7 @@ void shiftCentreToSnapped(); void draw(); - void update(); // change according to zoom + void update(); // only called if animating double interpLevel; int smallestGridSpacing; // number of pixels when small grid dissappears from view vector<int> getParams(); @@ -51,6 +54,10 @@ void setMaxZoom(); void setInterpolation(interpolateModeType mode); + void startInterpolatedAnimation(TwoVector endCoordinate); + + + Preset * getClosestPresetOf(vector<Preset *> closePresets); void interpolateTo(TwoVector coord); // HILBERT now does each coord for this @@ -68,6 +75,12 @@ // experimental void changeNumberOfParamsPerDim(); private: + int framesRemaining; + + vector<int> startInterpParams; + vector<int> endInterpParams; + TwoVector endInterpCoord; + void drawGridLines(); double scale; // surface units per pixel GUI @@ -108,7 +121,7 @@ void setCoord(TwoVector coord); void drawCrossHairs(); - + void continueInterpolatedAnimation(); double calculateInterpolateLevel(); vector<int> interpVector(vector<int> upper, vector<int> lower, float frac);
--- a/grid.mm Tue Apr 23 18:29:55 2013 +0100 +++ b/grid.mm Wed Apr 24 17:58:08 2013 +0100 @@ -428,7 +428,9 @@ } //-------------------------------------------------------------- void Grid::update(){ // ? - + if(automatedMovementInProgress){ + continueInterpolatedAnimation(); + } } //-------------------------------------------------------------- @@ -449,9 +451,9 @@ cout << "DOUBLE tapped preset: " << tappedPreset->name << "\n"; //TODO interpolate to this! exciting! - setCoord(tappedPreset->coordinates); // should just go there and do all the calcs - ((testApp *)ofGetAppPtr())->setAllGUISliders(getParams()); - eventLogger.logEvent(PRESET_DOUBLE_TAPPED, getCoord(), scale); + + startInterpolatedAnimation(tappedPreset->coordinates); + eventLogger.logEvent(PRESET_DOUBLE_TAPPED, tappedPreset->coordinates, scale); } @@ -461,7 +463,51 @@ // nothing ? } } +//----------------- +void Grid::startInterpolatedAnimation(TwoVector endCoordinate){ + automatedMovementInProgress = true; + + framesRemaining = PRESET_INTERP_TIME; + + startInterpParams = calculateParamsFromCoord(centre); + endInterpParams = calculateParamsFromCoord(endCoordinate); + endInterpCoord = endCoordinate; +} +//----------------- +void Grid::continueInterpolatedAnimation(){ + + framesRemaining--; + if(framesRemaining <= 0){ + //finished + // set position to preset + centre = endInterpCoord; + + //will do snapping and checking + viewWasChanged(); + // update all the sliders and shit + + ((testApp *)ofGetAppPtr())->setAllGUISliders(getParams()); + // set flag in testapp + automatedMovementInProgress = false; + return; + } + // calculate next step + TwoVector moveVector = (endInterpCoord - centre)*(1/(float)framesRemaining); + + centre = centre + moveVector; + topLeft.x = centre.x - size.x/2; + topLeft.y = centre.y - size.y/2; + + float frac = (float)framesRemaining/(float)PRESET_INTERP_TIME; + + vector<int> currentParams = interpVector( startInterpParams,endInterpParams, frac); + + ((testApp *)ofGetAppPtr())->setAllGUISliders(currentParams); + + eventLogger.logEvent(SCROLL,getCoord(),getScale()); + +} //-------------------------------------------------------------- void Grid::move(TwoVector moveP){ @@ -479,6 +525,17 @@ } //-------------------------------------------------------------- +// move the grid to a point (coordinate rather than pixel value) without triggering calculations +void Grid::animateTo(TwoVector point){ + + centre = point; + topLeft.x = centre.x - size.x/2; + topLeft.y = centre.y - size.y/2; + + eventLogger.logEvent(SCROLL, getCoord(), scale); // TODO not *really* a user scroll... + +} +//-------------------------------------------------------------- void Grid::zoom(float factor){ if(snapped)centre = (centre + snapCentre)*0.5; // clunky @@ -515,7 +572,8 @@ // TODO just in case we're freezing something // snapping actually change centre centre = snapCentre; - + topLeft.x = centre.x - size.x/2; + topLeft.y = centre.y - size.y/2; } //-------------------------------------------------------------- Preset * Grid::getClosestPresetOf(vector<Preset *> somepresets){
--- a/presetManager.h Tue Apr 23 18:29:55 2013 +0100 +++ b/presetManager.h Wed Apr 24 17:58:08 2013 +0100 @@ -15,6 +15,7 @@ #define PRESET_FILENAME "presets.json" #define PILOT_PRESET_FILENAME "pilot_presets.json" +#define FACTORY_PRESET_FILENAME "factory_presets.json" #include <iostream> #include <string> @@ -40,11 +41,11 @@ vector<ofColor> pixVals; // hmmm TwoVector coordinates; // position on grid vector<int> params; // actual parameters??? - int whichSequence; - // not so important - not uploaded + unsigned int whichSequence; // the sequence number that this preset was saved with. + // from save button press - Preset(TwoVector acoord, string aname,int aID, string un, unsigned int uid){ + Preset(TwoVector acoord, string aname,int aID, string un, unsigned int uid, unsigned int sequence){ coordinates = acoord; name = aname; creatorUserName = un; @@ -54,7 +55,7 @@ cout << "Create preset sys time: " << creationTime << "\n"; pixVals = makePresetPicture(coordinates); - //whichSequence = seq; + whichSequence = sequence; }; // from json value @@ -66,16 +67,17 @@ coordinates.x = jval["coordinates"].get("x", 0.0).asFloat(); coordinates.y = jval["coordinates"].get("y", 0.0).asFloat(); creationTime = jval["creationTime"].asLargestInt(); // dodgy? + whichSequence = jval["whichSequence"].asUInt(); pixVals = makePresetPicture(coordinates); - } + }; // from preset file load - Preset(TwoVector acoord, string aname,int aID, long long stime){ + Preset(TwoVector acoord, string aname,int aID, long long stime, unsigned int seq){ coordinates = acoord; name = aname; creationTime = stime; pixVals = makePresetPicture(coordinates); - + whichSequence = seq; }; // from download request?? @@ -90,7 +92,7 @@ NSString *dateText = [ocdate description]; const char *date_str = [dateText cStringUsingEncoding:NSASCIIStringEncoding]; stringstream ss; - ss << "Name: \t" << name << "\nCreation time: \t" << date_str << "\nCreator: \t" << creatorUserName << '\n'; + ss << "Name: \t" << name << "\nCreation time: \t" << date_str << "\nCreator: \t" << creatorUserName << '\n' << "\nSequence: \t" << whichSequence << '\n'; return ss.str(); } @@ -109,8 +111,7 @@ vector<Preset> thePresets; int addPreset(string name); - int loadPreset(const TwoVector coord, const string name, long long stime); - + TwoVector recallPreset(int presetID); // by name ? id? TwoVector recallPreset(string name); // by name ? id? vector<Preset *> getPresetsInRange(TwoVector min, TwoVector max); @@ -127,43 +128,5 @@ void saveSessionToFile(string userName); }; - -//--------------------------------------------------------------------------- -// this is the function that 'saves' a single preset as formatted text -// replaced with presetToJson -inline ostream& operator<<(ostream & os, const Preset& p){ - os.setf(ios_base::fixed,ios_base::floatfield); - os.precision(1); - - // change this to JSON - - os << p.creationTime << p.coordinates.x << ',' << p.coordinates.y << '\n'; - - return os; -} - -//--------------------------------------------------------------------------- -// this is the function that 'reads' all presets as formatted text - // replaced with jsonFromPreset or somesuch - inline istream& operator>>(istream & is, PresetManager& p) - { - //um - string pname = "BLANK"; - char delim; - double px, py; - long long stime; - - - is.setf(ios_base::fixed,ios_base::floatfield); - is.precision(1); - - is >> stime >> delim >> px >> delim >> py; - if(!is){ - return(is); - } - TwoVector pcoord(px,py); - p.loadPreset(pcoord, pname, stime); - return(is); - } #endif /* defined(__oscSenderExample__presetManager__) */
--- a/presetManager.mm Tue Apr 23 18:29:55 2013 +0100 +++ b/presetManager.mm Wed Apr 24 17:58:08 2013 +0100 @@ -86,6 +86,7 @@ presetVal["name"] = name; presetVal["coordinates"]["x"] = coordinates.x; presetVal["coordinates"]["y"] = coordinates.y; + presetVal["whichSequence"] = whichSequence; return presetVal; @@ -205,7 +206,7 @@ TwoVector coord = theGridView.getCoordForPresetSave(); - thePresets.push_back(Preset(coord, name,nextID, eventLogger.userName, eventLogger.deviceID)); + thePresets.push_back(Preset(coord, name,nextID, eventLogger.userName, eventLogger.deviceID, ((testApp*)ofGetAppPtr())->currentSequence)); eventLogger.logEvent(SAVE_PRESET, coord); // poke grid view to get it to show details theGridView.snapCheck(); @@ -214,14 +215,6 @@ } //--------------------------------------------------------------------------- - -int PresetManager::loadPreset(const TwoVector coord, const string name, long long stime){ - thePresets.push_back(Preset(coord, name,nextID, stime)); - - // if ok - return nextID++; -} -//--------------------------------------------------------------------------- vector<Preset *> PresetManager::getPresetsInRange(const TwoVector min, const TwoVector max){ //return all the coordinates. oh and names (displayed at certain scales?). @@ -261,7 +254,7 @@ string fname = ofxiPhoneGetDocumentsDirectory() + PRESET_FILENAME; readJsonToPresets(fname); - string fullpath = ofFilePath::getAbsolutePath(ofToDataPath(PILOT_PRESET_FILENAME)); + string fullpath = ofFilePath::getAbsolutePath(ofToDataPath(FACTORY_PRESET_FILENAME)); string file = ofFilePath::getFileName(fullpath); string folder = ofFilePath::getEnclosingDirectory(fullpath);
--- a/testApp.h Tue Apr 23 18:29:55 2013 +0100 +++ b/testApp.h Wed Apr 24 17:58:08 2013 +0100 @@ -44,8 +44,10 @@ bool sendMIDIAndOSC; int midiChannel; int midiOffset; - + bool animatingGrid; + bool allowAnimation; interfaceType whichInterfaceShowing; + interfaceType previousInterface; BottomTabViewController *bottomTabViewController; UsernameAlertViewController *usernameAlertViewController; HelpViewController *helpViewController; @@ -96,7 +98,6 @@ void initialiseGUIs(); void initialiseMIDI(); - float getWidth(); float getHeight(); @@ -139,7 +140,7 @@ // shortcut function for testing void justStart(); void loadSequences(); - void nextSequence(); + int nextSequence(); void setupBottomGui(); void bottomGuiEvent();
--- a/testApp.mm Tue Apr 23 18:29:55 2013 +0100 +++ b/testApp.mm Wed Apr 24 17:58:08 2013 +0100 @@ -12,6 +12,8 @@ const string sliderParamNames[10] = {"Transpose", "1/4 note","1/6 note","1/7 note","1/8 note","Waveform", "Filter Type","Filter Freq", "Envelope","FM amt"}; //const vector<const string> v(ra[0],ra[1]); +// really GUI and all that stuff should be somewhere else + //-------------------------------------------------------------- void testApp::setup(){ @@ -24,6 +26,12 @@ int ticksPerBuffer = 8; // 8 * 64 = buffer len of 512 core.setup(2, 1, 44100, ticksPerBuffer); + // send to PD + List toPD; + toPD.addSymbol("smoothing"); + toPD.addFloat(70); // rounding here?? + core.pd.sendList("fromOF", toPD); + //cout << ctrlName[i] << "sending" << ctrlout[i] << "\n"; // setup OF sound stream ofSoundStreamSetup(2, 1, this, 44100, ofxPd::blockSize()*ticksPerBuffer, 3); @@ -43,10 +51,11 @@ // now do things that will affect the start up state of the app - if(true){ - // if(eventLogger.questionnaireCompleted){ // then we go into do-what-you-like mode + //if(true){ + if(eventLogger.questionnaireCompleted){ // then we go into do-what-you-like mode freeUseMode(); + randomise(); }else{ // then we're in timed session mode showIntro(); @@ -62,9 +71,10 @@ //DeviceID3523537000 void testApp::initialiseVariables(){ + animatingGrid = false; paused = true; sendMIDIAndOSC = false; - + allowAnimation = false; ofBackground( 0, 0, 0 ); ofEnableAlphaBlending(); currentSequence = 0; @@ -328,6 +338,7 @@ [topButtonViewController enableSmoothSwitch:(id)this]; sendMIDIAndOSC = true; + allowAnimation = true; } //-------------------------------------------------------------- void testApp::setInterp(int state){ @@ -365,7 +376,7 @@ eventLogger.consentGiven = true; // // clear presets? - presetManager.clearAll(); + //presetManager.clearAll(); // show username prompt [usernameAlertViewController showUserNamePrompt]; // reset top buttons @@ -493,6 +504,9 @@ void testApp::setAllGUISliders(vector<int> vals){ // an update caused by zoomer view being moved + // can be called by theGridView or testApp + // casues PD and midi to be sent + for(int i = 0; i<NUM_PARAMS;i++){ //sliders[i]->setValue(vals[i]); sliderVals[i] = vals[i]; @@ -528,24 +542,27 @@ } //-------------------------------------------------------------- void testApp::showHelp(){ + previousInterface = whichInterfaceShowing; whichInterfaceShowing = HELP; seqStartStop(false); [topButtonViewController pausePressed:(id)this]; helpViewController.view.hidden = NO; eventLogger.logEvent(HELP_PRESSED); + } void testApp::helpHidden(){ - whichInterfaceShowing = BOTH; + whichInterfaceShowing = previousInterface; // start seq? } //-------------------------------------------------------------- -void testApp::nextSequence(){ +int testApp::nextSequence(){ currentSequence++; if(currentSequence >= sequences.size()){ currentSequence = 0; } sendParametersToPD(); + return currentSequence; } //-------------------------------------------------------------- //-------------------------------------------------------------- @@ -685,6 +702,11 @@ if(paused) return; + if(theGridView.automatedMovementInProgress){ + theGridView.update(); + return; + } + if(ofxiPhoneExternalDisplay::isExternalScreenConnected()){ if(!ofxiPhoneExternalDisplay::isMirroring()){ ofxiPhoneExternalDisplay::mirrorOn(); @@ -692,6 +714,10 @@ } } + if(animatingGrid){ + // theGrid + + } // continiue to move or zoom at velocity, unless snapped if (numActiveTouches == 0){ // no touches, use momentum @@ -731,7 +757,6 @@ } } - //-------------------------------------------------------------- void testApp::draw(){ @@ -760,7 +785,10 @@ //-------------------------------------------------------------- void testApp::touchDown(ofTouchEventArgs &touch){ - + if(theGridView.automatedMovementInProgress) return; + if(whichInterfaceShowing == SLIDERS){ + return; + } numActiveTouches++; preventingMovePostScroll = false; tapFlag = false; // unless touch 0 @@ -793,6 +821,11 @@ //-------------------------------------------------------------- void testApp::touchMoved(ofTouchEventArgs &touch){ + if(theGridView.automatedMovementInProgress) return; + if(whichInterfaceShowing == SLIDERS){ + return; + } + tapFlag = false; // which one? keep track of each touch point if(touch.id == 0){ @@ -817,6 +850,10 @@ //-------------------------------------------------------------- void testApp::touchUp(ofTouchEventArgs &touch){ + if(theGridView.automatedMovementInProgress) return; + if(whichInterfaceShowing == SLIDERS){ + return; + } if(numActiveTouches > 0) numActiveTouches--; // dirty preventingMovePostScroll = false; // TODO check if in gui area!!! @@ -828,6 +865,7 @@ if(tapFlag){ cout << "TAP!!\n"; // look for close preset + theGridView.tap(TwoVector(touch.x,touch.y)); } tapFlag = false;