changeset 43:b91a1859829a

used UIkit sliders
author Robert Tubb <rt300@eecs.qmul.ac.uk>
date Fri, 19 Apr 2013 18:50:04 +0100
parents 3d627dce8bf0
children a1e75b94c505
files AppCore.mm QuestionnaireViewController.mm SliderViewController.h SliderViewController.mm SliderViewController.xib eventLogger.h grid.h grid.mm hilbert.cpp hilbert.h presetManager.mm rot_rules.h testApp.h testApp.mm
diffstat 14 files changed, 436 insertions(+), 683 deletions(-) [+]
line wrap: on
line diff
--- a/AppCore.mm	Wed Apr 17 13:44:05 2013 +0100
+++ b/AppCore.mm	Fri Apr 19 18:50:04 2013 +0100
@@ -25,7 +25,6 @@
 		ofLog(OF_LOG_ERROR, "Could not init pd");
 		OF_EXIT_APP(1);
 	}
-    
     midiChan = 1; // midi channels are 1-16
 	
 	// subscribe to receive source names
--- a/QuestionnaireViewController.mm	Wed Apr 17 13:44:05 2013 +0100
+++ b/QuestionnaireViewController.mm	Fri Apr 19 18:50:04 2013 +0100
@@ -30,7 +30,7 @@
 
 @synthesize picker;
 @synthesize nextButton = _nextButton;
-@synthesize questionArray;
+@synthesize questionArray = _questionArray;
 
 
 //----------------------------------------------------------------
@@ -77,6 +77,7 @@
 - (void)dealloc {
 
     [_questionText release];
+    [_questionArray release];
     [_titleText release];
     [_finishButton release];
     [_nextButton release];
@@ -111,8 +112,8 @@
 
     Question *q;
     
-    for(int i=0;i<[questionArray count];i++){
-        q = [questionArray objectAtIndex:i];
+    for(int i=0;i<[self.questionArray count];i++){
+        q = [self.questionArray objectAtIndex:i];
         answersArray.push_back(q.answer);
         
     }
@@ -178,10 +179,10 @@
 - (void)loadQuestion:(NSInteger)questionIndex {
     // populate text fields with question
     NSString *qtitle;
-    qtitle = [@"Question " stringByAppendingFormat:@"%d / %d",questionIndex+1, [questionArray count]];
+    qtitle = [@"Question " stringByAppendingFormat:@"%d / %d",questionIndex+1, [self.questionArray count]];
     self.titleText.text = qtitle;
     
-    Question *curQ = [questionArray objectAtIndex:self.currentQuestionIndex];
+    Question *curQ = [self.questionArray objectAtIndex:self.currentQuestionIndex];
     
     self.questionText.text = curQ.questionText;
     
@@ -251,7 +252,7 @@
              titleForRow:(NSInteger)row
             forComponent:(NSInteger)component
 {
-    Question *curQ = [questionArray objectAtIndex:self.currentQuestionIndex];
+    Question *curQ = [self.questionArray objectAtIndex:self.currentQuestionIndex];
 
     // get array of answers from Question class
     NSArray * answers = [Question answersWithType:curQ.questionType];
@@ -264,7 +265,7 @@
 -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
       inComponent:(NSInteger)component
 {
-    Question *curQ = [questionArray objectAtIndex:self.currentQuestionIndex];
+    Question *curQ = [self.questionArray objectAtIndex:self.currentQuestionIndex];
     // set question answerArray
     curQ.answer = row;
     
@@ -291,7 +292,7 @@
 - (IBAction)answerChosen:(id)sender {
     self.pleaseAnswer.hidden = YES;
     UISegmentedControl *seg = (UISegmentedControl *)sender;
-    Question *curQ = [questionArray objectAtIndex:self.currentQuestionIndex];
+    Question *curQ = [self.questionArray objectAtIndex:self.currentQuestionIndex];
     // set question answerArray
     curQ.answer = seg.selectedSegmentIndex;
     
--- a/SliderViewController.h	Wed Apr 17 13:44:05 2013 +0100
+++ b/SliderViewController.h	Fri Apr 19 18:50:04 2013 +0100
@@ -7,13 +7,16 @@
 //
 
 #import <UIKit/UIKit.h>
+#import "SliderController.h"
 
 @interface SliderViewController : UIViewController
 @property (nonatomic, assign)       id theOFAppRef;
 -(IBAction)hide:(id)sender;
 -(IBAction)show:(id)sender;
 - (void)setAppRef:(id)theOFApp;
-@property (retain, nonatomic) IBOutlet UISlider *slider1;
-
+- (void)slider:(int)which changedTo:(float)value;
+- (void)setSlider:(int)which to:(float)value;
+@property (retain,nonatomic) NSMutableArray *paramNames;
+@property (retain,nonatomic) NSMutableArray * sliderArray;
 
 @end
--- a/SliderViewController.mm	Wed Apr 17 13:44:05 2013 +0100
+++ b/SliderViewController.mm	Fri Apr 19 18:50:04 2013 +0100
@@ -7,6 +7,7 @@
 //
 
 #import "SliderViewController.h"
+#import "testApp.h"
 
 @interface SliderViewController ()
 
@@ -19,14 +20,47 @@
     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
     if (self) {
         // Custom initialization
+        [self populateParamNames];
+        self.sliderArray = [[NSMutableArray alloc] init];
+        
     }
     return self;
 }
 
 - (void)viewDidLoad
 {
+    int left = 22;
+    int top = 3;
+    const int height = 62;
+    const int width = 337;
+    
     [super viewDidLoad];
-    // Do any additional setup after loading the view from its nib.
+    
+    for(int i=0;i<10;i++){
+        
+        if(i==5){
+            top = 0;
+            left = left*3 + width;
+        }
+        SliderController * sliderV	= [[SliderController alloc] initWithNibName:@"SliderController" bundle:nil delegate:self pID:i];
+        
+        [self.view addSubview:sliderV.view];
+        
+        sliderV.view.frame = CGRectMake(left,top,width,height);
+        [sliderV setPID:i];
+        NSLog(@"setting name to %@", self.paramNames[i]);
+        [sliderV changeLabel:self.paramNames[i] ];
+        [sliderV setParamValue:44];
+        top += height;
+        
+        [self.sliderArray addObject:sliderV]; // not working
+        
+    }
+    int i = [self.sliderArray count];
+    NSLog(@"count: %d", i);
+    
+    [(SliderController *)[self.sliderArray objectAtIndex:5] setParamValue:13];
+    
 }
 
 - (void)didReceiveMemoryWarning
@@ -45,12 +79,33 @@
     self.theOFAppRef = sender;
     self.view.hidden = NO;
 }
+- (IBAction)hide:(id)sender
+{
+    self.theOFAppRef = sender;
+    self.view.hidden = YES;
+}
 - (void)dealloc {
-    [_slider1 release];
+    
     [super dealloc];
 }
 - (void)viewDidUnload {
-    [self setSlider1:nil];
     [super viewDidUnload];
 }
+- (void)slider:(int)which changedTo:(float)value{
+    // call testApp
+    ((testApp *)self.theOFAppRef)->sliderMoved(which,value);
+}
+- (void)setSlider:(int)which to:(float)value{
+    NSLog(@"set slider to");
+    [[self.sliderArray objectAtIndex:which] setParamValue:value];
+}
+- (void)populateParamNames{
+    
+    
+    self.paramNames = [NSArray arrayWithObjects:
+                       @"Transpose",@"1/4 note",@"1/6 note",@"1/7 note",@"1/8 note",
+                       @"Waveform",@"Filter Type",@"Filter Cutoff",@"Envelope",@"FM amount",
+                       nil];
+    
+}
 @end
--- a/SliderViewController.xib	Wed Apr 17 13:44:05 2013 +0100
+++ b/SliderViewController.xib	Fri Apr 19 18:50:04 2013 +0100
@@ -12,8 +12,6 @@
 		</object>
 		<array key="IBDocument.IntegratedClassDependencies">
 			<string>IBProxyObject</string>
-			<string>IBUILabel</string>
-			<string>IBUISlider</string>
 			<string>IBUIView</string>
 		</array>
 		<array key="IBDocument.PluginDependencies">
@@ -34,427 +32,72 @@
 			</object>
 			<object class="IBUIView" id="766721923">
 				<reference key="NSNextResponder"/>
-				<int key="NSvFlags">292</int>
+				<int key="NSvFlags">256</int>
 				<array class="NSMutableArray" key="NSSubviews">
-					<object class="IBUILabel" id="111649263">
+					<object class="IBUIView" id="868794118">
 						<reference key="NSNextResponder" ref="766721923"/>
 						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{35, 52}, {81, 21}}</string>
+						<string key="NSFrameSize">{768, 6}</string>
 						<reference key="NSSuperview" ref="766721923"/>
 						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView" ref="765561490"/>
+						<reference key="NSNextKeyView" ref="703174665"/>
 						<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>
+						<object class="NSColor" key="IBUIBackgroundColor">
+							<int key="NSColorSpace">1</int>
+							<bytes key="NSRGB">MC41MzEzMzQ5MTg1IDAuNTMxMzM0OTE4NSAwLjUzMTMzNDkxODUAA</bytes>
+						</object>
 						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<string key="IBUIText">Transpose</string>
-						<object class="NSColor" key="IBUITextColor" id="986956085">
-							<int key="NSColorSpace">1</int>
-							<bytes key="NSRGB">MSAxIDEAA</bytes>
-						</object>
-						<nil key="IBUIHighlightedColor"/>
-						<int key="IBUIBaselineAdjustment">0</int>
-						<object class="IBUIFontDescription" key="IBUIFontDescription" id="465806017">
-							<int key="type">1</int>
-							<double key="pointSize">17</double>
-						</object>
-						<object class="NSFont" key="IBUIFont" id="395663854">
-							<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="378389064">
+					<object class="IBUIView" id="703174665">
 						<reference key="NSNextResponder" ref="766721923"/>
 						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{35, 111}, {62, 21}}</string>
+						<string key="NSFrame">{{0, 6}, {6, 313}}</string>
 						<reference key="NSSuperview" ref="766721923"/>
 						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView" ref="495049070"/>
+						<reference key="NSNextKeyView" ref="579598868"/>
 						<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>
+						<object class="NSColor" key="IBUIBackgroundColor">
+							<int key="NSColorSpace">1</int>
+							<bytes key="NSRGB">MC41MzEzMzQ5MTg1IDAuNTMxMzM0OTE4NSAwLjUzMTMzNDkxODUAA</bytes>
+						</object>
 						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<string key="IBUIText">1/4 note</string>
-						<reference key="IBUITextColor" ref="986956085"/>
-						<nil key="IBUIHighlightedColor"/>
-						<int key="IBUIBaselineAdjustment">0</int>
-						<reference key="IBUIFontDescription" ref="465806017"/>
-						<reference key="IBUIFont" ref="395663854"/>
-						<bool key="IBUIAdjustsFontSizeToFit">NO</bool>
 					</object>
-					<object class="IBUILabel" id="618289241">
+					<object class="IBUIView" id="579598868">
 						<reference key="NSNextResponder" ref="766721923"/>
 						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{35, 171}, {62, 21}}</string>
+						<string key="NSFrame">{{762, 6}, {6, 313}}</string>
 						<reference key="NSSuperview" ref="766721923"/>
 						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView" ref="19664376"/>
+						<reference key="NSNextKeyView" ref="577336253"/>
 						<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>
+						<object class="NSColor" key="IBUIBackgroundColor">
+							<int key="NSColorSpace">1</int>
+							<bytes key="NSRGB">MC41MzEzMzQ5MTg1IDAuNTMxMzM0OTE4NSAwLjUzMTMzNDkxODUAA</bytes>
+						</object>
 						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<string key="IBUIText">1/6 note</string>
-						<reference key="IBUITextColor" ref="986956085"/>
-						<nil key="IBUIHighlightedColor"/>
-						<int key="IBUIBaselineAdjustment">0</int>
-						<reference key="IBUIFontDescription" ref="465806017"/>
-						<reference key="IBUIFont" ref="395663854"/>
-						<bool key="IBUIAdjustsFontSizeToFit">NO</bool>
 					</object>
-					<object class="IBUILabel" id="356420968">
+					<object class="IBUIView" id="577336253">
 						<reference key="NSNextResponder" ref="766721923"/>
 						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{35, 228}, {62, 21}}</string>
