private void OnTouch(object sender, SKTouchEventArgs e) { switch (e.ActionType) { case SKTouchAction.Pressed: On = true; volume.SetData(1, 1f); touch = e.Location; e.Handled = true; break; case SKTouchAction.Moved: touch = e.Location; if (size.X == 0f || size.Y == 0f) { return; } mtof.SetData(0, 60 + (int)(touch.Y / size.Y * 40f)); lfo.SetData(0, touch.X / size.X * 10f); e.Handled = true; break; case SKTouchAction.Released: On = false; volume.SetData(1, 0f); touch = e.Location; e.Handled = true; break; } canvasView.InvalidateSurface(); }
public DSPSimplePatcher() { InitializeComponent(); sound = Global.Yse.CreateSound(); patcher = Global.Yse.CreatePatcher(); patcher.Create(1); mtof = patcher.AddObject("mtof"); sine = patcher.AddObject("sine"); lfo = patcher.AddObject("sine"); volume = patcher.AddObject("*"); IHandle multiplier = patcher.AddObject("*"); patcher.Connect(mtof, 0, sine, 0); // pass frequency to sine patcher.Connect(sine, 0, multiplier, 0); patcher.Connect(lfo, 0, multiplier, 1); patcher.Connect(multiplier, 0, volume, 0); patcher.Connect(volume, 0, patcher.GetOutputHandle(0), 0); mtof.SetData(0, 60f); lfo.SetData(0, 4f); volume.SetData(1, 0f); sound.Create(patcher); sound.Play(); }