public Gesture(GestureType type, IGestureSegment[] segments) { _type = type; _segments = segments; _name = type.ToString(); }
/// <summary> /// Adds the specified gesture for recognition. /// </summary> /// <param name="type">The predefined <see cref="GestureType" />.</param> public void AddGesture(GestureType type) { IGestureSegment[] segments = null; // DEVELOPERS: If you add a new predefined gesture with a new GestureType, // simply add the proper segments to the switch statement here. switch (type) { case GestureType.SwipeRight: segments = new IGestureSegment[3]; segments[0] = new SwipeRightSegment1(); segments[1] = new SwipeRightSegment2(); segments[2] = new SwipeRightSegment3(); break; case GestureType.All: case GestureType.None: default: break; } if (type != GestureType.None) { Gesture gesture = new Gesture(type, segments); gesture.GestureRecognized += OnGestureRecognized; _gestures.Add(gesture); } }
/// <summary> /// Adds the specified gesture for recognition. /// </summary> /// <param name="type">The predefined <see cref="GestureType" />.</param> public void AddGesture(GestureType type) { // Check whether the gesure is already added. if (_gestures.Where(g => g.GestureType == type).Count() > 0) { return; } IGestureSegment[] segments = null; // DEVELOPERS: If you add a new predefined gesture with a new GestureType, // simply add the proper segments to the switch statement here. switch (type) { case GestureType.JoinedHands: segments = new IGestureSegment[20]; JoinedHandsSegment1 joinedhandsSegment = new JoinedHandsSegment1(); for (int i = 0; i < 20; i++) { segments[i] = joinedhandsSegment; } break; case GestureType.Menu: segments = new IGestureSegment[20]; MenuSegment1 menuSegment = new MenuSegment1(); for (int i = 0; i < 20; i++) { segments[i] = menuSegment; } break; //case GestureType.SwipeDown: // segments = new IGestureSegment[3]; // segments[0] = new SwipeDownSegment1(); // segments[1] = new SwipeDownSegment2(); // segments[2] = new SwipeDownSegment3(); // break; //case GestureType.SwipeLeft: // segments = new IGestureSegment[3]; // segments[0] = new SwipeLeftSegment1(); // segments[1] = new SwipeLeftSegment2(); // segments[2] = new SwipeLeftSegment3(); // break; //case GestureType.SwipeRight: // segments = new IGestureSegment[3]; // segments[0] = new SwipeRightSegment1(); // segments[1] = new SwipeRightSegment2(); // segments[2] = new SwipeRightSegment3(); // break; //case GestureType.SwipeUp: // segments = new IGestureSegment[3]; // segments[0] = new SwipeUpSegment1(); // segments[1] = new SwipeUpSegment2(); // segments[2] = new SwipeUpSegment3(); // break; case GestureType.SwipeDown: segments = new IGestureSegment[2]; segments[0] = new SwipeUpSegment2(); segments[1] = new SwipeUpSegment1(); //segments[2] = new SwipeUpSegment1(); break; case GestureType.SwipeUp: segments = new IGestureSegment[2]; segments[0] = new SwipeUpSegment1(); segments[1] = new SwipeUpSegment2(); //segments[2] = new SwipeUpSegment3(); break; case GestureType.SwipeLeft: segments = new IGestureSegment[2]; segments[0] = new SwipeLeftSegment1(); segments[1] = new SwipeLeftSegment2(); //segments[2] = new SwipeLeftSegment3(); break; case GestureType.SwipeRight: segments = new IGestureSegment[2]; segments[0] = new SwipeLeftSegment2(); segments[1] = new SwipeLeftSegment1(); //segments[2] = new SwipeLeftSegment1(); break; case GestureType.WaveLeft: segments = new IGestureSegment[6]; WaveLeftSegment1 waveLeftSegment1 = new WaveLeftSegment1(); WaveLeftSegment2 waveLeftSegment2 = new WaveLeftSegment2(); segments[0] = waveLeftSegment1; segments[1] = waveLeftSegment2; segments[2] = waveLeftSegment1; segments[3] = waveLeftSegment2; segments[4] = waveLeftSegment1; segments[5] = waveLeftSegment2; break; case GestureType.WaveRight: segments = new IGestureSegment[6]; WaveRightSegment1 waveRightSegment1 = new WaveRightSegment1(); WaveRightSegment2 waveRightSegment2 = new WaveRightSegment2(); segments[0] = waveRightSegment1; segments[1] = waveRightSegment2; segments[2] = waveRightSegment1; segments[3] = waveRightSegment2; segments[4] = waveRightSegment1; segments[5] = waveRightSegment2; break; case GestureType.ZoomIn: segments = new IGestureSegment[3]; segments[0] = new ZoomSegment1(); segments[1] = new ZoomSegment2(); segments[2] = new ZoomSegment3(); break; case GestureType.ZoomOut: segments = new IGestureSegment[3]; segments[0] = new ZoomSegment3(); segments[1] = new ZoomSegment2(); segments[2] = new ZoomSegment1(); break; default: break; } if (segments != null) { Gesture gesture = new Gesture(type, segments); gesture.GestureRecognized += OnGestureRecognized; _gestures.Add(gesture); } }
/// <summary> /// Initializes a new instance of <see cref="Gesture"/> with the specified type and segments. /// </summary> /// <param name="type">The type of gesture.</param> /// <param name="segments">The segments of the gesture.</param> public Gesture(GestureType type, IGestureSegment[] segments) { GestureType = type; Segments = segments; }
private void AddStatue(Statues name) { IGestureSegment[] segments = null; switch (name) { case Statues.HandUp: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new HandUpSegment(); } break; case Statues.HandRight: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new HandRightSegment(); } break; case Statues.HandLeft: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new HandLeftSegment(); } break; case Statues.HandBottom: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new HandBottomSegment(); } break; case Statues.Reset: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new ResetSegment(); } break; case Statues.Jump: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new JumpSegment(); } break; case Statues.TurnRight: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new TurnRightSegment(); } break; case Statues.TurnLeft: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new TurnLeftSegment(); } break; case Statues.OpenRepeat: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new OpenRepeatSegment(); } break; case Statues.CloseRepeat: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new CloseRepeatSegment(); } break; case Statues.Stop: segments = new IGestureSegment[15]; for (int i = 0; i < 15; i++) { segments[i] = new StopSegment(); } break; case Statues.GreenFlag: segments = new IGestureSegment[15]; for (int i = 0; i < 15; i++) { segments[i] = new GreenFlagSegment(); } break; case Statues.Grow: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new GrowSegment(); } break; case Statues.Shrink: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new ShrinkSegment(); } break; case Statues.ChangeScene: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new ChangeSceneSegment(); } break; case Statues.NormalSize: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new NormalSizeSegment(); } break; case Statues.Show: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new ShowSegment(); } break; case Statues.Hide: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new HideSegment(); } break; case Statues.Speed: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new SpeedSegment(); } break; case Statues.Wait: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new WaitSegment(); } break; case Statues.TouchAnotherSprite: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new TouchAnotherSpriteSegment(); } break; case Statues.WaveRight: segments = new IGestureSegment[2 * NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new WaveRightSegment1(); } for (int i = NB_FRAME; i < 2 * NB_FRAME; i++) { segments[i] = new WaveRightSegment2(); } break; case Statues.FingerCount: segments = new IGestureSegment[20]; for (int i = 0; i < 20; i++) { segments[i] = new FingerCount(); } break; default: break; } Gesture gesture = new Gesture(name.ToString(), segments); gesture.GestureDetected += OnGestureDetected; _gestures.Add(gesture); }
/// <summary> /// Adds the specified gesture for recognition. /// </summary> /// <param name="type">The predefined <see cref="GestureType" />.</param> public void AddGesture(GestureType type) { IGestureSegment[] segments = null; // DEVELOPERS: If you add a new predefined gesture with a new GestureType, // simply add the proper segments to the switch statement here. switch (type) { /* case GestureType.JoinedHands: segments = new IGestureSegment[20]; JoinedHandsSegment1 joinedhandsSegment = new JoinedHandsSegment1(); for (int i = 0; i < 20; i++) { segments[i] = joinedhandsSegment; } break; case GestureType.Menu: segments = new IGestureSegment[20]; MenuSegment1 menuSegment = new MenuSegment1(); for (int i = 0; i < 20; i++) { segments[i] = menuSegment; } break; case GestureType.SwipeDown: segments = new IGestureSegment[3]; segments[0] = new SwipeDownSegment1(); segments[1] = new SwipeDownSegment2(); segments[2] = new SwipeDownSegment3(); break; * */ case GestureType.SwipeLeft: segments = new IGestureSegment[3]; segments[0] = new SwipeLeftSegment1(); segments[1] = new SwipeLeftSegment2(); segments[2] = new SwipeLeftSegment3(); break; case GestureType.SwipeRight: segments = new IGestureSegment[3]; segments[0] = new SwipeRightSegment1(); segments[1] = new SwipeRightSegment2(); segments[2] = new SwipeRightSegment3(); break; /* case GestureType.SwipeUp: segments = new IGestureSegment[3]; segments[0] = new SwipeUpSegment1(); segments[1] = new SwipeUpSegment2(); segments[2] = new SwipeUpSegment3(); break; * case GestureType.WaveLeft: segments = new IGestureSegment[6]; WaveLeftSegment1 waveLeftSegment1 = new WaveLeftSegment1(); WaveLeftSegment2 waveLeftSegment2 = new WaveLeftSegment2(); segments[0] = waveLeftSegment1; segments[1] = waveLeftSegment2; segments[2] = waveLeftSegment1; segments[3] = waveLeftSegment2; segments[4] = waveLeftSegment1; segments[5] = waveLeftSegment2; break; case GestureType.WaveRight: segments = new IGestureSegment[6]; WaveRightSegment1 waveRightSegment1 = new WaveRightSegment1(); WaveRightSegment2 waveRightSegment2 = new WaveRightSegment2(); segments[0] = waveRightSegment1; segments[1] = waveRightSegment2; segments[2] = waveRightSegment1; segments[3] = waveRightSegment2; segments[4] = waveRightSegment1; segments[5] = waveRightSegment2; break;*/ /* case GestureType.ZoomIn: segments = new IGestureSegment[3]; segments[0] = new ZoomSegment1(); segments[1] = new ZoomSegment2(); segments[2] = new ZoomSegment3(); break; case GestureType.ZoomOut: segments = new IGestureSegment[3]; segments[0] = new ZoomSegment3(); segments[1] = new ZoomSegment2(); segments[2] = new ZoomSegment1(); break; */ case GestureType.Grab: segments = new IGestureSegment[2]; segments[0] = new GrabSegment1(); segments[1] = new GrabSegment2(); break; case GestureType.GrabLeft: segments = new IGestureSegment[2]; segments[0] = new GrabLeftSegment1(); segments[1] = new GrabLeftSegment2(); break; case GestureType.GrabRight: segments = new IGestureSegment[2]; segments[0] = new GrabRightSegment1(); segments[1] = new GrabRightSegment2(); break; case GestureType.Release: segments = new IGestureSegment[2]; segments[0] = new ReleaseSegment1(); segments[1] = new ReleaseSegment2(); break; case GestureType.ReleaseLeft: segments = new IGestureSegment[2]; segments[0] = new ReleaseLeftSegment1(); segments[1] = new ReleaseLeftSegment2(); break; case GestureType.ReleaseRight: segments = new IGestureSegment[2]; segments[0] = new ReleaseRightSegment1(); segments[1] = new ReleaseRightSegment2(); break; case GestureType.All: case GestureType.None: default: break; } if (type != GestureType.None) { Gesture gesture = new Gesture(type, segments); gesture.GestureRecognized += OnGestureRecognized; _gestures.Add(gesture); } }
/// <summary> /// Adds the specified gesture for recognition. /// </summary> /// <param name="name">The gesture name.</param> /// <param name="segments">The gesture segments.</param> public void AddGesture(string name, IGestureSegment[] segments) { Gesture gesture = new Gesture(name, segments); gesture.GestureRecognized += OnGestureRecognized; _gestures.Add(gesture); }
/// <summary> /// Adds the specified gesture for recognition. /// </summary> /// <param name="type">The predefined <see cref="GestureType" />.</param> public void AddGesture(GestureType type) { // Check whether the gesure is already added. if (_gestures.Where(g => g.GestureType == type).Count() > 0) { return; } IGestureSegment[] segments = null; // DEVELOPERS: If you add a new predefined gesture with a new GestureType, // simply add the proper segments to the switch statement here. switch (type) { case GestureType.CrossedHands: segments = new IGestureSegment[8]; CrossHandsSegment1 segment = new CrossHandsSegment1(); for (int i = 0; i < 8; i++) { segments[i] = segment; } break; case GestureType.HandsAboveHead: segments = new IGestureSegment[8]; HandsAboveHeadSegment1 segment_hand_head = new HandsAboveHeadSegment1(); for (int i = 0; i < 8; i++) { segments[i] = segment_hand_head; } break; case GestureType.SwipeLeftReversed: segments = new IGestureSegment[3]; segments[0] = new SwipeLeftReversedSegment3(); segments[1] = new SwipeLeftReversedSegment2(); segments[2] = new SwipeLeftReversedSegment1(); break; case GestureType.SwipeLeftSupport: segments = new IGestureSegment[3]; segments[0] = new SwipeLeftReversedSegment1(); segments[1] = new SwipeLeftReversedSegment2(); segments[2] = new SwipeLeftReversedSegment3(); break; case GestureType.SwipeLeft: segments = new IGestureSegment[3]; segments[0] = new SwipeLeftSegment1(); segments[1] = new SwipeLeftSegment2(); segments[2] = new SwipeLeftSegment3(); break; case GestureType.SwipeRightReversed: segments = new IGestureSegment[3]; segments[0] = new SwipeRightSegment3(); segments[1] = new SwipeRightSegment2(); segments[2] = new SwipeRightSegment1(); break; case GestureType.SwipeRight: segments = new IGestureSegment[3]; segments[0] = new SwipeRightSegment1(); segments[1] = new SwipeRightSegment2(); segments[2] = new SwipeRightSegment3(); break; case GestureType.ZoomIn: segments = new IGestureSegment[3]; segments[0] = new ZoomInSegment1(); segments[1] = new ZoomInSegment2(); segments[2] = new ZoomInSegment3(); break; case GestureType.ZoomOut: segments = new IGestureSegment[3]; segments[0] = new ZoomOutSegment1(); segments[1] = new ZoomOutSegment2(); segments[2] = new ZoomOutSegment3(); break; default: break; } if (segments != null) { Gesture gesture = new Gesture(type, segments); gesture.GestureRecognized += OnGestureRecognized; _gestures.Add(gesture); } }
public GestureListener(IGestureSegment[] gestures) { _segments = gestures; }
/// <summary> /// Initializes a new instance of <see cref="Gesture"/>. /// </summary> /// <param name="name">The name of gesture.</param> /// <param name="segments">The segments of the gesture.</param> public Gesture(string name, IGestureSegment[] segments) { _name = name; _segments = segments; }
/// <summary> /// Adds the specified gesture for recognition. /// </summary> /// <param name="type">The predefined <see cref="GestureType" />.</param> public void AddGesture(GestureType type) { IGestureSegment[] segments = null; // DEVELOPERS: If you add a new predefined gesture with a new GestureType, // simply add the proper segments to the switch statement here. switch (type) { case GestureType.JoinedHands: segments = new IGestureSegment[20]; JoinedHandsSegment1 joinedhandsSegment = new JoinedHandsSegment1(); for (int i = 0; i < 20; i++) { segments[i] = joinedhandsSegment; } break; case GestureType.Menu: segments = new IGestureSegment[20]; MenuSegment1 menuSegment = new MenuSegment1(); for (int i = 0; i < 20; i++) { segments[i] = menuSegment; } break; case GestureType.SwipeDown: segments = new IGestureSegment[3]; segments[0] = new SwipeDownSegment1(); segments[1] = new SwipeDownSegment2(); segments[2] = new SwipeDownSegment3(); break; case GestureType.SwipeLeft: segments = new IGestureSegment[3]; segments[0] = new SwipeLeftSegment1(); segments[1] = new SwipeLeftSegment2(); segments[2] = new SwipeLeftSegment3(); break; case GestureType.SwipeRight: segments = new IGestureSegment[3]; segments[0] = new SwipeRightSegment1(); segments[1] = new SwipeRightSegment2(); segments[2] = new SwipeRightSegment3(); break; case GestureType.SwipeUp: segments = new IGestureSegment[3]; segments[0] = new SwipeUpSegment1(); segments[1] = new SwipeUpSegment2(); segments[2] = new SwipeUpSegment3(); break; case GestureType.WaveLeft: segments = new IGestureSegment[6]; WaveLeftSegment1 waveLeftSegment1 = new WaveLeftSegment1(); WaveLeftSegment2 waveLeftSegment2 = new WaveLeftSegment2(); segments[0] = waveLeftSegment1; segments[1] = waveLeftSegment2; segments[2] = waveLeftSegment1; segments[3] = waveLeftSegment2; segments[4] = waveLeftSegment1; segments[5] = waveLeftSegment2; break; case GestureType.WaveRight: segments = new IGestureSegment[6]; WaveRightSegment1 waveRightSegment1 = new WaveRightSegment1(); WaveRightSegment2 waveRightSegment2 = new WaveRightSegment2(); segments[0] = waveRightSegment1; segments[1] = waveRightSegment2; segments[2] = waveRightSegment1; segments[3] = waveRightSegment2; segments[4] = waveRightSegment1; segments[5] = waveRightSegment2; break; case GestureType.ZoomIn: segments = new IGestureSegment[3]; segments[0] = new ZoomSegment1(); segments[1] = new ZoomSegment2(); segments[2] = new ZoomSegment3(); break; case GestureType.ZoomOut: segments = new IGestureSegment[3]; segments[0] = new ZoomSegment3(); segments[1] = new ZoomSegment2(); segments[2] = new ZoomSegment1(); break; case GestureType.All: case GestureType.None: default: break; } if (type != GestureType.None) { Gesture gesture = new Gesture(type, segments); gesture.GestureRecognized += OnGestureRecognized; _gestures.Add(gesture); } }
/// <summary> /// Initializes a new instance of the MainWindow class. /// </summary> public MainWindow() { // one sensor is currently supported this.kinectSensor = KinectSensor.GetDefault(); // get the coordinate mapper this.coordinateMapper = this.kinectSensor.CoordinateMapper; // get the depth (display) extents FrameDescription frameDescription = this.kinectSensor.DepthFrameSource.FrameDescription; // get size of joint space this.displayWidth = frameDescription.Width; this.displayHeight = frameDescription.Height; // open the reader for the body frames this.bodyFrameReader = this.kinectSensor.BodyFrameSource.OpenReader(); // a bone defined as a line between two joints this.bones = new List<Tuple<JointType, JointType>>(); // Torso this.bones.Add(new Tuple<JointType, JointType>(JointType.Head, JointType.Neck)); this.bones.Add(new Tuple<JointType, JointType>(JointType.Neck, JointType.SpineShoulder)); this.bones.Add(new Tuple<JointType, JointType>(JointType.SpineShoulder, JointType.SpineMid)); this.bones.Add(new Tuple<JointType, JointType>(JointType.SpineMid, JointType.SpineBase)); this.bones.Add(new Tuple<JointType, JointType>(JointType.SpineShoulder, JointType.ShoulderRight)); this.bones.Add(new Tuple<JointType, JointType>(JointType.SpineShoulder, JointType.ShoulderLeft)); this.bones.Add(new Tuple<JointType, JointType>(JointType.SpineBase, JointType.HipRight)); this.bones.Add(new Tuple<JointType, JointType>(JointType.SpineBase, JointType.HipLeft)); // Right Arm this.bones.Add(new Tuple<JointType, JointType>(JointType.ShoulderRight, JointType.ElbowRight)); this.bones.Add(new Tuple<JointType, JointType>(JointType.ElbowRight, JointType.WristRight)); this.bones.Add(new Tuple<JointType, JointType>(JointType.WristRight, JointType.HandRight)); this.bones.Add(new Tuple<JointType, JointType>(JointType.HandRight, JointType.HandTipRight)); this.bones.Add(new Tuple<JointType, JointType>(JointType.WristRight, JointType.ThumbRight)); // Left Arm this.bones.Add(new Tuple<JointType, JointType>(JointType.ShoulderLeft, JointType.ElbowLeft)); this.bones.Add(new Tuple<JointType, JointType>(JointType.ElbowLeft, JointType.WristLeft)); this.bones.Add(new Tuple<JointType, JointType>(JointType.WristLeft, JointType.HandLeft)); this.bones.Add(new Tuple<JointType, JointType>(JointType.HandLeft, JointType.HandTipLeft)); this.bones.Add(new Tuple<JointType, JointType>(JointType.WristLeft, JointType.ThumbLeft)); // Right Leg this.bones.Add(new Tuple<JointType, JointType>(JointType.HipRight, JointType.KneeRight)); this.bones.Add(new Tuple<JointType, JointType>(JointType.KneeRight, JointType.AnkleRight)); this.bones.Add(new Tuple<JointType, JointType>(JointType.AnkleRight, JointType.FootRight)); // Left Leg this.bones.Add(new Tuple<JointType, JointType>(JointType.HipLeft, JointType.KneeLeft)); this.bones.Add(new Tuple<JointType, JointType>(JointType.KneeLeft, JointType.AnkleLeft)); this.bones.Add(new Tuple<JointType, JointType>(JointType.AnkleLeft, JointType.FootLeft)); // populate body colors, one for each BodyIndex this.bodyColors = new List<Pen>(); this.bodyColors.Add(new Pen(Brushes.Red, 6)); this.bodyColors.Add(new Pen(Brushes.Orange, 6)); this.bodyColors.Add(new Pen(Brushes.Green, 6)); this.bodyColors.Add(new Pen(Brushes.Blue, 6)); this.bodyColors.Add(new Pen(Brushes.Indigo, 6)); this.bodyColors.Add(new Pen(Brushes.Violet, 6)); // set IsAvailableChanged event notifier this.kinectSensor.IsAvailableChanged += this.Sensor_IsAvailableChanged; // open the sensor this.kinectSensor.Open(); // grab the audio stream IReadOnlyList<AudioBeam> audioBeamList = this.kinectSensor.AudioSource.AudioBeams; System.IO.Stream audioStream = audioBeamList[0].OpenInputStream(); // create the convert stream this.convertStream = new KinectAudioStream(audioStream); // set the status text this.StatusText = this.kinectSensor.IsAvailable ? Properties.Resources.RunningStatusText : Properties.Resources.NoSensorStatusText; RecognizerInfo ri = TryGetKinectRecognizer(); if (null != ri) { this.speechEngine = new SpeechRecognitionEngine(ri.Id); //var directions = new Choices(); //directions.Add(new SemanticResultValue("hide", "hide")); //directions.Add(new SemanticResultValue("minimize", "minimize")); //directions.Add(new SemanticResultValue("maximize", "maximize")); //directions.Add(new SemanticResultValue("snap left", "snap left")); //directions.Add(new SemanticResultValue("snap right", "snap right")); //directions.Add(new SemanticResultValue("front", "front")); //directions.Add(new SemanticResultValue("drag", "drag")); //directions.Add(new SemanticResultValue("get windows", "get windows")); // Grammar for snapping GrammarBuilder snap = new GrammarBuilder { Culture = ri.Culture }; // Any window snap.Append(new Choices("snap")); snap.Append(new Choices("Spotify", "Genie", "Chrome", "Media Player", "Visual Studio", "Github", "Eclipse", "Word", "Notepad")); snap.Append(new Choices("left", "right", "down", "up")); var g = new Grammar(snap); this.speechEngine.LoadGrammar(g); GrammarBuilder snap2 = new GrammarBuilder { Culture = ri.Culture }; snap2.Append(new Choices("snap")); snap2.AppendWildcard(); snap2.Append(new Choices("left", "right", "down", "up")); var g4 = new Grammar(snap2); this.speechEngine.LoadGrammar(g4); GrammarBuilder grab1 = new GrammarBuilder { Culture = ri.Culture }; grab1.Append(new Choices("grab")); grab1.Append(new Choices("Spotify", "Genie", "Chrome", "Media Player", "Visual Studio", "Github", "Eclipse", "Word", "Notepad")); var g1 = new Grammar(grab1); this.speechEngine.LoadGrammar(g1); GrammarBuilder drag1 = new GrammarBuilder { Culture = ri.Culture }; drag1.Append(new Choices("grab")); drag1.Append(new Choices("Spotify", "Genie", "Chrome", "Media Player", "Visual Studio", "Github", "Eclipse", "Word", "Notepad")); var d1 = new Grammar(drag1); this.speechEngine.LoadGrammar(d1); GrammarBuilder grab2 = new GrammarBuilder { Culture = ri.Culture }; // Any window grab2.Append(new Choices("grab")); var g2 = new Grammar(grab2); this.speechEngine.LoadGrammar(g2); GrammarBuilder dropit = new GrammarBuilder { Culture = ri.Culture }; // Any window dropit.Append(new Choices("drop it")); var drop = new Grammar(dropit); this.speechEngine.LoadGrammar(drop); GrammarBuilder mouse = new GrammarBuilder { Culture = ri.Culture }; // Any window mouse.Append(new Choices("mouse mode")); var mg = new Grammar(mouse); this.speechEngine.LoadGrammar(mg); GrammarBuilder click = new GrammarBuilder { Culture = ri.Culture }; click.Append(new Choices("click", "double click", "right click")); var clickGram = new Grammar(click); this.speechEngine.LoadGrammar(clickGram); GrammarBuilder go = new GrammarBuilder { Culture = ri.Culture }; go.Append(new Choices("lets hack", "shut it down")); var goGram = new Grammar(go); this.speechEngine.LoadGrammar(goGram); this.speechEngine.SpeechRecognized += this.SpeechRecognized; this.speechEngine.SpeechRecognitionRejected += this.SpeechRejected; // let the convertStream know speech is going active this.convertStream.SpeechActive = true; // For long recognition sessions (a few hours or more), it may be beneficial to turn off adaptation of the acoustic model. // This will prevent recognition accuracy from degrading over time. speechEngine.UpdateRecognizerSetting("AdaptationOn", 0); this.speechEngine.SetInputToAudioStream( this.convertStream, new SpeechAudioFormatInfo(EncodingFormat.Pcm, 16000, 16, 1, 32000, 2, null)); this.speechEngine.RecognizeAsync(RecognizeMode.Multiple); } else { this.StatusText = "No recognizer"; } // Create the drawing group we'll use for drawing this.drawingGroup = new DrawingGroup(); // Create an image source that we can use in our image control this.imageSource = new DrawingImage(this.drawingGroup); // use the window object as the view model in this simple example this.DataContext = this; // initialize the components (controls) of the window this.InitializeComponent(); KnockSegment1 knockSegment1 = new KnockSegment1(); KnockSegment2 knockSegment2 = new KnockSegment2(); KnockSegment3 knockSegment3 = new KnockSegment3(); SlapSegment1 slapSegment1 = new SlapSegment1(); SlapSegment2 slapSegment2 = new SlapSegment2(); PokeSegment1 pokeSegment1 = new PokeSegment1(); PokeSegment2 pokeSegment2 = new PokeSegment2(); IGestureSegment[] knock = new IGestureSegment[] { knockSegment1, knockSegment2 }; IGestureSegment[] knockPull = new IGestureSegment[] { knockSegment1, knockSegment3 }; IGestureSegment[] slap = new IGestureSegment[] { slapSegment1, slapSegment2 }; IGestureSegment[] poke = new IGestureSegment[] { pokeSegment1, pokeSegment2 }; knockGesture = new GestureListener(knock); knockGesture.GestureRecognized += Gesture_KnockRecognized; knockPullGesture = new GestureListener(knockPull); knockPullGesture.GestureRecognized += Gesture_KnockPullRecognized; slapGesture = new GestureListener(slap); slapGesture.GestureRecognized += Gesture_SlapRecognized; pokeGesture = new GestureListener(poke); pokeGesture.GestureRecognized += Gesture_PokeRecognized; WindowDragStart dragSeg1 = new WindowDragStart(); WindowDragMove dragSeg2 = new WindowDragMove(); MouseMoveStart mouseSeg1 = new MouseMoveStart(); ScrollUpStart scrollUpSeg1 = new ScrollUpStart(); ScrollDownStart scrollUpSeg2 = new ScrollDownStart(); VolumeUpStart volumeUpStart = new VolumeUpStart(); VolumeDownStart volumeDownStart = new VolumeDownStart(); PausePlaySegment1 pausePlaySeg1 = new PausePlaySegment1(); PausePlaySegment2 pausePlaySeg2 = new PausePlaySegment2(); ShowAllStart showSeg1 = new ShowAllStart(); HideAllStart showSeg2 = new HideAllStart(); MouseMove mouseSeg2 = new MouseMove(); DragFinishedGesture dragFinished = new DragFinishedGesture(); VolumeFinishGesture volumeFinished = new VolumeFinishGesture(); ScrollFinishedGesture scrollFinished = new ScrollFinishedGesture(); MouseFinishedGesture mouseFinished = new MouseFinishedGesture(); IGestureSegment[] windowDrag = new IGestureSegment[] { dragSeg1, dragSeg2 }; IGestureSegment[] mouseMove = new IGestureSegment[] { mouseSeg1, mouseSeg2 }; IGestureSegment[] dragFinishedSequence = new IGestureSegment[] { dragFinished }; IGestureSegment[] volumeFinishedSequence = new IGestureSegment[] { volumeFinished }; IGestureSegment[] scrollFinishedSequence = new IGestureSegment[] { scrollFinished }; IGestureSegment[] mouseFinishedSequence = new IGestureSegment[] { mouseFinished }; IGestureSegment[] scrollUp = new IGestureSegment[] { scrollUpSeg1, scrollUpSeg2 }; IGestureSegment[] scrollDown = new IGestureSegment[] { scrollUpSeg2, scrollUpSeg1 }; IGestureSegment[] volumeUp = new IGestureSegment[] { volumeUpStart, volumeDownStart }; IGestureSegment[] volumeDown = new IGestureSegment[] { volumeDownStart, volumeUpStart }; IGestureSegment[] pausePlay = new IGestureSegment[] { pausePlaySeg1, pausePlaySeg2 }; IGestureSegment[] bringUp = new IGestureSegment[] { showSeg1, showSeg2 }; IGestureSegment[] bringDown = new IGestureSegment[] { showSeg2, showSeg1 }; windowDragGesture = new GestureListener(windowDrag); windowDragGesture.GestureRecognized += Gesture_DragMove; windowDragGestureFinish = new GestureListener(dragFinishedSequence); windowDragGestureFinish.GestureRecognized += Gesture_DragFinish; mouseMoveGesture = new GestureListener(mouseMove); mouseMoveGesture.GestureRecognized += Gesture_MouseMove; mouseMoveGestureFinish = new GestureListener(mouseFinishedSequence); mouseMoveGestureFinish.GestureRecognized += Gesture_MouseMoveFinish; scrollUpGesture = new GestureListener(scrollUp); scrollUpGesture.GestureRecognized += Gesture_ScrollUp; scrollDownGesture = new GestureListener(scrollDown); scrollDownGesture.GestureRecognized += Gesture_ScrollDown; scrollGestureFinish = new GestureListener(scrollFinishedSequence); scrollGestureFinish.GestureRecognized += Gesture_ScrollFinish; volumeUpGesture = new GestureListener(volumeUp); volumeUpGesture.GestureRecognized += Gesture_VolumeUp; volumeDownGesture = new GestureListener(volumeDown); volumeDownGesture.GestureRecognized += Gesture_VolumeDown; volumeGestureFinish = new GestureListener(volumeFinishedSequence); volumeGestureFinish.GestureRecognized += Gesture_VolumeFinish; pausePlayGesture = new GestureListener(pausePlay); pausePlayGesture.GestureRecognized += Gesture_PausePlay; showAllGesture = new GestureListener(bringUp); showAllGesture.GestureRecognized += Gesture_ShowAll; hideAllGesture = new GestureListener(bringDown); hideAllGesture.GestureRecognized += Gesture_HideAll; }