-						<reference key="NSSuperview" ref="766721923"/>
-						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView" ref="156260818"/>
-						<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">1/7 note</string>
-						<reference key="IBUITextColor" ref="986956085"/>
-						<nil key="IBUIHighlightedColor"/>
-						<int key="IBUIBaselineAdjustment">0</int>
-						<reference key="IBUIFontDescription" ref="465806017"/>
-						<reference key="IBUIFont" ref="395663854"/>
-						<bool key="IBUIAdjustsFontSizeToFit">NO</bool>
-					</object>
-					<object class="IBUILabel" id="244340737">
-						<reference key="NSNextResponder" ref="766721923"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{35, 288}, {62, 21}}</string>
-						<reference key="NSSuperview" ref="766721923"/>
-						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView" ref="96720329"/>
-						<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">1/8 note</string>
-						<reference key="IBUITextColor" ref="986956085"/>
-						<nil key="IBUIHighlightedColor"/>
-						<int key="IBUIBaselineAdjustment">0</int>
-						<reference key="IBUIFontDescription" ref="465806017"/>
-						<reference key="IBUIFont" ref="395663854"/>
-						<bool key="IBUIAdjustsFontSizeToFit">NO</bool>
-					</object>
-					<object class="IBUILabel" id="867320187">
-						<reference key="NSNextResponder" ref="766721923"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{56, 16}, {188, 21}}</string>
-						<reference key="NSSuperview" ref="766721923"/>
-						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView" ref="459346847"/>
-						<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">Note Pattern Oscillations</string>
-						<reference key="IBUITextColor" ref="986956085"/>
-						<nil key="IBUIHighlightedColor"/>
-						<int key="IBUIBaselineAdjustment">0</int>
-						<reference key="IBUIFontDescription" ref="465806017"/>
-						<reference key="IBUIFont" ref="395663854"/>
-						<bool key="IBUIAdjustsFontSizeToFit">NO</bool>
-					</object>
-					<object class="IBUILabel" id="459346847">
-						<reference key="NSNextResponder" ref="766721923"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{470, 19}, {166, 21}}</string>
-						<reference key="NSSuperview" ref="766721923"/>
-						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView" ref="111649263"/>
-						<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">Synth Sound Controls</string>
-						<reference key="IBUITextColor" ref="986956085"/>
-						<nil key="IBUIHighlightedColor"/>
-						<int key="IBUIBaselineAdjustment">0</int>
-						<reference key="IBUIFontDescription" ref="465806017"/>
-						<reference key="IBUIFont" ref="395663854"/>
-						<bool key="IBUIAdjustsFontSizeToFit">NO</bool>
-					</object>
-					<object class="IBUISlider" id="1033207780">
-						<reference key="NSNextResponder" ref="766721923"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{421, 82}, {308, 23}}</string>
-						<reference key="NSSuperview" ref="766721923"/>
-						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView" ref="378389064"/>
-						<string key="NSReuseIdentifierKey">_NS:9</string>
-						<bool key="IBUIOpaque">NO</bool>
-						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<float key="IBUIValue">0.5</float>
-						<float key="IBUIMaxValue">127</float>
-						<object class="NSColor" key="IBUIMinimumTrackTintColor" id="380680398">
-							<int key="NSColorSpace">1</int>
-							<bytes key="NSRGB">MSAwIDAuMDExNzg4NjU2MTQAA</bytes>
-						</object>
-					</object>
-					<object class="IBUILabel" id="765561490">
-						<reference key="NSNextResponder" ref="766721923"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{423, 52}, {78, 21}}</string>
-						<reference key="NSSuperview" ref="766721923"/>
-						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView" ref="588639842"/>
-						<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">Waveform</string>
-						<reference key="IBUITextColor" ref="986956085"/>
-						<nil key="IBUIHighlightedColor"/>
-						<int key="IBUIBaselineAdjustment">0</int>
-						<reference key="IBUIFontDescription" ref="465806017"/>
-						<reference key="IBUIFont" ref="395663854"/>
-						<bool key="IBUIAdjustsFontSizeToFit">NO</bool>
-					</object>
-					<object class="IBUISlider" id="632225376">
-						<reference key="NSNextResponder" ref="766721923"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{421, 142}, {308, 23}}</string>
-						<reference key="NSSuperview" ref="766721923"/>
-						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView" ref="618289241"/>
-						<string key="NSReuseIdentifierKey">_NS:9</string>
-						<bool key="IBUIOpaque">NO</bool>
-						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<float key="IBUIValue">0.5</float>
-						<float key="IBUIMaxValue">127</float>
-						<reference key="IBUIMinimumTrackTintColor" ref="380680398"/>
-					</object>
-					<object class="IBUILabel" id="495049070">
-						<reference key="NSNextResponder" ref="766721923"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{423, 111}, {82, 21}}</string>
-						<reference key="NSSuperview" ref="766721923"/>
-						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView" ref="889637720"/>
-						<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">FIlter Type</string>
-						<reference key="IBUITextColor" ref="986956085"/>
-						<nil key="IBUIHighlightedColor"/>
-						<int key="IBUIBaselineAdjustment">0</int>
-						<reference key="IBUIFontDescription" ref="465806017"/>
-						<reference key="IBUIFont" ref="395663854"/>
-						<bool key="IBUIAdjustsFontSizeToFit">NO</bool>
-					</object>
-					<object class="IBUISlider" id="715980642">
-						<reference key="NSNextResponder" ref="766721923"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{421, 199}, {308, 23}}</string>
-						<reference key="NSSuperview" ref="766721923"/>
-						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView" ref="356420968"/>
-						<string key="NSReuseIdentifierKey">_NS:9</string>
-						<bool key="IBUIOpaque">NO</bool>
-						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<float key="IBUIValue">0.5</float>
-						<float key="IBUIMaxValue">127</float>
-						<reference key="IBUIMinimumTrackTintColor" ref="380680398"/>
-					</object>
-					<object class="IBUILabel" id="19664376">
-						<reference key="NSNextResponder" ref="766721923"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{423, 171}, {123, 21}}</string>
-						<reference key="NSSuperview" ref="766721923"/>
-						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView" ref="51687800"/>
-						<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">Filter Frequency</string>
-						<reference key="IBUITextColor" ref="986956085"/>
-						<nil key="IBUIHighlightedColor"/>
-						<int key="IBUIBaselineAdjustment">0</int>
-						<reference key="IBUIFontDescription" ref="465806017"/>
-						<reference key="IBUIFont" ref="395663854"/>
-						<bool key="IBUIAdjustsFontSizeToFit">NO</bool>
-					</object>
-					<object class="IBUISlider" id="790035490">
-						<reference key="NSNextResponder" ref="766721923"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{421, 259}, {308, 23}}</string>
-						<reference key="NSSuperview" ref="766721923"/>
-						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView" ref="244340737"/>
-						<string key="NSReuseIdentifierKey">_NS:9</string>
-						<bool key="IBUIOpaque">NO</bool>
-						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<float key="IBUIValue">0.5</float>
-						<float key="IBUIMaxValue">127</float>
-						<reference key="IBUIMinimumTrackTintColor" ref="380680398"/>
-					</object>
-					<object class="IBUILabel" id="156260818">
-						<reference key="NSNextResponder" ref="766721923"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{423, 230}, {71, 21}}</string>
-						<reference key="NSSuperview" ref="766721923"/>
-						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView" ref="260680075"/>
-						<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">Envelope</string>
-						<reference key="IBUITextColor" ref="986956085"/>
-						<nil key="IBUIHighlightedColor"/>
-						<int key="IBUIBaselineAdjustment">0</int>
-						<reference key="IBUIFontDescription" ref="465806017"/>
-						<reference key="IBUIFont" ref="395663854"/>
-						<bool key="IBUIAdjustsFontSizeToFit">NO</bool>
-					</object>
-					<object class="IBUISlider" id="977717434">
-						<reference key="NSNextResponder" ref="766721923"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{421, 321}, {308, 23}}</string>
+						<string key="NSFrame">{{0, 319}, {768, 6}}</string>
 						<reference key="NSSuperview" ref="766721923"/>
 						<reference key="NSWindow"/>
 						<reference key="NSNextKeyView"/>
 						<string key="NSReuseIdentifierKey">_NS:9</string>
