diff --git a/Documentation/Images/Backend Architecture.png b/Documentation/Images/Backend Architecture.png new file mode 100644 index 0000000..4ee1957 Binary files /dev/null and b/Documentation/Images/Backend Architecture.png differ diff --git a/Documentation/Images/Backend Architecture.pptx b/Documentation/Images/Backend Architecture.pptx new file mode 100644 index 0000000..b6e00d1 Binary files /dev/null and b/Documentation/Images/Backend Architecture.pptx differ diff --git a/Media/Images/ButtonTemplate.psd b/Media/Images/ButtonTemplate.psd new file mode 100644 index 0000000..eb673c4 Binary files /dev/null and b/Media/Images/ButtonTemplate.psd differ diff --git a/Media/Images/Gesture.png b/Media/Images/Gesture.png new file mode 100644 index 0000000..eda7356 Binary files /dev/null and b/Media/Images/Gesture.png differ diff --git a/Media/Images/Global512Up.png b/Media/Images/Global512Up.png new file mode 100644 index 0000000..445c585 Binary files /dev/null and b/Media/Images/Global512Up.png differ diff --git a/Media/Images/GlobalDown512.png b/Media/Images/GlobalDown512.png new file mode 100644 index 0000000..725a616 Binary files /dev/null and b/Media/Images/GlobalDown512.png differ diff --git a/Media/Images/MicrophoneDown512.png b/Media/Images/MicrophoneDown512.png new file mode 100644 index 0000000..afc7ca1 Binary files /dev/null and b/Media/Images/MicrophoneDown512.png differ diff --git a/Media/Images/MicrophoneUp512.png b/Media/Images/MicrophoneUp512.png new file mode 100644 index 0000000..bd5f74f Binary files /dev/null and b/Media/Images/MicrophoneUp512.png differ diff --git a/Media/Images/RecordDown512.png b/Media/Images/RecordDown512.png new file mode 100644 index 0000000..dddee99 Binary files /dev/null and b/Media/Images/RecordDown512.png differ diff --git a/Media/Images/RecordUp512.png b/Media/Images/RecordUp512.png new file mode 100644 index 0000000..f6cb1ab Binary files /dev/null and b/Media/Images/RecordUp512.png differ diff --git a/Media/Images/SettingsDown512.png b/Media/Images/SettingsDown512.png new file mode 100644 index 0000000..1f3a97c Binary files /dev/null and b/Media/Images/SettingsDown512.png differ diff --git a/Media/Images/SettingsUp512.png b/Media/Images/SettingsUp512.png new file mode 100644 index 0000000..8d50283 Binary files /dev/null and b/Media/Images/SettingsUp512.png differ diff --git a/Source/GUI/Base.lproj/Storyboard.storyboard b/Source/GUI/Base.lproj/Storyboard.storyboard new file mode 100644 index 0000000..d3ed187 --- /dev/null +++ b/Source/GUI/Base.lproj/Storyboard.storyboard @@ -0,0 +1,341 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/GUI/BeMotionViewController.h b/Source/GUI/BeMotionViewController.h new file mode 100644 index 0000000..16cda2e --- /dev/null +++ b/Source/GUI/BeMotionViewController.h @@ -0,0 +1,58 @@ +// +// BeMotionViewController.h +// GestureController +// +// Created by Govinda Ram Pingali on 4/28/14. +// Copyright (c) 2014 GTCMT. All rights reserved. +// + +#import + +#include "GestureControllerInterface.h" + +@interface BeMotionViewController : UIViewController +{ +// GestureControllerInterface* m_pcBackEndInterface; + + + BOOL m_bSettingsToggle; + BOOL m_bRecordToggle; + BOOL m_bMicrophoneToggle; +} + +@property (nonatomic) GestureControllerInterface* m_pcBackendInterface; + + +//--- UI Actions ---// + +- (IBAction)redButtonTouchDown:(UIButton *)sender; +- (IBAction)redButtonTouchUp:(UIButton *)sender; + +- (IBAction)blueButtonTouchDown:(UIButton *)sender; +- (IBAction)blueButtonTouchUp:(UIButton *)sender; + +- (IBAction)greenButtonTouchDown:(UIButton *)sender; +- (IBAction)greenButtonTouchUp:(UIButton *)sender; + +- (IBAction)yellowButtonTouchDown:(UIButton *)sender; +- (IBAction)yellowButtonTouchUp:(UIButton *)sender; + + +- (IBAction)settingsButtonClicked:(UIButton *)sender; + +- (IBAction)recordButtonClicked:(UIButton *)sender; + +- (IBAction)microphoneButtonClicked:(UIButton *)sender; + + +//--- Utility Methods ---// +- (void)initializeApplication; + +- (void)setBackendInterface:(GestureControllerInterface * )backendInterface; + + + +- (void)dealloc; + + +@end diff --git a/Source/GUI/BeMotionViewController.mm b/Source/GUI/BeMotionViewController.mm new file mode 100644 index 0000000..f20d11b --- /dev/null +++ b/Source/GUI/BeMotionViewController.mm @@ -0,0 +1,434 @@ +// +// BeMotionViewController.m +// GestureController +// +// Created by Govinda Ram Pingali on 4/28/14. +// Copyright (c) 2014 GTCMT. All rights reserved. +// + +#import "BeMotionViewController.h" +#import "SampleSettingsViewController.h" + + +@interface BeMotionViewController () +{ + GestureControllerInterface* m_pcBackendInterface; +} + +@end + +@implementation BeMotionViewController + +@synthesize m_pcBackendInterface; + + +//- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil +//{ +// self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; +// +// if (self) +// { +// +// // Custom initialization +// } +// +// return self; +//} + + + +- (void)viewDidLoad +{ + [super viewDidLoad]; + + + static BOOL didInitialize = NO; + + if (didInitialize == YES) + { + // Do Stuff Here On Every View Load After Initialization + + return; + } + + + [self initializeApplication]; + + didInitialize = YES; + +} + + +- (void)initializeApplication +{ + +// m_pcBackendInterface = NULL; + m_pcBackendInterface = new GestureControllerInterface; + + m_bSettingsToggle = NO; + m_bRecordToggle = NO; + m_bMicrophoneToggle = NO; + + + + //--- Initialize With Audio Samples ---// + NSString *sample1Path = [[NSBundle mainBundle] pathForResource:@"Playback0" ofType:@"wav"]; + NSString *sample2Path = [[NSBundle mainBundle] pathForResource:@"Playback1" ofType:@"wav"]; + NSString *sample3Path = [[NSBundle mainBundle] pathForResource:@"Playback2" ofType:@"wav"]; + NSString *sample4Path = [[NSBundle mainBundle] pathForResource:@"Playback3" ofType:@"wav"]; + NSString *sample5Path = [[NSBundle mainBundle] pathForResource:@"Playback4" ofType:@"wav"]; + + m_pcBackendInterface->loadAudioFile(0, sample1Path); + m_pcBackendInterface->loadAudioFile(1, sample2Path); + m_pcBackendInterface->loadAudioFile(2, sample3Path); + m_pcBackendInterface->loadAudioFile(3, sample4Path); + m_pcBackendInterface->loadAudioFile(4, sample5Path); + +} + + + +- (void)didReceiveMemoryWarning +{ + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + + +//#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender +{ + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. + + if (m_bSettingsToggle) + { + SampleSettingsViewController* vc = [segue destinationViewController]; + + if ([[segue identifier] isEqual: @"redButtonSettings"]) + { + vc.m_iSampleID = 0; + } + + else if ([[segue identifier] isEqual: @"blueButtonSettings"]) + { + vc.m_iSampleID = 1; + } + + else if ([[segue identifier] isEqual: @"greenButtonSettings"]) + { + vc.m_iSampleID = 2; + } + + else if ([[segue identifier] isEqual: @"yellowButtonSettings"]) + { + vc.m_iSampleID = 3; + } + } + + +} + + +- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender +{ + if (([identifier isEqualToString:@"redButtonSettings"]) && m_bSettingsToggle) + { + return YES; + } + + if (([identifier isEqualToString:@"blueButtonSettings"]) && m_bSettingsToggle) + { + return YES; + } + + if (([identifier isEqualToString:@"greenButtonSettings"]) && m_bSettingsToggle) + { + return YES; + } + + if (([identifier isEqualToString:@"yellowButtonSettings"]) && m_bSettingsToggle) { + return YES; + } + + if ([identifier isEqualToString:@"globalSettingsSegue"]) { + return YES; + } + + + return NO; +} + + + + + +//--- UI Button Actions ---// + +- (IBAction)redButtonTouchDown:(UIButton *)sender +{ + sender.alpha = 0.2; + + if ((m_bRecordToggle == NO) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == NO)) + { + m_pcBackendInterface->startPlayback(0); + } + + else if ((m_bRecordToggle == NO) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == YES)) + { + m_pcBackendInterface->startRecordingFromMicrophone(0); + } + + else if ((m_bRecordToggle == YES) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == NO)) + { + m_pcBackendInterface->startRecordingOutput(0); + } +} + + +- (IBAction)redButtonTouchUp:(UIButton *)sender +{ + sender.alpha = 1.0; + + if ((m_bRecordToggle == NO) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == NO)) + { + m_pcBackendInterface->stopPlayback(0); + } + + else if ((m_bRecordToggle == NO) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == YES)) + { + m_pcBackendInterface->stopRecordingFromMicrophone(0); + } + + else if ((m_bRecordToggle == YES) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == NO)) + { + m_pcBackendInterface->stopRecordingOutput(0); + } +} + + + +- (IBAction)blueButtonTouchDown:(UIButton *)sender +{ + sender.alpha = 0.2; + + if ((m_bRecordToggle == NO) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == NO)) + { +// m_pcBackEndInterface->startPlayback(1); + } + + else if ((m_bRecordToggle == NO) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == YES)) + { +// m_pcBackEndInterface->startRecordingFromMicrophone(1); + } + + else if ((m_bRecordToggle == YES) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == NO)) + { +// m_pcBackEndInterface->startRecordingOutput(1); + } + +} + +- (IBAction)blueButtonTouchUp:(UIButton *)sender +{ + sender.alpha = 1.0; + + if ((m_bRecordToggle == NO) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == NO)) + { +// m_pcBackEndInterface->stopPlayback(1); + } + + else if ((m_bRecordToggle == NO) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == YES)) + { +// m_pcBackEndInterface->stopRecordingFromMicrophone(1); + } + + else if ((m_bRecordToggle == YES) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == NO)) + { +// m_pcBackEndInterface->stopRecordingOutput(1); + } +} + + + +- (IBAction)greenButtonTouchDown:(UIButton *)sender +{ + sender.alpha = 0.2; + + if ((m_bRecordToggle == NO) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == NO)) + { +// m_pcBackEndInterface->startPlayback(2); + } + + else if ((m_bRecordToggle == NO) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == YES)) + { +// m_pcBackEndInterface->startRecordingFromMicrophone(2); + } + + else if ((m_bRecordToggle == YES) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == NO)) + { +// m_pcBackEndInterface->startRecordingOutput(2); + } +} + +- (IBAction)greenButtonTouchUp:(UIButton *)sender +{ + sender.alpha = 1.0; + + if ((m_bRecordToggle == NO) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == NO)) + { +// m_pcBackEndInterface->stopPlayback(2); + } + + else if ((m_bRecordToggle == NO) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == YES)) + { +// m_pcBackEndInterface->stopRecordingFromMicrophone(2); + } + + else if ((m_bRecordToggle == YES) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == NO)) + { +// m_pcBackEndInterface->stopRecordingOutput(2); + } +} + + + +- (IBAction)yellowButtonTouchDown:(UIButton *)sender +{ + sender.alpha = 0.2; + + if ((m_bRecordToggle == NO) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == NO)) + { +// m_pcBackEndInterface->startPlayback(3); + } + + else if ((m_bRecordToggle == NO) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == YES)) + { +// m_pcBackEndInterface->startRecordingFromMicrophone(3); + } + + else if ((m_bRecordToggle == YES) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == NO)) + { +// m_pcBackEndInterface->startRecordingOutput(3); + } +} + +- (IBAction)yellowButtonTouchUp:(UIButton *)sender +{ + sender.alpha = 1.0; + + if ((m_bRecordToggle == NO) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == NO)) + { +// m_pcBackEndInterface->stopPlayback(3); + } + + else if ((m_bRecordToggle == NO) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == YES)) + { +// m_pcBackEndInterface->stopRecordingFromMicrophone(3); + } + + else if ((m_bRecordToggle == YES) && (m_bSettingsToggle == NO) && (m_bMicrophoneToggle == NO)) + { +// m_pcBackEndInterface->stopRecordingOutput(3); + } +} + + + + + +//--- Modifier Keys ---// + +- (IBAction)settingsButtonClicked:(UIButton *)sender +{ + if (m_bSettingsToggle == YES) + { + sender.alpha = 1.0f; + [[self view] setBackgroundColor:[UIColor colorWithRed:0.0f green:0.121f blue:0.179f alpha:1.0f]]; + m_bSettingsToggle = NO; + } + + else + { + sender.alpha = 0.5f; + + // UnToggle Other Modifiers + m_bRecordToggle = NO; + m_bMicrophoneToggle = NO; + + [[self view] setBackgroundColor:[UIColor colorWithRed:0.1f green:0.1f blue:0.4f alpha:1.0f]]; + m_bSettingsToggle = YES; + } +} + + + +- (IBAction)recordButtonClicked:(UIButton *)sender +{ + if (m_bRecordToggle == YES) + { + sender.alpha = 1.0f; + [[self view] setBackgroundColor:[UIColor colorWithRed:0.0f green:0.121f blue:0.179f alpha:1.0f]]; + m_bRecordToggle = NO; + } + + else + { + sender.alpha = 0.5f; + + // UnToggle Other Modifiers + m_bSettingsToggle = NO; + m_bMicrophoneToggle = NO; + + [[self view] setBackgroundColor:[UIColor colorWithRed:0.3f green:0.1f blue:0.1f alpha:1.0f]]; + m_bRecordToggle = YES; + } +} + + + +- (IBAction)microphoneButtonClicked:(UIButton *)sender +{ + if (m_bMicrophoneToggle == YES) + { + sender.alpha = 1.0f; + [[self view] setBackgroundColor:[UIColor colorWithRed:0.0f green:0.121f blue:0.179f alpha:1.0f]]; + m_bMicrophoneToggle = NO; + } + + else + { + sender.alpha = 0.5f; + + // UnToggle Other Modifiers + m_bSettingsToggle = NO; + m_bRecordToggle = NO; + + [[self view] setBackgroundColor:[UIColor colorWithRed:0.1f green:0.3f blue:0.1f alpha:1.0f]]; + m_bMicrophoneToggle = YES; + } +} + + + + +-(void)setBackendInterface:(GestureControllerInterface *)backendInterface +{ + m_pcBackendInterface = backendInterface; +} + + +- (void)dealloc +{ + +// [metronome dealloc]; + delete m_pcBackendInterface; + + [super dealloc]; +} + + + +@end diff --git a/Source/GUI/EffectSettingsViewController.h b/Source/GUI/EffectSettingsViewController.h deleted file mode 100644 index c502074..0000000 --- a/Source/GUI/EffectSettingsViewController.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// EffectSettingsViewController.h -// SharedLibrary -// -// Created by Anand on 3/9/14. -// Copyright (c) 2014 GTCMT. All rights reserved. -// - -#import -#include "UserInterfaceData.h" -#include "GestureControllerInterface.h" -#include "Macros.h" - - -@interface EffectSettingsViewController : UIViewController { - -// BOOL m_bEffectBypassToggle[NUM_EFFECTS]; -// int m_iCurrentEffectChosen; -// int m_iCurrentEffectPosition; -// float m_fSliderValues[NUM_EFFECTS_PARAMS]; // these are just indicators, they will be mapped to actual effects params -// // which will be passed from the UserInterfaceData class - -} - -@property (nonatomic, assign) GestureControllerInterface* backEndInterface; -@property (nonatomic, assign) int m_iCurrentSampleID; - -@property (nonatomic,assign) SampleInfo *currentData; - -@property (retain, nonatomic) IBOutlet UISlider *slider1Object; -@property (retain, nonatomic) IBOutlet UISlider *slider2Object; -@property (retain, nonatomic) IBOutlet UISlider *slider3Object; -@property (retain, nonatomic) IBOutlet UISwitch *bypassButtonObject; -@property (retain, nonatomic) IBOutlet UIPickerView *pickerObject; -@end - diff --git a/Source/GUI/EffectSettingsViewController.mm b/Source/GUI/EffectSettingsViewController.mm deleted file mode 100644 index 2c39b36..0000000 --- a/Source/GUI/EffectSettingsViewController.mm +++ /dev/null @@ -1,287 +0,0 @@ -// -// EffectSettingsViewController.mm -// SharedLibrary -// -// Created by Anand on 3/9/14. -// Copyright (c) 2014 GTCMT. All rights reserved. -// - -#import "EffectSettingsViewController.h" - - -@interface EffectSettingsViewController () - -@property (nonatomic,retain) NSArray *effects; - -@property (retain, nonatomic) IBOutlet UILabel *slider1EffectParam; -@property (retain, nonatomic) IBOutlet UILabel *slider2EffectParam; -@property (retain, nonatomic) IBOutlet UILabel *slider3EffectParam; -@property (retain, nonatomic) IBOutlet UILabel *slider1CurrentValue; -@property (retain, nonatomic) IBOutlet UILabel *slider2CurrentValue; -@property (retain, nonatomic) IBOutlet UILabel *slider3CurrentValue; -@property (retain, nonatomic) IBOutlet UILabel *effectBeingModifiedLabel; - - -@end - - -static BOOL m_bEffectBypassToggle[NUM_EFFECTS]; -static int m_iCurrentEffectChosen[NUM_EFFECTS]; -static int m_iCurrentEffectPosition; -//static float m_fSliderValues[NUM_EFFECTS_PARAMS]; // these are just indicators, they will be mapped to actual effects params -// which will be passed from the UserInterfaceData class - - -@implementation EffectSettingsViewController - -@synthesize m_iCurrentSampleID; - - -- (IBAction)Slider1Changed:(UISlider *)sender -{ - _backEndInterface->setEffectParameter(m_iCurrentSampleID, m_iCurrentEffectPosition, PARAM_1, sender.value); - //redSample.sampleID = [NSNumber numberWithFloat:10]; -} - - -- (IBAction)Slider2Changed:(UISlider *)sender { - _backEndInterface->setEffectParameter(m_iCurrentSampleID, m_iCurrentEffectPosition, PARAM_2, sender.value); -} - - -- (IBAction)Slider3Changed:(UISlider *)sender { - _backEndInterface->setEffectParameter(m_iCurrentSampleID, m_iCurrentEffectPosition, PARAM_3, sender.value); -} - - -- (IBAction)gainSliderChanged:(UISlider *)sender -{ - _backEndInterface->setSampleParameter(m_iCurrentSampleID, PARAM_GAIN, sender.value); -} - -- (IBAction)bypassToggleButtonChanged:(UISwitch *)sender { - _backEndInterface->setEffectParameter(m_iCurrentSampleID, m_iCurrentEffectPosition, PARAM_BYPASS, sender.on); -} - - - - -- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView -{ - return 1; // Only 1 component -} - -- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { - return NUM_EFFECTS; - -} - -// the below routine will be called automatically -- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { - return self.effects[row]; -} - -// also called automatically -- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { - NSString *LabelEffectParam = self.effects[row]; - LabelEffectParam = [LabelEffectParam stringByAppendingString:@" Parameters"]; - [self.effectBeingModifiedLabel setText:LabelEffectParam]; - - switch (row) { - case 0: - [self.slider1EffectParam setText:@"Null"]; - [self.slider2EffectParam setText:@"Null"]; - [self.slider3EffectParam setText:@"Null"]; - m_iCurrentEffectChosen[m_iCurrentEffectPosition] = EFFECT_NONE; - [self.currentData.effectChain replaceObjectAtIndex:m_iCurrentEffectPosition withObject:[NSNumber numberWithInt:m_iCurrentEffectChosen[m_iCurrentEffectPosition]]]; - break; - case 1: - [self.slider1EffectParam setText:@"Frequency"]; - [self.slider2EffectParam setText:@"Depth"]; - [self.slider3EffectParam setText:@"LFO"]; - m_iCurrentEffectChosen[m_iCurrentEffectPosition] = EFFECT_TREMOLO; - [self.currentData.effectChain replaceObjectAtIndex:m_iCurrentEffectPosition withObject:[NSNumber numberWithInt:m_iCurrentEffectChosen[m_iCurrentEffectPosition]]]; - break; - case 2: - [self.slider1EffectParam setText:@"Time"]; - [self.slider2EffectParam setText:@"Feedback"]; - [self.slider3EffectParam setText:@"Wet/Dry"]; - m_iCurrentEffectChosen[m_iCurrentEffectPosition] = EFFECT_DELAY; - [self.currentData.effectChain replaceObjectAtIndex:m_iCurrentEffectPosition withObject:[NSNumber numberWithInt:m_iCurrentEffectChosen[m_iCurrentEffectPosition]]]; - break; - case 3: - [self.slider1EffectParam setText:@"Rate"]; - [self.slider2EffectParam setText:@"Width"]; - [self.slider3EffectParam setText:@"LFO"]; - m_iCurrentEffectChosen[m_iCurrentEffectPosition] = EFFECT_VIBRATO; - [self.currentData.effectChain replaceObjectAtIndex:m_iCurrentEffectPosition withObject:[NSNumber numberWithInt:m_iCurrentEffectChosen[m_iCurrentEffectPosition]]]; - break; - - case 4: - [self.slider1EffectParam setText:@"Gain"]; - [self.slider2EffectParam setText:@"Frequency"]; - [self.slider3EffectParam setText:@"Resonance"]; - m_iCurrentEffectChosen[m_iCurrentEffectPosition] = EFFECT_WAH; - [self.currentData.effectChain replaceObjectAtIndex:m_iCurrentEffectPosition withObject:[NSNumber numberWithInt:m_iCurrentEffectChosen[m_iCurrentEffectPosition]]]; - break; - - - case 5: - [self.slider1EffectParam setText:@"Size"]; - [self.slider2EffectParam setText:@"Interval"]; - [self.slider3EffectParam setText:@"Pool"]; - m_iCurrentEffectChosen[m_iCurrentEffectPosition] = EFFECT_GRANULAR; - [self.currentData.effectChain replaceObjectAtIndex:m_iCurrentEffectPosition withObject:[NSNumber numberWithInt:m_iCurrentEffectChosen[m_iCurrentEffectPosition]]]; - break; - - - default: - break; - } - - - _backEndInterface->addAudioEffect(m_iCurrentSampleID, m_iCurrentEffectPosition, (int)row); - -} - -- (IBAction)SegementControl:(UISegmentedControl *)sender { - switch(sender.selectedSegmentIndex){ - case 0: - m_iCurrentEffectPosition = 0; - if (m_bEffectBypassToggle[m_iCurrentEffectPosition]) [self.bypassButtonObject setOn:TRUE]; else [self.bypassButtonObject setOn:FALSE]; - [self.pickerObject selectRow:m_iCurrentEffectChosen[m_iCurrentEffectPosition] inComponent:0 animated:YES]; - [self.currentData.effectChain replaceObjectAtIndex:m_iCurrentEffectPosition withObject:[NSNumber numberWithInt:m_iCurrentEffectChosen[m_iCurrentEffectPosition]]]; - break; - case 1: - m_iCurrentEffectPosition = 1; - if (m_bEffectBypassToggle[m_iCurrentEffectPosition]) [self.bypassButtonObject setOn:TRUE]; else [self.bypassButtonObject setOn:FALSE]; - [self.pickerObject selectRow:m_iCurrentEffectChosen[m_iCurrentEffectPosition] inComponent:0 animated:YES]; - [self.currentData.effectChain replaceObjectAtIndex:m_iCurrentEffectPosition withObject:[NSNumber numberWithInt:m_iCurrentEffectChosen[m_iCurrentEffectPosition]]]; - break; - case 2: - m_iCurrentEffectPosition = 2; - if (m_bEffectBypassToggle[m_iCurrentEffectPosition]) [self.bypassButtonObject setOn:TRUE]; else [self.bypassButtonObject setOn:FALSE]; - [self.pickerObject selectRow:m_iCurrentEffectChosen[m_iCurrentEffectPosition] inComponent:0 animated:YES]; - [self.currentData.effectChain replaceObjectAtIndex:m_iCurrentEffectPosition withObject:[NSNumber numberWithInt:m_iCurrentEffectChosen[m_iCurrentEffectPosition]]]; - break; - case 3: - m_iCurrentEffectPosition = 3; - if (m_bEffectBypassToggle[m_iCurrentEffectPosition]) [self.bypassButtonObject setOn:TRUE]; else [self.bypassButtonObject setOn:FALSE]; - [self.pickerObject selectRow:m_iCurrentEffectChosen[m_iCurrentEffectPosition] inComponent:0 animated:YES]; - [self.currentData.effectChain replaceObjectAtIndex:m_iCurrentEffectPosition withObject:[NSNumber numberWithInt:m_iCurrentEffectChosen[m_iCurrentEffectPosition]]]; - break; - default: - break; - } - - -} - -// Segmented Control for Button Mode -- (IBAction)buttonModeChanged:(UISegmentedControl *)sender -{ - switch ((int)sender.selectedSegmentIndex) - { - case 0: - _backEndInterface->setMode(m_iCurrentSampleID, MODE_LOOP); - break; - - case 1: - _backEndInterface->setMode(m_iCurrentSampleID, MODE_TRIGGER); - break; - - case 2: - _backEndInterface->setMode(m_iCurrentSampleID, MODE_BEATREPEAT); - break; - - default: - break; - } - -} - -- (IBAction)quantizationSliderChanged:(UISlider *)sender -{ - _backEndInterface->setSampleParameter(m_iCurrentSampleID, PARAM_QUANTIZATION, (int)sender.value); -} - - - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (IBAction)bypassButton:(UISwitch *)sender { - -// switch(m_iCurrentEffectChosen[m_iCurrentEffectPosition]){ -// case EFFECT_TREMOLO: -// self.currentData.tremoloEffect.bypass = (sender.on ? [NSNumber numberWithInt:1]:[NSNumber numberWithInt:0]); -// m_bEffectBypassToggle[m_iCurrentEffectPosition] = (sender.on ? 1:0); -// break; -// case EFFECT_DELAY: -// self.currentData.delayEffect.bypass = (sender.on ? [NSNumber numberWithInt:1]:[NSNumber numberWithInt:0]); -// m_bEffectBypassToggle[m_iCurrentEffectPosition] = (sender.on ? 1:0); -// break; -// case EFFECT_VIBRATO: -// self.currentData.vibratoEffect.bypass = (sender.on ? [NSNumber numberWithInt:1]:[NSNumber numberWithInt:0]); -// m_bEffectBypassToggle[m_iCurrentEffectPosition] = (sender.on ? 1:0); -// break; -// case EFFECT_WAH: -// self.currentData.wahEffect.bypass = (sender.on ? [NSNumber numberWithInt:1]:[NSNumber numberWithInt:0]); -// m_bEffectBypassToggle[m_iCurrentEffectPosition] = (sender.on ? 1:0); -// break; -// case EFFECT_GRANULAR: -// self.currentData.wahEffect.bypass = (sender.on ? [NSNumber numberWithInt:1]:[NSNumber numberWithInt:0]); -// m_bEffectBypassToggle[m_iCurrentEffectPosition] = (sender.on ? 1:0); -// break; -// default: -// break; -// } - - _backEndInterface->setEffectParameter(_currentData.sampleID.intValue, m_iCurrentEffectPosition, PARAM_BYPASS, sender.on); -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - m_iCurrentEffectChosen[0] = EFFECT_NONE; - self.effects = @[@"None", @"Tremolo", @"Delay", @"Vibrato", @"Wah", @"Granularizer"]; - - // Do any additional setup after loading the view. - - //if (m_bEffectBypassToggle[0]) [self.bypassButtonObject setOn:TRUE]; else [self.bypassButtonObject setOn:FALSE]; -} - -- (void)didReceiveMemoryWarning -{ - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. -} - -- (void)dealloc { - [_effects release]; - //[_currentData release]; - [_slider1EffectParam release]; - [_slider2EffectParam release]; - [_slider3EffectParam release]; - [_slider1CurrentValue release]; - [_slider2CurrentValue release]; - [_slider3CurrentValue release]; - [_effectBeingModifiedLabel release]; - - [_slider1Object release]; - [_slider2Object release]; - [_slider3Object release]; - [_bypassButtonObject release]; - [_pickerObject release]; - -// delete _backEndInterface; - - [super dealloc]; -} -@end diff --git a/Source/GUI/GestureControllerViewController.h b/Source/GUI/GestureControllerViewController.h deleted file mode 100644 index cdb3f90..0000000 --- a/Source/GUI/GestureControllerViewController.h +++ /dev/null @@ -1,58 +0,0 @@ -// -// GestureControllerViewController.h -// GestureController -// -// Created by Govinda Ram Pingali on 11/10/13. -// Copyright (c) 2013 GTCMT. All rights reserved. -// - -#import -#import -#include "GestureControllerInterface.h" - -@interface GestureControllerViewController : UIViewController -{ - UIColor* blackColour; - UIColor* redColour; - UIColor* greenColour; - UIColor* blueColour; - UIColor* yellowColour; - - GestureControllerInterface* backEndInterface; - - bool m_bAudioToggleStatus_1; - bool m_bAudioToggleStatus_2; - - int m_iAudioEffectsStatus_1; - int m_iAudioEffectsStatus_2; -} - - -//--- Motion Processing ---// - -@property (strong, nonatomic) CMMotionManager *motionManager; - -- (void)motionDeviceUpdate: (CMDeviceMotion*) deviceMotion; - -- (void)processUserAcceleration: (CMAcceleration) userAcceleration; - - - -//--- UI Actions ---// - -- (UIColor*)colorFromHexString : (NSString*)hexString; - -- (IBAction)redButtonDown:(UIButton *)sender; -- (IBAction)redButtonUp:(UIButton *)sender; - -- (IBAction)greenButtonDown:(UIButton *)sender; -- (IBAction)greenButtonUp:(UIButton *)sender; - -- (IBAction)blueButtonDown:(id)sender; -- (IBAction)blueButtonUp:(UIButton *)sender; - -- (IBAction)yellowButtonDown:(UIButton *)sender; -- (IBAction)yellowButtonUp:(UIButton *)sender; - - -@end diff --git a/Source/GUI/GestureControllerViewController.mm b/Source/GUI/GestureControllerViewController.mm deleted file mode 100644 index 85a00bb..0000000 --- a/Source/GUI/GestureControllerViewController.mm +++ /dev/null @@ -1,206 +0,0 @@ -// -// GestureControllerViewController.m -// GestureController -// -// Created by Govinda Ram Pingali on 11/10/13. -// Copyright (c) 2013 GTCMT. All rights reserved. -// - -#import "GestureControllerViewController.h" - -#define SAMPLING_RATE 0.1 - -@interface GestureControllerViewController () - -@end - -@implementation GestureControllerViewController - - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - backEndInterface = new GestureControllerInterface; - - - self.motionManager = [[CMMotionManager alloc] init]; - self.motionManager.deviceMotionUpdateInterval = SAMPLING_RATE; - - - [self.motionManager startDeviceMotionUpdatesToQueue: [NSOperationQueue currentQueue] - withHandler:^ (CMDeviceMotion *deviceMotion, NSError *error) { - [self motionDeviceUpdate:deviceMotion]; - if(error){ - NSLog(@"%@", error); - } - }]; - - - blackColour = [self colorFromHexString:@"#000000"]; - redColour = [self colorFromHexString:@"#420000"]; - greenColour = [self colorFromHexString:@"#004200"]; - blueColour = [self colorFromHexString:@"#000042"]; - yellowColour = [self colorFromHexString:@"#424200"]; - - - m_bAudioToggleStatus_1 = false; - m_bAudioToggleStatus_2 = false; - m_iAudioEffectsStatus_1 = 0; - m_iAudioEffectsStatus_2 = 0; -} - - - -//--- Motion Processing Methods ---// - -- (void) motionDeviceUpdate: (CMDeviceMotion*) deviceMotion -{ - - double attitude[3]; - - attitude[0] = deviceMotion.attitude.roll; - attitude[1] = deviceMotion.attitude.pitch; - attitude[2] = deviceMotion.attitude.yaw; -// [osc sendFloat:@"/attitude" : attitude : 3]; - - - double acceleration[3]; - - acceleration[0] = deviceMotion.userAcceleration.x; - acceleration[1] = deviceMotion.userAcceleration.y; - acceleration[2] = deviceMotion.userAcceleration.z; - [self processUserAcceleration:deviceMotion.userAcceleration]; -// [osc sendFloat:@"/acceleration" : acceleration : 3]; - - - double quaternion[4]; - - quaternion[0] = deviceMotion.attitude.quaternion.w; - quaternion[1] = deviceMotion.attitude.quaternion.x; - quaternion[2] = deviceMotion.attitude.quaternion.y; - quaternion[3] = deviceMotion.attitude.quaternion.z; -// [osc sendFloat:@"/quaternion" : quaternion : 4]; - - - double rotationRate[3]; - rotationRate[0] = deviceMotion.rotationRate.x; - rotationRate[1] = deviceMotion.rotationRate.y; - rotationRate[2] = deviceMotion.rotationRate.z; -// [osc sendFloat:@"/rotationRate" : rotationRate : 3]; - - - double gravity[3]; - gravity[0] = deviceMotion.gravity.x; - gravity[1] = deviceMotion.gravity.y; - gravity[2] = deviceMotion.gravity.z; -// [osc sendFloat:@"/gravity" : gravity : 3]; - -} - - -- (void)processUserAcceleration: (CMAcceleration) userAcceleration -{ - double threshold = 10.0f; - - - double amplitude = pow( (pow(userAcceleration.x, 2) + pow(userAcceleration.y, 2) + pow(userAcceleration.z, 2)), 0.5); - - if (amplitude > threshold || amplitude < -threshold) { -// [osc sendBang:@"/trigger"]; - } -} - - - - - -//--- UI Action Methods ---// - -- (UIColor*)colorFromHexString:(NSString *)hexString { - unsigned rgbValue = 0; - NSScanner *scanner = [NSScanner scannerWithString:hexString]; - [scanner setScanLocation:1]; // bypass '#' character - [scanner scanHexInt:&rgbValue]; - return [UIColor colorWithRed:((rgbValue & 0xFF0000) >> 16)/255.0 green:((rgbValue & 0xFF00) >> 8)/255.0 blue:(rgbValue & 0xFF)/255.0 alpha:1.0]; - -} - - -- (IBAction)redButtonDown:(UIButton *)sender { -// self.view.backgroundColor = redColour; - backEndInterface->startPlayback(0); -// [osc sendToggle:@"/red" : true]; -} - - -- (IBAction)redButtonUp:(UIButton *)sender { -// self.view.backgroundColor = blackColour; - backEndInterface->stopPlayback(0); -// [osc sendToggle:@"/red" : false]; -} - - -- (IBAction)greenButtonDown:(UIButton *)sender { -// self.view.backgroundColor = greenColour; - backEndInterface->startPlayback(1); -// [osc sendToggle:@"/green" : true]; -} - - -- (IBAction)greenButtonUp:(UIButton *)sender { -// self.view.backgroundColor = blackColour; - backEndInterface->stopPlayback(1); -// [osc sendToggle:@"/green" : false]; -} - - -- (IBAction)blueButtonDown:(id)sender { -// self.view.backgroundColor = blueColour; - backEndInterface->startPlayback(2); -// [osc sendToggle:@"/blue" : true]; -} - - -- (IBAction)blueButtonUp:(UIButton *)sender { -// self.view.backgroundColor = blackColour; - backEndInterface->stopPlayback(2); -// [osc sendToggle:@"/blue" : false]; -} - - -- (IBAction)yellowButtonDown:(UIButton *)sender { -// self.view.backgroundColor = yellowColour; - backEndInterface->startPlayback(3); -// [osc sendToggle:@"/yellow" : true]; -} - - -- (IBAction)yellowButtonUp:(UIButton *)sender { -// self.view.backgroundColor = blackColour; - backEndInterface->stopPlayback(3); -// [osc sendToggle:@"/yellow" : false]; -} - - - - - -- (void)didReceiveMemoryWarning -{ - [super didReceiveMemoryWarning]; -} - - - -- (void)dealloc -{ - - - delete backEndInterface; - - [super dealloc]; -} - - -@end diff --git a/Source/GUI/GlobalSettingsViewController.h b/Source/GUI/GlobalSettingsViewController.h index e143a11..c111f71 100644 --- a/Source/GUI/GlobalSettingsViewController.h +++ b/Source/GUI/GlobalSettingsViewController.h @@ -2,7 +2,7 @@ // GlobalSettingsViewController.h // GestureController // -// Created by Govinda Ram Pingali on 4/10/14. +// Created by Govinda Ram Pingali on 4/28/14. // Copyright (c) 2014 GTCMT. All rights reserved. // diff --git a/Source/GUI/GlobalSettingsViewController.mm b/Source/GUI/GlobalSettingsViewController.mm new file mode 100644 index 0000000..1cc9357 --- /dev/null +++ b/Source/GUI/GlobalSettingsViewController.mm @@ -0,0 +1,50 @@ +// +// GlobalSettingsViewController.m +// GestureController +// +// Created by Govinda Ram Pingali on 4/28/14. +// Copyright (c) 2014 GTCMT. All rights reserved. +// + +#import "GlobalSettingsViewController.h" + +@interface GlobalSettingsViewController () + +@end + +@implementation GlobalSettingsViewController + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil +{ + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) + { + // Custom initialization + } + return self; +} + +- (void)viewDidLoad +{ + [super viewDidLoad]; + // Do any additional setup after loading the view. +} + +- (void)didReceiveMemoryWarning +{ + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender +{ + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git a/Source/GUI/SampleSettingsViewController.h b/Source/GUI/SampleSettingsViewController.h new file mode 100644 index 0000000..0d058dd --- /dev/null +++ b/Source/GUI/SampleSettingsViewController.h @@ -0,0 +1,19 @@ +// +// SampleSettingsViewController.h +// GestureController +// +// Created by Govinda Ram Pingali on 4/28/14. +// Copyright (c) 2014 GTCMT. All rights reserved. +// + +#import + +@interface SampleSettingsViewController : UIViewController +{ + +} + + +@property (nonatomic) int m_iSampleID; + +@end diff --git a/Source/GUI/SampleSettingsViewController.mm b/Source/GUI/SampleSettingsViewController.mm new file mode 100644 index 0000000..f5cb3a4 --- /dev/null +++ b/Source/GUI/SampleSettingsViewController.mm @@ -0,0 +1,74 @@ +// +// SampleSettingsViewController.m +// GestureController +// +// Created by Govinda Ram Pingali on 4/28/14. +// Copyright (c) 2014 GTCMT. All rights reserved. +// + +#import "SampleSettingsViewController.h" + +@interface SampleSettingsViewController () + +@end + +@implementation SampleSettingsViewController + +@synthesize m_iSampleID; + + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil +{ + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + + if (self) + { + // Custom initialization + } + return self; +} + +- (void)viewDidLoad +{ + [super viewDidLoad]; + + if (m_iSampleID == 0) + { + [[self view] setBackgroundColor:[UIColor colorWithRed:0.4f green:0.0f blue:0.0f alpha:1.0f]]; + } + + else if (m_iSampleID == 1) + { + [[self view] setBackgroundColor:[UIColor colorWithRed:0.0f green:0.0f blue:0.4f alpha:1.0f]]; + } + + else if (m_iSampleID == 2) + { + [[self view] setBackgroundColor:[UIColor colorWithRed:0.0f green:0.4f blue:0.0f alpha:1.0f]]; + } + + else if (m_iSampleID == 3) + { + [[self view] setBackgroundColor:[UIColor colorWithRed:0.4f green:0.4f blue:0.0f alpha:1.0f]]; + } + +} + +- (void)didReceiveMemoryWarning +{ + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender +{ + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git a/Source/GUI/SettingsViewController.h b/Source/GUI/SettingsViewController.h deleted file mode 100644 index 65f0c6b..0000000 --- a/Source/GUI/SettingsViewController.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// SettingsViewController.h -// GestureController -// -// Created by Govinda Ram Pingali on 11/13/13. -// Copyright (c) 2013 GTCMT. All rights reserved. -// - -#import - -@interface SettingsViewController : UIViewController -{ - -} - - -- (IBAction)masterGain:(UISlider *)sender; -//@property (weak, nonatomic) IBOutlet UISlider *masterGainSlider; - - -- (IBAction)audioToggle:(UISwitch *)sender; -//@property (weak, nonatomic) IBOutlet UISwitch *audioToggleSwitch; - - - - - - -@end diff --git a/Source/GUI/SettingsViewController.mm b/Source/GUI/SettingsViewController.mm deleted file mode 100644 index 2bab2b1..0000000 --- a/Source/GUI/SettingsViewController.mm +++ /dev/null @@ -1,79 +0,0 @@ -// -// SettingsViewController.m -// GestureController -// -// Created by Govinda Ram Pingali on 11/13/13. -// Copyright (c) 2013 GTCMT. All rights reserved. -// - -#import "SettingsViewController.h" - -@interface SettingsViewController () - -@end - -@implementation SettingsViewController - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - - if (self) { - // Custom initialization - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - - // Do any additional setup after loading the view. -} - -- (void)didReceiveMemoryWarning -{ - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. -} - - -- (IBAction)masterGain:(UISlider *)sender -{ - double gain[] = {sender.value}; -// [osc sendFloat:@"/masterGain" : gain : 1]; -} - - -- (IBAction)audioToggle:(UISwitch *)sender -{ - if (sender.on) - { -// [osc sendToggle:@"/master" :true]; - } else - { -// [osc sendToggle:@"/master" :false]; - } -} - - - - -- (void)dealloc -{ - - // [_toggleAudioButton release]; - - // delete backEndInterface; - - - // [_removeEffectButton release]; - - [super dealloc]; - -} - - - -@end diff --git a/Source/GUI/SharedLibraryViewController.h b/Source/GUI/SharedLibraryViewController.h deleted file mode 100644 index b1f20f8..0000000 --- a/Source/GUI/SharedLibraryViewController.h +++ /dev/null @@ -1,49 +0,0 @@ -// -// SharedLibraryViewController.h -// SharedLibrary -// -// Created by Govinda Ram Pingali on 3/8/14. -// Copyright (c) 2014 GTCMT. All rights reserved. -// - -#import -#include "GestureControllerInterface.h" -#import "UserInterfaceData.h" -#import "EffectSettingsViewController.h" - -#import "Metronome.h" -#import - -@interface SharedLibraryViewController : UIViewController -{ - GestureControllerInterface* backEndInterface; - - bool m_bRedButtonToggleStatus; // is red button pressed - bool m_bBlueButtonToggleStatus; // is blue button pressed - bool m_bModeToggleStatus; // if settings mode, segue to effectSettings scene, else start playback - - Metronome* metronome; - - bool* m_pbRecordToggle; - bool* m_pbPlaybackToggle; -} - - -@property (strong, nonatomic) CMMotionManager *motionManager; - -- (void)motionDeviceUpdate: (CMDeviceMotion*) deviceMotion; - -- (void)processUserAcceleration: (CMAcceleration) userAcceleration; - -//@property (retain, nonatomic) IBOutlet UIButton *toggleAudioButton; -//- (IBAction)toggleAudioButtonClicked:(UIButton *)sender; -// -// -//- (IBAction)addEffectButtonClicked:(UIButton *)sender; - - -- (IBAction)toggleMetronome:(UISwitch *)sender; - -- (void) beat: (int) beatNo; - -@end diff --git a/Source/GUI/SharedLibraryViewController.mm b/Source/GUI/SharedLibraryViewController.mm deleted file mode 100644 index b55052d..0000000 --- a/Source/GUI/SharedLibraryViewController.mm +++ /dev/null @@ -1,596 +0,0 @@ -// -// SharedLibraryViewController.mm -// SharedLibrary -// -// Created by Govinda Ram Pingali on 3/8/14. -// Copyright (c) 2014 GTCMT. All rights reserved. -// - -# define SAMPLING_RATE 0.05f -# define LIN_ACC_THRESHOLD 8.0f -#define NUM_BUTTONS 4 - - -#import "SharedLibraryViewController.h" - - -@interface SharedLibraryViewController () { - SampleInfo *redSample; - SampleInfo *blueSample; - SampleInfo *greenSample; - SampleInfo *yellowSample; - -} - -@end - -@implementation SharedLibraryViewController - -- (void)viewDidLoad -{ - [super viewDidLoad]; - // Do any additional setup after loading the view, typically from a nib. - redSample = [[SampleInfo alloc] init]; - redSample.delayEffect = [[cDelay alloc] init]; - redSample.tremoloEffect = [[cTremolo alloc] init]; - redSample.vibratoEffect = [[cVibrato alloc] init]; - redSample.wahEffect = [[cWah alloc] init]; - - - blueSample = [[SampleInfo alloc] init]; - blueSample.delayEffect = [[cDelay alloc] init]; - blueSample.tremoloEffect = [[cTremolo alloc] init]; - blueSample.vibratoEffect = [[cVibrato alloc] init]; - blueSample.wahEffect = [[cWah alloc] init]; - - - greenSample = [[SampleInfo alloc] init]; - greenSample.delayEffect = [[cDelay alloc] init]; - greenSample.tremoloEffect = [[cTremolo alloc] init]; - greenSample.vibratoEffect = [[cVibrato alloc] init]; - greenSample.wahEffect = [[cWah alloc] init]; - - - yellowSample = [[SampleInfo alloc] init]; - yellowSample.delayEffect = [[cDelay alloc] init]; - yellowSample.tremoloEffect = [[cTremolo alloc] init]; - yellowSample.vibratoEffect = [[cVibrato alloc] init]; - yellowSample.wahEffect = [[cWah alloc] init]; - -// redSample.sampleID = [NSNumber numberWithFloat:10]; -// redSample.delayEffect.time = [NSNumber numberWithFloat:0.5]; -// redSample.delayEffect.feedback = [NSNumber numberWithFloat:0.75]; -// - - - backEndInterface = new GestureControllerInterface; - - m_pbPlaybackToggle = new bool [NUM_BUTTONS]; - m_pbRecordToggle = new bool [NUM_BUTTONS]; - - for (int i=0; i < NUM_BUTTONS; i++) - { - m_pbRecordToggle[i] = false; - m_pbPlaybackToggle[i] = false; - } - - - NSString *sample1Path = [[NSBundle mainBundle] pathForResource:@"Playback0" ofType:@"wav"]; - NSString *sample2Path = [[NSBundle mainBundle] pathForResource:@"Playback1" ofType:@"wav"]; - NSString *sample3Path = [[NSBundle mainBundle] pathForResource:@"Playback2" ofType:@"wav"]; - NSString *sample4Path = [[NSBundle mainBundle] pathForResource:@"Playback3" ofType:@"wav"]; - NSString *sample5Path = [[NSBundle mainBundle] pathForResource:@"Playback4" ofType:@"wav"]; - - - backEndInterface->loadAudioFile(0, sample1Path); - backEndInterface->loadAudioFile(1, sample2Path); - backEndInterface->loadAudioFile(2, sample3Path); - backEndInterface->loadAudioFile(3, sample4Path); - backEndInterface->loadAudioFile(4, sample5Path); - - - m_bRedButtonToggleStatus = false; - m_bBlueButtonToggleStatus = false; - m_bModeToggleStatus = true; // settings mode by default - - - - - metronome = [[Metronome alloc] init]; - [metronome setDelegate:self]; - - - - - self.motionManager = [[CMMotionManager alloc] init]; - self.motionManager.deviceMotionUpdateInterval = SAMPLING_RATE; - - - [self.motionManager startDeviceMotionUpdatesToQueue: [NSOperationQueue currentQueue] - withHandler:^ (CMDeviceMotion *deviceMotion, NSError *error) { - [self motionDeviceUpdate:deviceMotion]; - if(error){ - NSLog(@"%@", error); - } - }]; - -} - -- (void)didReceiveMemoryWarning -{ - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. -} - - - -//- (IBAction)redButtonPressed:(id)sender -//{ -// NSLog(@"Chain contents %@ %@ %@ %@", [redSample.effectChain objectAtIndex:0], [redSample.effectChain objectAtIndex:1], [redSample.effectChain objectAtIndex:2], [redSample.effectChain objectAtIndex:3]); -// NSLog(@"Bypass contents %@ %@ %@ %@", redSample.delayEffect.bypass.stringValue,redSample.tremoloEffect.bypass.stringValue,redSample.vibratoEffect.bypass.stringValue,redSample.wahEffect.bypass.stringValue); -// -// if (!m_bModeToggleStatus) -// { -// if (!m_bRedButtonToggleStatus) -// { -// backEndInterface->startPlayback(0); -// m_bRedButtonToggleStatus = true; -// } -// -// else -// { -// backEndInterface->stopPlayback(0); -// m_bRedButtonToggleStatus = false; -// } -// -// } -//} - - -- (IBAction)redButtonTouchDown:(id)sender -{ - if (!m_bModeToggleStatus) - { - backEndInterface->startPlayback(0); - self.view.backgroundColor = [UIColor redColor]; - } -} - - -- (IBAction)redButtonTouchUp:(id)sender -{ - if (!m_bModeToggleStatus) - { - backEndInterface->stopPlayback(0); - self.view.backgroundColor = [UIColor whiteColor]; - } -} - - - -- (IBAction)blueButtonTouchUp:(id)sender -{ - if (!m_bModeToggleStatus) - { - backEndInterface->stopPlayback(1); - self.view.backgroundColor = [UIColor whiteColor]; - } -} - - -- (IBAction)blueButtonTouchDown:(id)sender -{ - if (!m_bModeToggleStatus) - { - backEndInterface->startPlayback(1); - self.view.backgroundColor = [UIColor blueColor]; - } -} - - - - -- (IBAction)greenButtonTouchDown:(id)sender -{ - if (!m_bModeToggleStatus) - { - backEndInterface->startPlayback(2); - self.view.backgroundColor = [UIColor greenColor]; - } -} - - -- (IBAction)greenButtonTouchUp:(id)sender -{ - if (!m_bModeToggleStatus) - { - backEndInterface->stopPlayback(2); - self.view.backgroundColor = [UIColor whiteColor]; - } -} - - - -- (IBAction)yellowButtonTouchDown:(id)sender -{ - if (!m_bModeToggleStatus) - { - backEndInterface->startPlayback(3); - self.view.backgroundColor = [UIColor yellowColor]; - } -} - -- (IBAction)yellowButtonTouchUp:(id)sender -{ - if (!m_bModeToggleStatus) - { - backEndInterface->stopPlayback(3); - self.view.backgroundColor = [UIColor whiteColor]; - } -} - - - - - -- (IBAction)modeSwitchToggled:(UISwitch *)sender -{ - if (sender.on) - { - m_bModeToggleStatus = true; -// NSLog(m_bModeToggleStatus?@"Settings mode":@"Playback mode"); - } - - else - { - m_bModeToggleStatus = false; -// NSLog(m_bModeToggleStatus?@"Settings mode":@"Playback mode"); - } - -} - - - -// conditional segue - Switch scenes only if we are in settings mode -- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender -{ - if (([identifier isEqualToString:@"conditionSegue1"]) && m_bModeToggleStatus) { - return YES; - } - if (([identifier isEqualToString:@"conditionSegue2"]) && m_bModeToggleStatus) { - return YES; - } - if (([identifier isEqualToString:@"conditionSegue3"]) && m_bModeToggleStatus) { - return YES; - } - if (([identifier isEqualToString:@"conditionSegue4"]) && m_bModeToggleStatus) { - return YES; - } - - return NO; -} - - -- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - - EffectSettingsViewController *EffectSettingsVC = segue.destinationViewController; - if ([segue.identifier isEqualToString:@"conditionSegue1" ]) { - EffectSettingsVC.view.backgroundColor = [UIColor redColor]; - EffectSettingsVC.currentData = redSample; - EffectSettingsVC.m_iCurrentSampleID = 0; - EffectSettingsVC.backEndInterface = backEndInterface; - } - else if ([segue.identifier isEqualToString:@"conditionSegue2" ]) { - EffectSettingsVC.view.backgroundColor = [UIColor blueColor]; - EffectSettingsVC.currentData = blueSample; - EffectSettingsVC.m_iCurrentSampleID = 1; - EffectSettingsVC.backEndInterface = backEndInterface; - } - else if ([segue.identifier isEqualToString:@"conditionSegue3" ]) { - EffectSettingsVC.view.backgroundColor = [UIColor greenColor]; - EffectSettingsVC.currentData = greenSample; - EffectSettingsVC.m_iCurrentSampleID = 2; - EffectSettingsVC.backEndInterface = backEndInterface; - } - else if ([segue.identifier isEqualToString:@"conditionSegue4" ]) { - EffectSettingsVC.view.backgroundColor = [UIColor yellowColor]; - EffectSettingsVC.currentData = yellowSample; - EffectSettingsVC.m_iCurrentSampleID = 3; - EffectSettingsVC.backEndInterface = backEndInterface; - } -} - - - - - - -//--- Motion Processing Methods ---// - -- (void) motionDeviceUpdate: (CMDeviceMotion*) deviceMotion -{ - -// double attitude[3]; - -// attitude[0] = deviceMotion.attitude.roll; -// attitude[1] = deviceMotion.attitude.pitch; -// attitude[2] = deviceMotion.attitude.yaw; -// [osc sendFloat:@"/attitude" : attitude : 3]; -// backEndInterface->setEffectParameter(0, 0, PARAM_1, ((deviceMotion.attitude.pitch + M_PI/2) * 2.0f)); -// backEndInterface->setEffectParameter(3, 0, PARAM_2, (deviceMotion.attitude.pitch + M_PI_2) / M_PI); -// backEndInterface->setEffectParameter(2, 0, PARAM_2, (deviceMotion.attitude.pitch + M_PI_2) / M_PI); -// backEndInterface->setEffectParameter(1, 0, PARAM_2, (deviceMotion.attitude.pitch + M_PI_2) / M_PI); -// backEndInterface->setEffectParameter(0, 0, PARAM_2, (deviceMotion.attitude.pitch + M_PI_2) / M_PI); - -// backEndInterface->setSampleParameter(2, PARAM_QUANTIZATION, (((deviceMotion.attitude.roll + M_PI_2) / M_PI) * 2.0f) + 4.0f); -// backEndInterface->setParameter(1, 1, 0, ((attitude[1] + M_PI/2) * 2.0f)); -// backEndInterface->setParameter(int sampleID, int effectPosition, int parameterID, float value - -// double acceleration[3]; - -// acceleration[0] = deviceMotion.userAcceleration.x; -// acceleration[1] = deviceMotion.userAcceleration.y; -// acceleration[2] = deviceMotion.userAcceleration.z; - [self processUserAcceleration:deviceMotion.userAcceleration]; -// [osc sendFloat:@"/acceleration" : acceleration : 3]; - - -// double quaternion[4]; - -// quaternion[0] = deviceMotion.attitude.quaternion.w; -// quaternion[1] = deviceMotion.attitude.quaternion.x; -// quaternion[2] = deviceMotion.attitude.quaternion.y; -// quaternion[3] = deviceMotion.attitude.quaternion.z; -// [osc sendFloat:@"/quaternion" : quaternion : 4]; - - -// double rotationRate[3]; -// rotationRate[0] = deviceMotion.rotationRate.x; -// rotationRate[1] = deviceMotion.rotationRate.y; -// rotationRate[2] = deviceMotion.rotationRate.z; -// [osc sendFloat:@"/rotationRate" : rotationRate : 3]; - - -// double gravity[3]; -// gravity[0] = deviceMotion.gravity.x; -// gravity[1] = deviceMotion.gravity.y; -// gravity[2] = deviceMotion.gravity.z; -// [osc sendFloat:@"/gravity" : gravity : 3]; - -} - - - - -- (void)processUserAcceleration: (CMAcceleration) userAcceleration -{ - double amplitude = pow( (pow(userAcceleration.x, 2) + pow(userAcceleration.y, 2) + pow(userAcceleration.z, 2)), 0.5); - - if (amplitude > LIN_ACC_THRESHOLD || amplitude < -(LIN_ACC_THRESHOLD)) - { -// [osc sendBang:@"/trigger"]; - backEndInterface->startPlayback(4); - } -} - - -- (IBAction)redButtonRecordDown:(UIButton *)sender { - - sender.alpha = 1.0f; - backEndInterface->startRecording(0); - -} - - -- (IBAction)redButtonRecordUp:(UIButton *)sender { - - sender.alpha = 0.2f; - backEndInterface->stopRecording(0); -} - - - -- (IBAction)redButtonPlaybackFileToggle:(UIButton *)sender { - - if (m_pbPlaybackToggle[0]) - { - sender.alpha = 0.2f; - m_pbPlaybackToggle[0] = false; - backEndInterface->togglePlaybackRecordingFile(0, true); - } - - else - { - sender.alpha = 1.0f; - m_pbPlaybackToggle[0] = true; - backEndInterface->togglePlaybackRecordingFile(0, false); - } -} - -- (IBAction)redButtonMasterRecordDown:(UIButton *)sender { - - sender.alpha = 1.0f; - backEndInterface->startRecordingOutput(0); -} - -- (IBAction)redButtonMasterRecordUp:(UIButton *)sender { - - sender.alpha = 0.2f; - backEndInterface->stopRecordingOutput(0); -} - - -- (IBAction)blueButtonRecordDown:(UIButton *)sender { - - sender.alpha = 1.0f; - backEndInterface->startRecording(1); - -} - -- (IBAction)blueButtonRecordUp:(UIButton *)sender { - - sender.alpha = 0.2f; - backEndInterface->stopRecording(1); -} - - - -- (IBAction)blueButtonPlaybackFileToggle:(UIButton *)sender { - - if (m_pbPlaybackToggle[1]) - { - sender.alpha = 0.4f; - m_pbPlaybackToggle[1] = false; - backEndInterface->togglePlaybackRecordingFile(1, true); - } - - else - { - sender.alpha = 1.0f; - m_pbPlaybackToggle[1] = true; - backEndInterface->togglePlaybackRecordingFile(1, false); - } - -} - -- (IBAction)blueButtonMasterRecordDown:(UIButton *)sender { - - sender.alpha = 1.0f; - backEndInterface->startRecordingOutput(1); -} - -- (IBAction)blueButtonMasterRecordUp:(UIButton *)sender { - - sender.alpha = 0.2f; - backEndInterface->stopRecordingOutput(1); -} - - - -- (IBAction)greenButtonRecordDown:(UIButton *)sender { - - sender.alpha = 1.0f; - backEndInterface->startRecording(2); -} - -- (IBAction)greenButtonRecordUp:(UIButton *)sender { - - sender.alpha = 0.4f; - backEndInterface->stopRecording(2); -} - - -- (IBAction)greenButtonPlaybackFileToggle:(UIButton *)sender { - - if (m_pbPlaybackToggle[2]) - { - sender.alpha = 0.4f; - m_pbPlaybackToggle[2] = false; - backEndInterface->togglePlaybackRecordingFile(2, true); - } - - else - { - sender.alpha = 1.0f; - m_pbPlaybackToggle[2] = true; - backEndInterface->togglePlaybackRecordingFile(2, false); - } - -} - -- (IBAction)greenButtonMasterRecordDown:(UIButton *)sender { - - sender.alpha = 1.0f; - backEndInterface->startRecordingOutput(2); -} - -- (IBAction)greenButtonMasterRecordUp:(UIButton *)sender { - - sender.alpha = 0.2f; - backEndInterface->stopRecordingOutput(2); -} - - - -- (IBAction)yellowButtonRecordDown:(UIButton *)sender { - sender.alpha = 2.0f; - backEndInterface->startRecording(3); -} - - -- (IBAction)yellowButtonRecordUp:(UIButton *)sender { - sender.alpha = 0.4f; - backEndInterface->stopRecording(3); -} - - -- (IBAction)yellowButtonPlaybackFileToggle:(UIButton *)sender { - - if (m_pbPlaybackToggle[3]) - { - sender.alpha = 0.4f; - m_pbPlaybackToggle[3] = false; - backEndInterface->togglePlaybackRecordingFile(3, true); - } - - else - { - sender.alpha = 1.0f; - m_pbPlaybackToggle[3] = true; - backEndInterface->togglePlaybackRecordingFile(3, false); - } - -} - -- (IBAction)yellowButtonMasterRecordDown:(UIButton *)sender { - - sender.alpha = 1.0f; - backEndInterface->startRecordingOutput(3); -} - -- (IBAction)yellowButtonMasterRecordUp:(UIButton *)sender { - - sender.alpha = 0.2f; - backEndInterface->stopRecordingOutput(3); -} - - - - -- (void)dealloc -{ - -// [_toggleAudioButton release]; - - [metronome dealloc]; - - delete backEndInterface; - delete [] m_pbPlaybackToggle; - delete [] m_pbRecordToggle; - - [super dealloc]; -} - - - -- (IBAction)toggleMetronome:(UISwitch *)sender -{ - if (sender.on) - { - [metronome startClock]; - } - - else - { - [metronome stopClock]; - } -} - - -- (void) beat:(int)beatNo -{ - backEndInterface->beat(beatNo); -} - - -@end diff --git a/Source/GUI/UserInterfaceData.h b/Source/GUI/UserInterfaceData.h deleted file mode 100644 index 17539f4..0000000 --- a/Source/GUI/UserInterfaceData.h +++ /dev/null @@ -1,107 +0,0 @@ -// -// UserInterfaceData.h -// SharedLibrary -// -// Created by Anand on 3/9/14. -// Copyright (c) 2014 GTCMT. All rights reserved. -// - -#ifndef __SharedLibrary__UserInterface__ -#define __SharedLibrary__UserInterface__ - -#import - -@interface cDelay : NSObject - -@property (nonatomic,retain) NSNumber *time; -@property (nonatomic,retain) NSNumber *feedback; -@property (nonatomic,retain) NSNumber *wetdry; -@property (nonatomic,retain) NSNumber *bypass; - -@end - -@interface cTremolo : NSObject - -@property (nonatomic,retain) NSNumber *depth; -@property (nonatomic,retain) NSNumber *frequency; -@property (nonatomic,retain) NSNumber *signal; -@property (nonatomic,retain) NSNumber *bypass; - -@end - -@interface cVibrato : NSObject - -@property (nonatomic,retain) NSNumber *width; -@property (nonatomic,retain) NSNumber *frequency; -@property (nonatomic,retain) NSNumber *signal; -@property (nonatomic,retain) NSNumber *bypass; - -@end - -@interface cWah : NSObject - -@property (nonatomic,retain) NSNumber *frequency; -@property (nonatomic,retain) NSNumber *gain; -@property (nonatomic,retain) NSNumber *resonance; -@property (nonatomic,retain) NSNumber *bypass; - -@end - -@interface UserInterfaceData : NSObject -@property (nonatomic,retain) cDelay *delayEffect; -@property (nonatomic,retain) cTremolo *tremoloEffect; -@property (nonatomic,retain) cVibrato *vibratoEffect; -@property (nonatomic,retain) cWah *wahEffect; -@end - -@interface SampleInfo : UserInterfaceData - -@property (nonatomic,retain) NSNumber *sampleID; -@property (nonatomic,retain) NSNumber *sampleGain; -@property (nonatomic,retain) NSString *fileURL; -@property (nonatomic,retain) NSMutableArray *effectChain; -@property (nonatomic,retain) NSMutableArray *effectObjects; - - -@end - - -//struct UIDelay { -// float delay_time; -// float delay_feedback; -// float dry_wet; -// bool bypass; -//}; -// -//struct UIVibrato { -// float mod_width; -// float mod_freq; -// float dry_wet; -// bool bypass; -//}; -// -//struct UITremolo { -// float amp_mod; -// float mod_freq; -// float dry_wet; -// bool bypass; -//}; -// -//class UIEffects { -//public: -// UIEffects(); -// ~UIEffects(); -// UIDelay delayEffect; -// UIVibrato vibratoEffect; -// UITremolo tremoloEffect; -// -//}; -// -//class UISampleInfo : public UIEffects { -//public: -// UISampleInfo(); -// ~UISampleInfo(); -// int sampleID; -// string fileURL; -//}; -#endif diff --git a/Source/GUI/UserInterfaceData.mm b/Source/GUI/UserInterfaceData.mm deleted file mode 100644 index 783bfc1..0000000 --- a/Source/GUI/UserInterfaceData.mm +++ /dev/null @@ -1,165 +0,0 @@ -// -// UserInterfaceData.mm -// SharedLibrary -// -// Created by Anand on 3/9/14. -// Copyright (c) 2014 GTCMT. All rights reserved. -// - -#include "UserInterfaceData.h" - -@implementation UserInterfaceData -- (void)dealloc -{ - - [_delayEffect release]; - [_tremoloEffect release]; - [_vibratoEffect release]; - [_wahEffect release]; - - [super dealloc]; -} -@end - -@implementation SampleInfo -- (void)dealloc -{ - - - [_sampleID release]; - [_fileURL release]; - [_sampleGain release]; - [_effectChain release]; - [_effectObjects release]; -// [_Pos1 release]; -// [_Pos2 release]; -// [_Pos3 release]; -// [_Pos4 release]; - - - [super dealloc]; -} - -- (id)init { - self = [super init]; - if (self){ - self.effectChain = [[NSMutableArray alloc] initWithCapacity:4]; - [self.effectChain insertObject:[NSNumber numberWithInt:1] atIndex:0]; - [self.effectChain insertObject:[NSNumber numberWithInt:99] atIndex:1]; - [self.effectChain insertObject:[NSNumber numberWithInt:99] atIndex:2]; - [self.effectChain insertObject:[NSNumber numberWithInt:99] atIndex:3]; - - self.effectObjects = [[NSMutableArray alloc] initWithCapacity:4]; - - } - return self; -} -@end - -@implementation cDelay -- (void)dealloc -{ - - [_time release]; - [_feedback release]; - [_wetdry release]; - [_bypass release]; - - - [super dealloc]; -} - -- (id)init { - self = [super init]; - if (self){ - self.bypass = [NSNumber numberWithInt:0]; - } - return self; -} - -@end - -@implementation cTremolo -- (void)dealloc -{ - - [_depth release]; - [_frequency release]; - [_signal release]; - [_bypass release]; - - - [super dealloc]; -} -- (id)init { - self = [super init]; - if (self){ - self.bypass = [NSNumber numberWithInt:0]; - } - return self; -} -@end - -@implementation cVibrato -- (void)dealloc -{ - - [_width release]; - [_frequency release]; - [_signal release]; - [_bypass release]; - - - [super dealloc]; -} -- (id)init { - self = [super init]; - if (self){ - self.bypass = [NSNumber numberWithInt:0]; - } - return self; -} -@end - -@implementation cWah -- (void)dealloc -{ - - [_frequency release]; - [_gain release]; - [_resonance release]; - [_bypass release]; - - - [super dealloc]; -} -- (id)init { - self = [super init]; - if (self){ - self.bypass = [NSNumber numberWithInt:0]; - } - return self; -} -@end - -//UISampleInfo :: UISampleInfo () { -// sampleID = 0; -// fileURL = ""; -//} -// -//UIEffects :: UIEffects () { -// delayEffect.delay_time = 0; -// delayEffect.delay_feedback = 0; -// delayEffect.dry_wet = 0; -// delayEffect.bypass = false; -// -// tremoloEffect.amp_mod = 0; -// tremoloEffect.mod_freq = 0; -// tremoloEffect.dry_wet = 0; -// tremoloEffect.bypass = false; -// -// vibratoEffect.mod_width = 0; -// vibratoEffect.mod_freq = 0; -// vibratoEffect.dry_wet = 0; -// vibratoEffect.bypass = false; -//}