Mercurial > hg > soniczoomios
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!";