-						<bool key="IBUIOpaque">NO</bool>
+						<object class="NSColor" key="IBUIBackgroundColor">
+							<int key="NSColorSpace">1</int>
+							<bytes key="NSRGB">MC41MzEzMzQ5MTg1IDAuNTMxMzM0OTE4NSAwLjUzMTMzNDkxODUAA</bytes>
+						</object>
 						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<float key="IBUIValue">0.5</float>
-						<float key="IBUIMaxValue">127</float>
-						<reference key="IBUIMinimumTrackTintColor" ref="380680398"/>
-					</object>
-					<object class="IBUILabel" id="96720329">
-						<reference key="NSNextResponder" ref="766721923"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{423, 288}, {86, 21}}</string>
-						<reference key="NSSuperview" ref="766721923"/>
-						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView" ref="200835061"/>
-						<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">FM amount</string>
-						<reference key="IBUITextColor" ref="986956085"/>
-						<nil key="IBUIHighlightedColor"/>
-						<int key="IBUIBaselineAdjustment">0</int>
-						<reference key="IBUIFontDescription" ref="465806017"/>
-						<reference key="IBUIFont" ref="395663854"/>
-						<bool key="IBUIAdjustsFontSizeToFit">NO</bool>
-					</object>
-					<object class="IBUISlider" id="588639842">
-						<reference key="NSNextResponder" ref="766721923"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{33, 82}, {308, 23}}</string>
-						<reference key="NSSuperview" ref="766721923"/>
-						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView" ref="1033207780"/>
-						<string key="NSReuseIdentifierKey">_NS:9</string>
-						<bool key="IBUIOpaque">NO</bool>
-						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<float key="IBUIValue">0.5</float>
-						<float key="IBUIMaxValue">127</float>
-						<object class="NSColor" key="IBUIMinimumTrackTintColor" id="992255239">
-							<int key="NSColorSpace">1</int>
-							<bytes key="NSRGB">MC4wMzAwMTkyNDA3MiAwLjMxNDIwOTgyMTQgMQA</bytes>
-						</object>
-					</object>
-					<object class="IBUISlider" id="889637720">
-						<reference key="NSNextResponder" ref="766721923"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{33, 142}, {308, 23}}</string>
-						<reference key="NSSuperview" ref="766721923"/>
-						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView" ref="632225376"/>
-						<string key="NSReuseIdentifierKey">_NS:9</string>
-						<bool key="IBUIOpaque">NO</bool>
-						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<float key="IBUIValue">0.5</float>
-						<float key="IBUIMaxValue">127</float>
-						<reference key="IBUIMinimumTrackTintColor" ref="992255239"/>
-					</object>
-					<object class="IBUISlider" id="51687800">
-						<reference key="NSNextResponder" ref="766721923"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{33, 199}, {308, 23}}</string>
-						<reference key="NSSuperview" ref="766721923"/>
-						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView" ref="715980642"/>
-						<string key="NSReuseIdentifierKey">_NS:9</string>
-						<bool key="IBUIOpaque">NO</bool>
-						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<float key="IBUIValue">0.5</float>
-						<float key="IBUIMaxValue">127</float>
-						<reference key="IBUIMinimumTrackTintColor" ref="992255239"/>
-					</object>
-					<object class="IBUISlider" id="260680075">
-						<reference key="NSNextResponder" ref="766721923"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{33, 259}, {308, 23}}</string>
-						<reference key="NSSuperview" ref="766721923"/>
-						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView" ref="790035490"/>
-						<string key="NSReuseIdentifierKey">_NS:9</string>
-						<bool key="IBUIOpaque">NO</bool>
-						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<float key="IBUIValue">0.5</float>
-						<float key="IBUIMaxValue">127</float>
-						<reference key="IBUIMinimumTrackTintColor" ref="992255239"/>
-					</object>
-					<object class="IBUISlider" id="200835061">
-						<reference key="NSNextResponder" ref="766721923"/>
-						<int key="NSvFlags">292</int>
-						<string key="NSFrame">{{33, 321}, {308, 23}}</string>
-						<reference key="NSSuperview" ref="766721923"/>
-						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView" ref="977717434"/>
-						<string key="NSReuseIdentifierKey">_NS:9</string>
-						<bool key="IBUIOpaque">NO</bool>
-						<string key="targetRuntimeIdentifier">IBIPadFramework</string>
-						<float key="IBUIValue">0.5</float>
-						<float key="IBUIMaxValue">127</float>
-						<object class="NSColor" key="IBUIMinimumTrackTintColor">
-							<int key="NSColorSpace">1</int>
-							<bytes key="NSRGB">MC4wMzAwMTkyNDA3MiAwLjMxNDIwOTgyMTQgMQA</bytes>
-						</object>
 					</object>
 				</array>
-				<string key="NSFrameSize">{768, 363}</string>
+				<string key="NSFrameSize">{768, 325}</string>
 				<reference key="NSSuperview"/>
 				<reference key="NSWindow"/>
-				<reference key="NSNextKeyView" ref="867320187"/>
+				<reference key="NSNextKeyView" ref="868794118"/>
 				<object class="NSColor" key="IBUIBackgroundColor">
 					<int key="NSColorSpace">1</int>
-					<bytes key="NSRGB">MCAwIDAAA</bytes>
+					<bytes key="NSRGB">MC4xODg2NDYzOTk1IDAuMTg4NjQ2Mzk5NSAwLjE4ODY0NjM5OTUAA</bytes>
 				</object>
 				<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
 				<bool key="IBUIMultipleTouchEnabled">YES</bool>
@@ -475,14 +118,6 @@
 					</object>
 					<int key="connectionID">3</int>
 				</object>
-				<object class="IBConnectionRecord">
-					<object class="IBCocoaTouchOutletConnection" key="connection">
-						<string key="label">slider1</string>
-						<reference key="source" ref="841351856"/>
-						<reference key="destination" ref="588639842"/>
-					</object>
-					<int key="connectionID">287</int>
-				</object>
 			</array>
 			<object class="IBMutableOrderedSet" key="objectRecords">
 				<array key="orderedObjects">
@@ -507,145 +142,31 @@
 						<int key="objectID">2</int>
 						<reference key="object" ref="766721923"/>
 						<array class="NSMutableArray" key="children">
-							<reference ref="111649263"/>
-							<reference ref="867320187"/>
-							<reference ref="459346847"/>
-							<reference ref="1033207780"/>
-							<reference ref="765561490"/>
-							<reference ref="632225376"/>
-							<reference ref="495049070"/>
-							<reference ref="715980642"/>
-							<reference ref="19664376"/>
-							<reference ref="790035490"/>
-							<reference ref="156260818"/>
-							<reference ref="977717434"/>
-							<reference ref="96720329"/>
-							<reference ref="889637720"/>
-							<reference ref="51687800"/>
-							<reference ref="260680075"/>
-							<reference ref="378389064"/>
-							<reference ref="618289241"/>
-							<reference ref="356420968"/>
-							<reference ref="244340737"/>
-							<reference ref="200835061"/>
-							<reference ref="588639842"/>
+							<reference ref="868794118"/>
+							<reference ref="577336253"/>
+							<reference ref="703174665"/>
+							<reference ref="579598868"/>
 						</array>
 						<reference key="parent" ref="0"/>
 					</object>
 					<object class="IBObjectRecord">
-						<int key="objectID">13</int>
-						<reference key="object" ref="111649263"/>
+						<int key="objectID">288</int>
+						<reference key="object" ref="868794118"/>
 						<reference key="parent" ref="766721923"/>
 					</object>
 					<object class="IBObjectRecord">
-						<int key="objectID">18</int>
-						<reference key="object" ref="378389064"/>
+						<int key="objectID">289</int>
+						<reference key="object" ref="577336253"/>
 						<reference key="parent" ref="766721923"/>
 					</object>
 					<object class="IBObjectRecord">
-						<int key="objectID">32</int>
-						<reference key="object" ref="618289241"/>
+						<int key="objectID">290</int>
+						<reference key="object" ref="703174665"/>
 						<reference key="parent" ref="766721923"/>
 					</object>
 					<object class="IBObjectRecord">
-						<int key="objectID">34</int>
-						<reference key="object" ref="356420968"/>
-						<reference key="parent" ref="766721923"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">55</int>
-						<reference key="object" ref="244340737"/>
-						<reference key="parent" ref="766721923"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">72</int>
-						<reference key="object" ref="867320187"/>
-						<reference key="parent" ref="766721923"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">76</int>
-						<reference key="object" ref="459346847"/>
-						<reference key="parent" ref="766721923"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">81</int>
-						<reference key="object" ref="1033207780"/>
-						<array class="NSMutableArray" key="children"/>
-						<reference key="parent" ref="766721923"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">82</int>
-						<reference key="object" ref="765561490"/>
-						<reference key="parent" ref="766721923"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">83</int>
-						<reference key="object" ref="632225376"/>
-						<array class="NSMutableArray" key="children"/>
-						<reference key="parent" ref="766721923"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">84</int>
-						<reference key="object" ref="495049070"/>
-						<reference key="parent" ref="766721923"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">85</int>
-						<reference key="object" ref="715980642"/>
-						<array class="NSMutableArray" key="children"/>
-						<reference key="parent" ref="766721923"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">86</int>
-						<reference key="object" ref="19664376"/>
-						<reference key="parent" ref="766721923"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">87</int>
-						<reference key="object" ref="790035490"/>
-						<array class="NSMutableArray" key="children"/>
-						<reference key="parent" ref="766721923"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">88</int>
-						<reference key="object" ref="156260818"/>
-						<reference key="parent" ref="766721923"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">89</int>
-						<reference key="object" ref="977717434"/>
-						<array class="NSMutableArray" key="children"/>
-						<reference key="parent" ref="766721923"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">90</int>
-						<reference key="object" ref="96720329"/>
-						<reference key="parent" ref="766721923"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">234</int>
-						<reference key="object" ref="588639842"/>
-						<array class="NSMutableArray" key="children"/>
-						<reference key="parent" ref="766721923"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">235</int>
-						<reference key="object" ref="889637720"/>
-						<reference key="parent" ref="766721923"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">236</int>
-						<reference key="object" ref="51687800"/>
-						<reference key="parent" ref="766721923"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">237</int>
-						<reference key="object" ref="260680075"/>
-						<reference key="parent" ref="766721923"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">238</int>
-						<reference key="object" ref="200835061"/>
+						<int key="objectID">291</int>
+						<reference key="object" ref="579598868"/>
 						<reference key="parent" ref="766721923"/>
 					</object>
 				</array>
@@ -655,35 +176,17 @@
 				<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
 				<string key="-2.CustomClassName">UIResponder</string>
 				<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="13.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="18.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
 				<string key="2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="234.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="235.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="236.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="237.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="238.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="32.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="34.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="55.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="72.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="76.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="81.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="82.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="83.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="84.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="85.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="86.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="87.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="88.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="89.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-				<string key="90.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+				<string key="288.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+				<string key="289.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+				<string key="290.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+				<string key="291.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">287</int>
+			<int key="maxID">292</int>
 		</object>
 		<object class="IBClassDescriber" key="IBDocument.Classes">
 			<array class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -704,17 +207,6 @@
 							<string key="candidateClassName">id</string>
 						</object>
 					</dictionary>
-					<object class="NSMutableDictionary" key="outlets">
-						<string key="NS.key.0">slider1</string>
-						<string key="NS.object.0">UISlider</string>
-					</object>
-					<object class="NSMutableDictionary" key="toOneOutletInfosByName">
-						<string key="NS.key.0">slider1</string>
-						<object class="IBToOneOutletInfo" key="NS.object.0">
-							<string key="name">slider1</string>
-							<string key="candidateClassName">UISlider</string>
-						</object>
-					</object>
 					<object class="IBClassDescriptionSource" key="sourceIdentifier">
 						<string key="majorKey">IBProjectSource</string>
 						<string key="minorKey">./Classes/SliderViewController.h</string>
--- a/eventLogger.h	Wed Apr 17 13:44:05 2013 +0100
+++ b/eventLogger.h	Fri Apr 19 18:50:04 2013 +0100
@@ -207,9 +207,7 @@
     void uploadQuestionnaire();
     bool sendToServer(string functionName, Json::Value jsonData, bool async);
     
-
-
-        
+   
     Json::Value logsToJson();
     Json::Value questionnaireToJson();
 
--- a/grid.h	Wed Apr 17 13:44:05 2013 +0100
+++ b/grid.h	Fri Apr 19 18:50:04 2013 +0100
@@ -26,6 +26,7 @@
 public:
     bool snapped;
     
+    Hilbert hilbert;
     
     Grid();
     ~Grid();
@@ -38,7 +39,7 @@
     void snapCheck();
     void shiftCentreToSnapped();
     void draw();  
-    void drawGridLines();
+
     void update(); // change according to zoom
     double interpLevel;
     int smallestGridSpacing; // number of pixels when small grid dissappears from view
@@ -57,10 +58,14 @@
     // the inverse stuff
     void setParams(vector<int>);
     TwoVector getCoordForPresetSave();
+    
+    // experimental
+    void changeNumberOfParamsPerDim();
 private:
+    void drawGridLines();
     double scale;        // surface units per pixel GUI
 
-    const double maxValue;    // width of entire space
+    double maxValue;    // width of entire space
     const double minValue;    // smallest zoom
     int paramsPerDim; // no of parameters per dimension (
     int paramBitDepth; // number of bits for the parameter control data - i.e. always 7 for midi CC
@@ -79,9 +84,7 @@
     
     bool maxZoom, minZoom;
 
-
-    
-    int midiCC[10]; // the actual params SHOULD BE INITED FROM 2*paramsPerDim
+    vector<int> midiCC; // the actual params
     
 // private functions
     
--- a/grid.mm	Wed Apr 17 13:44:05 2013 +0100
+++ b/grid.mm	Fri Apr 19 18:50:04 2013 +0100
@@ -15,7 +15,7 @@
 extern EventLogger eventLogger;
 extern Hilbert hilbert;
 //--------------------------------------------------------------
-Grid::Grid(): maxValue(pow(32.0,7.0)-1), minValue(30),     paramsPerDim(5), paramBitDepth(7){
+Grid::Grid():  minValue(30),     paramsPerDim(5), paramBitDepth(7), hilbert(){
 
     interpLevel = 4;
 }
@@ -25,12 +25,14 @@
 
 }
 void Grid::init(){
-
+    maxValue = pow(2.0,paramsPerDim*paramBitDepth)-1;
     interpolateMode = NO_INTERPOLATION;
     
     maxZoom = false;
     minZoom = false;
 
+    midiCC = vector<int>(paramsPerDim*2,0);
+    
     pixSize.setCoord(ofGetWidth(), ofGetHeight());
  
     //set scale to random
@@ -46,7 +48,8 @@
     centre.setCoord(maxValue/2 , maxValue/2);
     topLeft.setCoord(centre.x - size.x/2, centre.y - size.y/2);
 
-    hilbert.init(paramBitDepth, paramsPerDim);
+    // do this now
+    hilbert.changeCurve(paramBitDepth, paramsPerDim);
 
     // set a starting param value, find coord that does it.
     vector<int> params(paramsPerDim*2);
@@ -63,14 +66,39 @@
     calculateInterpolateLevel();
     
     // log the starting zoom level
-    eventLogger.logEvent(ZOOM,centre, scale);
+    eventLogger.logEvent(ZOOM,getCoord(), scale);
+    
+    
+    ///////// TEST HILBERT
+
+    
+    /*
+    Hilbert hilbert1(7,1);
+    
+    unsigned long long inCoord = 100;
+    vector<int> checkParam;
+    checkParam = hilbert1.calculateParamsFromIndex(inCoord);
+    cout << "PARAMS: ";
+    for(int i=0; i<4;i++){
+        cout << checkParam[i] << " ";
+    }
+    cout << '\n';
+    unsigned long long outCoord = hilbert1.calculateIndexFromParams(checkParam);
+    cout << "UNIT TEST COORD = " << outCoord << "\n";
+    */
     
 }
 //--------------------------------------------------------------
 template <typename T> int sgn(T val) {
     return (T(0) < val) - (val < T(0));
 }
-
+//--------------------------------------------------------------
+void Grid::changeNumberOfParamsPerDim(){
+    // experimental func
+    // try using different gray code, etc etc
+    paramsPerDim = 4;
+    
+}
 //--------------------------------------------------------------
 double Grid::calculateInterpolateLevel(){
     if(interpolateMode == INTERPOLATE_GRID){
@@ -102,7 +130,7 @@
 
     if(scaleLevel > paramBitDepth || scaleLevel < 0){
         cout << "Error: Bad scale level: " << scaleLevel << "\n";
-        scaleLevel = 5;
+        scaleLevel = round(paramBitDepth*0.5);
     }
     
     scale = pow(2.0, scaleLevel*paramsPerDim);
@@ -116,7 +144,7 @@
     
     viewWasChanged();
     calculateInterpolateLevel();
-    eventLogger.logEvent(ZOOM, centre, scale);
+    eventLogger.logEvent(ZOOM, getCoord(), scale);
 }
 //--------------------------------------------------------------
 void Grid::setInterpolation(interpolateModeType mode){
@@ -208,7 +236,8 @@
             }else if(colCycle == 7){
                 ofSetColor(255,255,255,alpha);
             }else{
-                cout << "err colour messed up\n";
+                ofSetColor(255,255,255,alpha);
+                cout << "colour cycle > 7\n";
             }
             
             
@@ -379,7 +408,7 @@
     
     ////////-------/////////
     
-    for(int i=0;i<10;i++){ // TODO 5bit specific
+    for(int i=0;i<2*paramsPerDim;i++){ // TODO 5bit specific
         temp << midiCC[i] << " ";
         s = temp.str();
         ofDrawBitmapString( s, 10, line );
@@ -406,7 +435,7 @@
     centre = centre - moveS;
     
     viewWasChanged();
-    eventLogger.logEvent(SCROLL, centre, scale);
+    eventLogger.logEvent(SCROLL, getCoord(), scale);
     
 }
 //--------------------------------------------------------------
@@ -438,7 +467,7 @@
     
     viewWasChanged();
     calculateInterpolateLevel();
-    eventLogger.logEvent(ZOOM, centre, scale);
+    eventLogger.logEvent(ZOOM, getCoord(), scale);
 
 }
 //--------------------------------------------------------------
@@ -477,6 +506,9 @@
         snapCentre = closestPreset->coordinates;
         eventLogger.logEvent(SNAPPED_TO_PRESET, getCoord(),closestPreset->creationTime );
         //cout << "SNAPPED CHECK\n";
+        
+        // causes too many problems just move it
+       
     }else{
         snapped = false;
         closestPreset = NULL;
@@ -609,12 +641,16 @@
 //--------------------------------------------------------------
 vector<int> Grid::getParams(){
     // return a vector with midiCCs in
-    // should we store params somewhere and use this as a low computation get ?
-    vector<int> params(2*paramsPerDim,0);
+    // if less than 10, fill rest with zeros
+    
+    vector<int> params(10,0);
     //
     for(int i = 0;i<2*paramsPerDim;i++){
         params[i] = midiCC[i];
     }
+    for(int i = 2*paramsPerDim;i<10;i++){
+        params[i] = 0;
+    }
     return params;
 }
 //--------------------------------------------------------------
@@ -622,7 +658,7 @@
     // input midiCCs, and go to the appropriate coordinate
 
     for(int i = 0;i<2*paramsPerDim;i++){
-        midiCC[i] = 64;
+        midiCC[i] = params[i];
     }
     TwoVector coord = calculateCoordFromParams(params);
     setCoord(coord);
@@ -786,7 +822,7 @@
 //--------------------------------------------------------------
 //--------------------------------------------------------------
 //--------------------------------------------------------------
-#pragma mark The old algorithm
+#pragma mark The OLD algorithm
 
 TwoVector Grid::calculateCoordFromParamsOld(vector<int> params) const{
     
--- a/hilbert.cpp	Wed Apr 17 13:44:05 2013 +0100
+++ b/hilbert.cpp	Fri Apr 19 18:50:04 2013 +0100
@@ -7,8 +7,8 @@
 //
 
 #include "hilbert.h"
-Hilbert hilbert;
 
+// UTILS
 //--------------------------------------------------------------------
 unsigned int rotl(unsigned int value, int shift, int digits) {
     unsigned int ones = (1 << digits) - 1;
@@ -74,32 +74,77 @@
 
 }
 //--------------------------------------------------------------------
-void Hilbert::init(int aN, int aP){
+//====================================================================
+//--------------------------------------------------------------------
+
+Hilbert::Hilbert(){
+    N = 7;
+    P = 5;
+    codeLength = (int)pow(2.0,P);
+    
+    
+    makeCode();
+    makeRotationRules();
+    
+}
+
+//--------------------------------------------------------------------
+
+Hilbert::Hilbert(int aN, int aP){
     N = aN;
     P = aP;
     codeLength = (int)pow(2.0,P);
+
+    
     makeCode();
     makeRotationRules();
     
+}
+//--------------------------------------------------------------------
+
+void Hilbert::changeCurve(int aN, int aP){
+    N = aN;
+    P = aP;
+    codeLength = (int)pow(2.0,P);
     
-    // whole process unit test(?)
     
-    unsigned long long inCoord = 982635920;
-    vector<int> checkParam;
-    checkParam = calculateParamsFromIndex(inCoord);
-    cout << "PARAMS: ";
-    for(int i=0; i<P;i++){
-        cout << checkParam[i] << " ";
-    }
-    cout << '\n';
-    unsigned long long outCoord = calculateIndexFromParams(checkParam);
-    cout << "UNIT TEST COORD = " << outCoord << "\n";
-    
+    makeCode();
+    makeRotationRules();
     
 }
 //--------------------------------------------------------------
 void Hilbert::makeRotationRules(){
+    theRotations.clear();
+    theEntryVertices.clear();
     
+    const int *rp;
+    const int *ep;
+    if(P == 5){
+        rp = rotations5;
+        ep = entryVertices5;
+    }else if(P == 4){
+        rp = rotations4;
+        ep = entryVertices4;
+    }else if(P == 3){
+        rp = rotations3;
+        ep = entryVertices3;
+    }else if(P == 2){
+        rp = rotations2;
+        ep = entryVertices2;
+    }else if(P == 1){ // will this even work?
+        rp = rotations1;
+        ep = entryVertices1;
+    }else{
+        cout << "ERROR: makeRotationRules: bad numb of MIDI params";
+        return;
+    }
+
+    for(int i=0; i < codeLength; i++){ // fill vector
+        
+        theEntryVertices.push_back(ep[i]);
+        theRotations.push_back(rp[i]);
+        
+    }
     
 }
 //--------------------------------------------------------------
@@ -109,29 +154,40 @@
     ////////// gray code generation
     //////
     ///
-    // TODO 5bit specific
-    // transition sequence.... what a palaver! only need to do once though.
+    // choose the gray code sequence and rotation based on the numnber of dimensions P
     
     // ALL SEQUENCES SHOULD END WITH  1 0 0 ... i.e. MSB changes
     
     // max MRL 5 digit
-    int trans[] = {2,3,4,0,2,1,4,3,2,0,4,3,2,1,4,0,2,3,4,0,2,1,4,3,2,0,4,3,2,1,4,0};
+    
+    theGrayCode.clear();
+    theGrayCodeD.clear();
+    
+    int trans5[] = {2,3,4,0,2,1,4,3,2,0,4,3,2,1,4,0,2,3,4,0,2,1,4,3,2,0,4,3,2,1,4,0};
     
     // other ones
     int trans4[] = {1,2,0,3,0,2,1,2,3,0,3,2,1,3,1,0};
     int trans3[] = {1,2,1,0,1,2,1,0};
     int trans2[] = {1,0,1,0};
+    int trans1[] = {0,0};
     // balanced 5
     int transB5[] = {1,2,3,4,5,1,5,2,3,5,2,4,2,3,4,1,4,3,2,3,1,5,3,4,1,5,2,5,3,4,1,3};
     
+    int *tp;
+    
     
     if(P == 5){
-        
-    }else{
-        cout << "Only 5 digit supported now\n";
-        return;
+        tp = trans5;
+    }else if(P == 4){
+        tp = trans4;
+    }else if(P == 3){
+        tp = trans3;
+    }else if(P == 2){
+         tp = trans2;
+    }else if(P == 1){ // will this even work?
+        tp = trans1;
     }
-    
+
     
     int code[codeLength][P]; // start with normal array
     for(int j=0; j<P; j++){
@@ -140,7 +196,7 @@
     
     for(int i=0; i < codeLength-1; i++){  // don't need last 3
         for(int j=0; j<P; j++){
-            if (j == abs(trans[i])){
+            if (j == abs(tp[i])){
                 code[i+1][j] = !code[i][j];
             }else{
                 code[i+1][j] = code[i][j];
@@ -217,10 +273,11 @@
             
             params[j] += ((vertex >> P-j-1) & 1)*(1<<blev);
         }
-        if(P==5){
-            newe = entryVertices5[subindex];
-            newd = rotations5[subindex];
+        if(subindex > theEntryVertices.size()){
+            cout << "ERROR: subindex too large for theEntryVertices\n";
         }
+        newe = theEntryVertices[subindex];
+        newd = theRotations[subindex];
         // next rotations...
         int lse2 = rotr(newe, P-direction-1,P);
         entryPoint = entryPoint ^ lse2;
@@ -280,8 +337,11 @@
         }
         //cout << "INV subindex: " << subindex << "\n";
         // work out next rotations
-        newe = entryVertices5[subindex];
-        newd = rotations5[subindex];
+        if(subindex > theEntryVertices.size()){
+            cout << "ERROR: subindex too large for theEntryVertices\n";
+        }
+        newe = theEntryVertices[subindex];
+        newd = theRotations[subindex];
         
         // next rotations...
         int lse2 = rotr(newe, P-direction-1,P);
--- a/hilbert.h	Wed Apr 17 13:44:05 2013 +0100
+++ b/hilbert.h	Fri Apr 19 18:50:04 2013 +0100
@@ -22,11 +22,15 @@
     int P; // dimensionas of high D space
     int N; // number of resolution bits
     int codeLength;
+    
+    
+    
     vector<vector <bool> > cubeStartVertices;
     vector<int> cubeRotations;
     vector<vector <bool> > theGrayCode;
     vector<unsigned int> theGrayCodeD;
-    
+    vector<unsigned int> theEntryVertices;
+    vector<unsigned int> theRotations;
     
     void makeCode();
 
@@ -34,7 +38,9 @@
     int rotate(int vertex, int entryPoint, int direction);
     int rotateInverse(int vertex, int entryPoint, int direction) ;
 public:
-    void init(int N, int P);
+    Hilbert();
+    Hilbert(int N, int P);
+    void changeCurve(int aN, int aP);
     vector<int> calculateParamsFromIndex(unsigned long long coord);
     unsigned long long calculateIndexFromParams(vector<int> params);
 
--- a/presetManager.mm	Wed Apr 17 13:44:05 2013 +0100
+++ b/presetManager.mm	Fri Apr 19 18:50:04 2013 +0100
@@ -22,7 +22,7 @@
     vector<ofColor> pixCols;
     
     ofColor col(255,0,0);
-    for(int i=0; i<9;i++){
+    for(int i=0; i<params.size();i++){
         col.setHue(params[i]*2);
         pixCols.push_back(col);
     }
@@ -37,6 +37,8 @@
     
     if(pixVals.size() < 9){
         cout << "NO PRESET PIC\n";
+        ofSetColor(235,235,235);
+        ofRect(pos.x, pos.y,sz,sz);
         return;
     }
     //middle row
--- a/rot_rules.h	Wed Apr 17 13:44:05 2013 +0100
+++ b/rot_rules.h	Fri Apr 19 18:50:04 2013 +0100
@@ -17,8 +17,17 @@
 const int entryVertices5[] = {0,0,0,0,0,5,5,5,3,3,27,10,0,5,29,29,9,9,27,10,18,20,20,5,5,3,3,18,18,20,24,17};
 const int rotations5[] = {2,1,0,4,0,3,0,2,2,3,4,3,0,4,0,2,2,4,4,3,1,3,4,1,1,4,4,1,1,2,3,0};
 
-const int entryVertices4[] = {0,0,0,0,0,9,15,15,12,5,5,6,6,10,9,12};
-const int rotations4[] = {2,1,3,0,0,2,2,0,3,3,1,1,3,1,0,2};
+const int entryVertices4[] = {0,0,0,0,0,12,6,6,0,3,3,6,6,0,9,12};
+const int rotations4[] = {2,1,3,0,2,3,2,2,1,3,2,1,1,3,0,2};
+
+const int entryVertices3[] = {0,0,0,3,3,5,5,6};
+const int rotations3[] = {1,0,0,2,2,0,0,1};
+
+const int entryVertices2[] = {0,0,0,3};
+const int rotations2[] = {0,1,1,0};
+
+const int entryVertices1[] = {0,0};
+const int rotations1[] = {0,0};
 
 #endif
 /*-----------------------------------------------------------------------*/
--- a/testApp.h	Wed Apr 17 13:44:05 2013 +0100
+++ b/testApp.h	Fri Apr 19 18:50:04 2013 +0100
@@ -165,6 +165,8 @@
     void sendFiltType(int ctrlin);
     void sendFiltFreq(int ctrlin);
     void sendEnvShape(int ctrlin);
+    void sendAmpEnvShape(int ctrlin);
+    void sendFiltEnvShape(int ctrlin);
     void sendModFreq(int ctrlin);
     void sendMidiParams();
     void sendMidiParam(int which);
--- a/testApp.mm	Wed Apr 17 13:44:05 2013 +0100
+++ b/testApp.mm	Fri Apr 19 18:50:04 2013 +0100
@@ -12,7 +12,53 @@
 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]);
 
+//--------------------------------------------------------------
+void testApp::setup(){
+    
+    // initilaise
+    
+    initialiseVariables();
+    initialiseGUIs();
+    
+    // initialise PD
+    
+	int ticksPerBuffer = 8;	// 8 * 64 = buffer len of 512
+	core.setup(2, 1, 44100, ticksPerBuffer);
+    
+	// setup OF sound stream
+	ofSoundStreamSetup(2, 1, this, 44100, ofxPd::blockSize()*ticksPerBuffer, 3);
+    
+    tsc = [[TimedSessionController alloc] init];
+    [tsc setAppRef:(id)this];
+    
+    //--------------------------------------
+    // load stuff
+    loadSequences();
+    
+    // load presets
+    presetManager.startLoadAll();
+    
+    eventLogger.startLoadAll();
+    //--------------------------------------
+    
+    // now do things that will affect the start up state of the app
+    
+    /*
+    if(eventLogger.questionnaireCompleted){ // then we go into do-what-you-like mode
+        
+        freeUseMode();
+    }else{
+        // then we're in timed session mode
+        showIntro();
+    }
+    */
+    freeUseMode();
+    // GO
+    paused = false;
+    eventLogger.logEvent(APP_STARTED);
+}
 
+//-----------------------------------------------------------------------------
 
 //DeviceID3523537000
 void testApp::initialiseVariables(){
@@ -28,7 +74,7 @@
     
 	sender.setup( OSC_HOST, OSC_PORT );
     ofSetFrameRate(50);
-    // reciever
+
     lastMoveTime = ofGetSystemTimeMicros();
     prevTouchX = 0;
     prevTouchY = 0;
@@ -57,11 +103,14 @@
     ofxiPhoneSetOrientation( OFXIPHONE_ORIENTATION_PORTRAIT );
     ofxiPhoneExternalDisplay::mirrorOn();
 }
+//---------------------------------------------------------
 void testApp::initialiseGUIs(){
     theGridView.init();
     
+    
+    //SLIDER
     setupSliderGui();
-    sliderGUI->setVisible(true);
+    sliderGUI->setVisible(false);
     
     // initial slider vals
     for(int i=0; i<10;i++){
@@ -93,18 +142,19 @@
     [helpViewController setAppRef:(id)this];
     helpViewController.view.hidden = YES;
     
-    /*
+    //SLIDER
+    
      sliderViewController	= [[SliderViewController alloc] initWithNibName:@"SliderViewController" bundle:nil];
      [ofxiPhoneGetGLParentView() addSubview:sliderViewController.view];
      [sliderViewController setAppRef:(id)this];
-     sliderViewController.view.frame = CGRectMake(0,getHeight()-43 - 363,getWidth(),363);
-     //[sliderViewController show:(id)this];
-     */
+     sliderViewController.view.frame = CGRectMake(0,getHeight()-43 - 325,getWidth(),325);
+     [sliderViewController show:(id)this];
+     
     
     setAllGUISliders(theGridView.getParams());
     
 }
-
+//--------------------------------------------------------------------------
 void testApp::initialiseMIDI(){
     
     /////////////////////////
@@ -155,49 +205,6 @@
     // END MIDI
 
 }
-//--------------------------------------------------------------
-void testApp::setup(){
-    
-    // initilaise
-    
-    initialiseVariables();
-    initialiseGUIs();
-       
-    // initialise PD
-    
-	int ticksPerBuffer = 8;	// 8 * 64 = buffer len of 512
-	core.setup(2, 1, 44100, ticksPerBuffer);
-    
-	// setup OF sound stream
-	ofSoundStreamSetup(2, 1, this, 44100, ofxPd::blockSize()*ticksPerBuffer, 3);
-
-    tsc = [[TimedSessionController alloc] init];
-    [tsc setAppRef:(id)this];
-    
-    //--------------------------------------
-    // load stuff
-    loadSequences();
-    
-    // load presets
-    presetManager.startLoadAll();
-
-    eventLogger.startLoadAll();
-    //--------------------------------------
-
-   // now do things that will affect the start up state of the app
-    
-    if(eventLogger.questionnaireCompleted){ // then we go into do-what-you-like mode
-
-        freeUseMode();
-    }else{
-        // then we're in timed session mode
-        showIntro();
-    }
-    
-    // GO
-    paused = false;
-    eventLogger.logEvent(APP_STARTED);
-}
 
 
 //--------------------------------------------------------------
@@ -225,6 +232,7 @@
 		delete outputs[i];
 	}
     
+    //SLIDER
     delete sliderGUI;
     
     cout << "exit done \n";
@@ -374,26 +382,29 @@
 void testApp::interfaceSelected(int which){
     switch (which){
         case 0: // slider
-            
+            //SLIDER
             whichInterfaceShowing = SLIDERS;
-            sliderGUI->setVisible(true);
+
+            [sliderViewController show:(id)this];
             // set the slider values to stuff got from zoomer
             sliderVals = theGridView.getParams();
             setAllGUISliders(sliderVals);
             
             break;
         case 1: // both
-            
+            //SLIDER
             whichInterfaceShowing = BOTH;
-            sliderGUI->setVisible(true);
+
+            [sliderViewController show:(id)this];
             // set the slider values to stuff got from zoomer
             sliderVals = theGridView.getParams();
             setAllGUISliders(sliderVals);
             
             break;
         case 2: // zoomer
-            
-            sliderGUI->setVisible(false);
+            //SLIDER
+    
+            [sliderViewController hide:(id)this];
             whichInterfaceShowing = ZOOMER;
             break;
     }
@@ -402,7 +413,7 @@
 //--------------------------------------------------------------
 //--------------------------------------------------------------
 void testApp::setupSliderGui(){
-
+//SLIDER not used
     float length = SLIDER_GUI_WIDTH - (OFX_UI_GLOBAL_WIDGET_SPACING*2);
     
     
@@ -440,6 +451,7 @@
 }
 //--------------------------------------------------------------
 void testApp::sliderGUIEvent(ofxUIEventArgs &e){
+    //SLIDER not used
     if(whichInterfaceShowing == ZOOMER){
         cout << "GUI ERROR";
         return;
@@ -457,8 +469,10 @@
     }
     
 }
+
 //--------------------------------------------------------------
 void testApp::sliderMoved(int which, float value){
+
     // an update caused by slider view being touched
     sliderVals[which] = (int)value;
     theGridView.setParams(sliderVals);
@@ -475,10 +489,13 @@
 }
 //--------------------------------------------------------------
 void testApp::setAllGUISliders(vector<int> vals){
+    //SLIDER
     // an update caused by zoomer view being moved
     for(int i = 0; i<NUM_PARAMS;i++){
         sliders[i]->setValue(vals[i]);
         sliderVals[i] = vals[i];
+        
+        [sliderViewController setSlider:i to:vals[i]];
     }
     
     sendParametersToPD();
@@ -704,6 +721,7 @@
 //--------------------------------------------------------------
 void testApp::touchDown(ofTouchEventArgs &touch){
     // in slider gui area?
+    //SLIDER
     if(whichInterfaceShowing == SLIDERS){
         return;
     }else if (whichInterfaceShowing == BOTH && touch.x < (SLIDER_GUI_WIDTH+10)){
@@ -744,6 +762,7 @@
 void testApp::touchMoved(ofTouchEventArgs &touch){
     
     // TODO check if in gui area!!!
+    //SLIDER
     if(whichInterfaceShowing == SLIDERS){
         return;
     }else if (whichInterfaceShowing == BOTH && touch.x < (SLIDER_GUI_WIDTH+10)){
@@ -839,6 +858,7 @@
     if(numActiveTouches > 0) numActiveTouches--; // dirty
     preventingMovePostScroll = false;
     // TODO check if in gui area!!!
+    //SLIDER
     if(whichInterfaceShowing == SLIDERS){
         return;
     }else if (whichInterfaceShowing == BOTH && touch.x < 256){
@@ -1118,6 +1138,73 @@
     }
 }
 //---------------------------------------------------------------
+// alternative envelopes: seperate for amp and filt 
+void testApp::sendAmpEnvShape(int ctrlin){
+    if(ctrlin < 0 || ctrlin > 127){
+        cout << "ERROR: bad slider value!";
+        return;
+    }
+    static int numpoints = 5;
+    static int numcontrols = 3;
+    //float values[points][controls] =
+    float ctrlout[numcontrols];
+    string ctrlName[3] = {"attack" , "decay", "sustain"};
+    float values[5][3] =
+    {{0., 0., 0.}, // 0
+        {0., 0.5, 0.},  // 32
+        {0.0, 1., 0.8},  // 64
+        {0.99, 0.3, 0.},  // 96
+        {0.3, 0.1, 0.}}; // 127
+    
+    float fidx = (numpoints-1)*ctrlin/128.;
+    int idx = floor(fidx);
+    float frac = fidx - idx;
+    for(int i=0; i < numcontrols; i++){
+        ctrlout[i] = (1 - frac)*values[idx][i] + (frac)*values[idx+1][i];
+        // send to PD
+        List toPD;
+        toPD.addSymbol("aenv");
+        toPD.addSymbol(ctrlName[i]);
+        toPD.addFloat(ctrlout[i]); // rounding here??
+        
+        core.pd.sendList("fromOF", toPD);
+        //cout << ctrlName[i] << "sending" << ctrlout[i] << "\n";
+    }
+}
+//---------------------------------------------------------------
+void testApp::sendFiltEnvShape(int ctrlin){
+    if(ctrlin < 0 || ctrlin > 127){
+        cout << "ERROR: bad slider value!";
+        return;
+    }
+    static int numpoints = 5;
+    static int numcontrols = 3;
+    //float values[points][controls] =
+    float ctrlout[numcontrols];
+    string ctrlName[3] = {"attack" , "decay", "sustain"};
+    float values[5][3] =
+    {{0., 0., 0.}, // 0
+        {0., 0.5, 0.},  // 32
+        {0.0, 1., 0.8},  // 64
+        {0.99, 0.3, 0.},  // 96
+        {0.3, 0.1, 0.}}; // 127
+    
+    float fidx = (numpoints-1)*ctrlin/128.;
+    int idx = floor(fidx);
+    float frac = fidx - idx;
+    for(int i=0; i < numcontrols; i++){
+        ctrlout[i] = (1 - frac)*values[idx][i] + (frac)*values[idx+1][i];
+        // send to PD
+        List toPD;
+        toPD.addSymbol("fenv");
+        toPD.addSymbol(ctrlName[i]);
+        toPD.addFloat(ctrlout[i]); // rounding here??
+        
+        core.pd.sendList("fromOF", toPD);
+        //cout << ctrlName[i] << "sending" << ctrlout[i] << "\n";
+    }
+}
+//---------------------------------------------------------------
 void testApp::sendModFreq(int ctrlin){
     if(ctrlin < 0 || ctrlin > 127){
         cout << "ERROR: bad slider value!";