private void Awake() { syntheStation = GameObject.FindObjectOfType <MySyntheStation>(); var p = GetComponent <RectTransform>(); var r = whiteKey.GetComponent <RectTransform>(); var width = r.rect.width; var basePos = whiteKey.transform.localPosition; int[] ofs = { 0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12 }; numKeys = (int)((p.rect.width - (p.rect.width / 2 + (basePos.x - width / 2)) * 2) / width) * 12 / 7; keyState = new int[numKeys]; for (int i = 0; i < numKeys; i++) { keyState[i] = -1; int o = ofs[i % 12]; if ((o & 1) != 0) { continue; } int index = i; var key = Instantiate(whiteKey); var pos = basePos; var scl = whiteKey.transform.localScale; var rot = whiteKey.transform.rotation; pos.x += ((i / 12) * 14 + o) * (width / 2); key.transform.SetParent(transform); key.transform.localPosition = pos; key.transform.localScale = scl; key.transform.rotation = rot; key.OnKeyDownEvent.AddListener(() => OnKeyDown(index)); key.OnKeyUpEvent.AddListener(() => OnKeyUp(index)); } for (int i = 0; i < numKeys; i++) { int o = ofs[i % 12]; if ((o & 1) == 0) { continue; } int index = i; var key = Instantiate(blackKey); var pos = basePos; var scl = blackKey.transform.localScale; var rot = blackKey.transform.rotation; pos.x += ((i / 12) * 14 + o) * (width / 2); key.transform.SetParent(transform); key.transform.localPosition = pos; key.transform.localScale = scl; key.transform.rotation = rot; key.OnKeyDownEvent.AddListener(() => OnKeyDown(index)); key.OnKeyUpEvent.AddListener(() => OnKeyUp(index)); } whiteKey.gameObject.SetActive(false); blackKey.gameObject.SetActive(false); position = transform.Find("Position").GetComponent <Text>(); BaseNote -= BaseNote % 12; position.text = "^C" + (BaseNote / 12 - 2 + 1); var lshift = transform.Find("LShift").GetComponent <Button>(); lshift.onClick.AddListener(LShift); var rshift = transform.Find("RShift").GetComponent <Button>(); rshift.onClick.AddListener(RShift); var velocity = transform.Find("Velocity").GetComponent <Slider>(); velocity.onValueChanged.AddListener((value) => { vel = (int)value; velocity.gameObject.transform.Find("Value").GetComponent <Text>().text = "" + vel; }); var volume = transform.Find("Volume").GetComponent <Slider>(); volume.onValueChanged.AddListener((value) => { vol = (int)value; syntheStation.Synthesizers[PortNo].MasterVolume((byte)value); volume.gameObject.transform.Find("Value").GetComponent <Text>().text = "" + (byte)value; }); var hold = transform.Find("Hold").GetComponent <KeyProperty>(); hold.OnKeyDownEvent.AddListener(() => syntheStation.Synthesizers[PortNo].Channel[ChNo].Damper(+127)); hold.OnKeyUpEvent.AddListener(() => syntheStation.Synthesizers[PortNo].Channel[ChNo].Damper(0)); var damp = transform.Find("Damp").GetComponent <KeyProperty>(); damp.OnKeyDownEvent.AddListener(() => syntheStation.Synthesizers[PortNo].Channel[ChNo].Damper(-127 + 256)); damp.OnKeyUpEvent.AddListener(() => syntheStation.Synthesizers[PortNo].Channel[ChNo].Damper(0)); }
private void Awake() { syntheStation = GameObject.FindObjectOfType <MySyntheStation>(); sampleTools = GameObject.FindObjectOfType <SampleTools>(); mmlBox = sampleTools.GetComponent <MyMMLBox>(); { Toggle extend = transform.Find("Panel/Extend").GetComponent <Toggle>(); extend.onValueChanged.AddListener((value) => { param.Extended = value; loadTone(param); }); } { inputField = transform.Find("Panel/InputField").GetComponent <InputField>(); inputField.onEndEdit.AddListener((v) => { var tone = new ToneParamPM8(); if (tone.LoadFromString(v)) { loadTone(tone); } }); var presets = GetComponentsInChildren <PresetButton>(); foreach (var pb in presets) { var btn = pb.GetComponent <Button>(); var tp = new ToneParamPM8(pb.ToneData); btn.onClick.AddListener(() => { loadTone(tp); inputField.text = param.ToString(); }); } } { var obj = transform.Find("Panel/FM").gameObject; setupSlider(obj, "Algorithm", "al:", (val) => { param.Al = (Byte)val; applyTone(); }); setupSlider(obj, "Feedback", "fb:", (val) => { param.Fb = (Byte)val; applyTone(); }); setupSlider(obj, "WaveForm", "lw:", (val) => { param.Lfo.WS = (Byte)val; applyTone(); }); setupSlider(obj, "Frequency", "lf:", (val) => { param.Lfo.LF = (Byte)val; applyTone(); }); setupSlider(obj, "PMPower", "lp:", (val) => { param.Lfo.LP = (Byte)val; applyTone(); }); setupSlider(obj, "AMPower", "la:", (val) => { param.Lfo.LA = (Byte)val; applyTone(); }); setupSlider(obj, "AttackRate", "ar:", (val) => { if (param.Extended) { param.Lfo.Env.ExAR = (Byte)val; } else { param.Lfo.Env.AR = (Byte)val; }; applyTone(); }); setupSlider(obj, "DecayRate", "dr:", (val) => { if (param.Extended) { param.Lfo.Env.ExDR = (Byte)val; } else { param.Lfo.Env.DR = (Byte)val; }; applyTone(); }); setupSlider(obj, "SustainLevel", "sl:", (val) => { if (param.Extended) { param.Lfo.Env.ExSL = (Byte)val; } else { param.Lfo.Env.SL = (Byte)val; }; applyTone(); }); setupSlider(obj, "SustainRate", "sr:", (val) => { if (param.Extended) { param.Lfo.Env.ExSR = (Byte)val; } else { param.Lfo.Env.SR = (Byte)val; }; applyTone(); }); setupSlider(obj, "ReleaseRate", "rr:", (val) => { if (param.Extended) { param.Lfo.Env.ExRR = (Byte)val; } else { param.Lfo.Env.RR = (Byte)val; }; applyTone(); }); } for (int i = 0; i < 4; i++) { int n = i; var obj = transform.Find("Panel/OP" + (i + 1)).gameObject; setupSlider(obj, "WaveStyle", "ws:", (val) => { param.Op[n].WS = (Byte)val; applyTone(); }); setupSlider(obj, "AMEnable", "ae:", (val) => { param.Op[n].AE = (Byte)val; applyTone(); }); setupSlider(obj, "Multiple", "ml:", (val) => { param.Op[n].Ml = (Byte)val; applyTone(); }); setupSlider(obj, "Detune", "dt:", (val) => { param.Op[n].Dt = (Byte)val; applyTone(); }); setupSlider(obj, "KeyScale", "ks:", (val) => { param.Op[n].Env.KS = (Byte)val; applyTone(); }); setupSlider(obj, "VelocitySense", "vs:", (val) => { param.Op[n].Env.VS = (Byte)val; applyTone(); }); setupSlider(obj, "TotalLevel", "tl:", (val) => { param.Op[n].Env.TL = (Byte)val; applyTone(); }); setupSlider(obj, "AttackRate", "ar:", (val) => { if (param.Extended) { param.Op[n].Env.ExAR = (Byte)val; } else { param.Op[n].Env.AR = (Byte)val; }; applyTone(); }); setupSlider(obj, "DecayRate", "dr:", (val) => { if (param.Extended) { param.Op[n].Env.ExDR = (Byte)val; } else { param.Op[n].Env.DR = (Byte)val; }; applyTone(); }); setupSlider(obj, "SustainLevel", "sl:", (val) => { if (param.Extended) { param.Op[n].Env.ExSL = (Byte)val; } else { param.Op[n].Env.SL = (Byte)val; }; applyTone(); }); setupSlider(obj, "SustainRate", "sr:", (val) => { if (param.Extended) { param.Op[n].Env.ExSR = (Byte)val; } else { param.Op[n].Env.SR = (Byte)val; }; applyTone(); }); setupSlider(obj, "ReleaseRate", "rr:", (val) => { if (param.Extended) { param.Op[n].Env.ExRR = (Byte)val; } else { param.Op[n].Env.RR = (Byte)val; }; applyTone(); }); } { var keyboard = transform.Find("Panel/Keyboard").GetComponent <Keyboard>(); keyboard.PortNo = portNo; keyboard.ChNo = chNo; } { var mmlEditorCanvas = transform.parent.Find("MMLPlayerCanvas"); var button = transform.Find("Panel/MMLEditorButton").GetComponent <Button>(); button.onClick.AddListener(() => { mmlBox.Play("Click"); sampleTools.MoveCameraTo(mmlEditorCanvas.localPosition); mmlEditorCanvas.GetComponent <CanvasGroup>().interactable = true; this.GetComponent <CanvasGroup>().interactable = false; }); } { var button = transform.Find("Panel/Random").GetComponent <Button>(); button.onClick.AddListener(() => { GenerateRandom(RandomMode.Normal); }); } { var button = transform.Find("Panel/RandomEx").GetComponent <Button>(); button.onClick.AddListener(() => { GenerateRandom(RandomMode.Ex); }); } { var button = transform.Find("Panel/RandomTx").GetComponent <Button>(); button.onClick.AddListener(() => { GenerateRandom(RandomMode.Tx); }); } }
void Awake() { syntheStation = GameObject.FindObjectOfType <MySyntheStation>(); sampleTools = GameObject.FindObjectOfType <SampleTools>(); mmlBox = sampleTools.GetComponent <MyMMLBox>(); { Button extend = transform.FindChild("Panel/Extend").GetComponent <Button>(); extend.onClick.AddListener(() => { param.Extended = !param.Extended; updateParam(); loadTone(param); }); } { inputField = transform.FindChild("Panel/InputField").GetComponent <InputField>(); inputField.onEndEdit.AddListener((v) => { if ((v != null) && (v.Length != 0)) { loadTone(new ToneParam(v)); } else { loadTone(new ToneParam(defaultTone)); } }); PresetButton [] presets = GetComponentsInChildren <PresetButton>(); foreach (PresetButton pb in presets) { Button btn = pb.GetComponent <Button>(); ToneParam tp = new ToneParam(pb.ToneData); btn.onClick.AddListener(() => { loadTone(tp); }); } } { GameObject obj = transform.FindChild("Panel/LFO").gameObject; setupSlider(obj, "WaveForm", "lw:", (val) => { param.Lfo.WS = (Byte)val; updateParam(); }); setupSlider(obj, "Frequency", "lf:", (val) => { param.Lfo.LF = (Byte)val; updateParam(); }); setupSlider(obj, "PMPower", "lp:", (val) => { param.Lfo.LP = (Byte)val; updateParam(); }); setupSlider(obj, "AMPower", "la:", (val) => { param.Lfo.LA = (Byte)val; updateParam(); }); setupSlider(obj, "AttackRate", "ar:", (val) => { param.Lfo.Env.AR = (Byte)val; updateParam(); }); setupSlider(obj, "DecayRate", "dr:", (val) => { param.Lfo.Env.DR = (Byte)val; updateParam(); }); setupSlider(obj, "SustainLevel", "sl:", (val) => { param.Lfo.Env.SL = (Byte)val; updateParam(); }); setupSlider(obj, "SustainRate", "sr:", (val) => { param.Lfo.Env.SR = (Byte)val; updateParam(); }); setupSlider(obj, "ReleaseRate", "rr:", (val) => { param.Lfo.Env.RR = (Byte)val; updateParam(); }); } { GameObject obj = transform.FindChild("Panel/ENV").gameObject; setupSlider(obj, "WaveStyle", "ws:", (val) => { param.WS = (Byte)val; updateParam(); }); setupSlider(obj, "KeyScale", "ks:", (val) => { param.Env.KS = (Byte)val; updateParam(); }); setupSlider(obj, "VelocitySense", "vs:", (val) => { param.Env.VS = (Byte)val; updateParam(); }); setupSlider(obj, "TotalLevel", "tl:", (val) => { param.Env.TL = (Byte)val; updateParam(); }); setupSlider(obj, "AttackRate", "ar:", (val) => { param.Env.AR = (Byte)val; updateParam(); }); setupSlider(obj, "DecayRate", "dr:", (val) => { param.Env.DR = (Byte)val; updateParam(); }); setupSlider(obj, "SustainLevel", "sl:", (val) => { param.Env.SL = (Byte)val; updateParam(); }); setupSlider(obj, "SustainRate", "sr:", (val) => { param.Env.SR = (Byte)val; updateParam(); }); setupSlider(obj, "ReleaseRate", "rr:", (val) => { param.Env.RR = (Byte)val; updateParam(); }); } { WaveTable wt = transform.FindChild("Panel/WaveTable").GetComponent <WaveTable>(); wt.OnUpdateAction = (idx) => { param.WT[idx] = wt.WT[idx]; updateParam(); }; } { Keyboard keyboard = transform.FindChild("Panel/Keyboard").GetComponent <Keyboard>(); keyboard.ChNo = ChNo; keyboard.PortNo = PortNo; } { Transform mmlEditorCanvas = transform.parent.FindChild("MMLPlayerCanvas"); Button button = transform.FindChild("Panel/MMLEditorButton").GetComponent <Button>(); button.onClick.AddListener(() => { mmlBox.Play("Click"); sampleTools.MoveCameraTo(mmlEditorCanvas.localPosition); }); } }
private void Awake() { syntheStation = GameObject.FindObjectOfType <MySyntheStation>(); sampleTools = GameObject.FindObjectOfType <SampleTools>(); mmlBox = sampleTools.GetComponent <MyMMLBox>(); { var extend = transform.Find("Panel/Extend").GetComponent <Button>(); extend.onClick.AddListener(() => { param.Extended = !param.Extended; updateParam(); loadTone(param); }); } { inputField = transform.Find("Panel/InputField").GetComponent <InputField>(); inputField.onEndEdit.AddListener((v) => { var tone = new ToneParamCT8(); if (tone.LoadFromString(v)) { loadTone(tone); } }); var presets = GetComponentsInChildren <PresetButton>(); foreach (var pb in presets) { var btn = pb.GetComponent <Button>(); var tp = new ToneParamCT8(pb.ToneData); btn.onClick.AddListener(() => { loadTone(tp); }); } } { var obj = transform.Find("Panel/LFO").gameObject; setupSlider(obj, "WaveForm", "lw:", (val) => { param.Lfo.WS = (Byte)val; updateParam(); }); setupSlider(obj, "Frequency", "lf:", (val) => { param.Lfo.LF = (Byte)val; updateParam(); }); setupSlider(obj, "PMPower", "lp:", (val) => { param.Lfo.LP = (Byte)val; updateParam(); }); setupSlider(obj, "AMPower", "la:", (val) => { param.Lfo.LA = (Byte)val; updateParam(); }); setupSlider(obj, "AttackRate", "ar:", (val) => { param.Lfo.Env.AR = (Byte)val; updateParam(); }); setupSlider(obj, "DecayRate", "dr:", (val) => { param.Lfo.Env.DR = (Byte)val; updateParam(); }); setupSlider(obj, "SustainLevel", "sl:", (val) => { param.Lfo.Env.SL = (Byte)val; updateParam(); }); setupSlider(obj, "SustainRate", "sr:", (val) => { param.Lfo.Env.SR = (Byte)val; updateParam(); }); setupSlider(obj, "ReleaseRate", "rr:", (val) => { param.Lfo.Env.RR = (Byte)val; updateParam(); }); } { var obj = transform.Find("Panel/ENV").gameObject; setupSlider(obj, "WaveStyle", "ws:", (val) => { param.WS = (Byte)val; updateParam(); }); setupSlider(obj, "KeyScale", "ks:", (val) => { param.Env.KS = (Byte)val; updateParam(); }); setupSlider(obj, "VelocitySense", "vs:", (val) => { param.Env.VS = (Byte)val; updateParam(); }); setupSlider(obj, "TotalLevel", "tl:", (val) => { param.Env.TL = (Byte)val; updateParam(); }); setupSlider(obj, "AttackRate", "ar:", (val) => { param.Env.AR = (Byte)val; updateParam(); }); setupSlider(obj, "DecayRate", "dr:", (val) => { param.Env.DR = (Byte)val; updateParam(); }); setupSlider(obj, "SustainLevel", "sl:", (val) => { param.Env.SL = (Byte)val; updateParam(); }); setupSlider(obj, "SustainRate", "sr:", (val) => { param.Env.SR = (Byte)val; updateParam(); }); setupSlider(obj, "ReleaseRate", "rr:", (val) => { param.Env.RR = (Byte)val; updateParam(); }); } { var wt = transform.Find("Panel/WaveTable").GetComponent <WaveTable>(); wt.OnUpdateAction += (idx) => { param.WT[idx] = wt.WT[idx]; updateParam(); }; } { var keyboard = transform.Find("Panel/Keyboard").GetComponent <Keyboard>(); keyboard.ChNo = chNo; keyboard.PortNo = portNo; } { var mmlEditorCanvas = transform.parent.Find("MMLPlayerCanvas"); var button = transform.Find("Panel/MMLEditorButton").GetComponent <Button>(); button.onClick.AddListener(() => { mmlBox.Play("Click"); sampleTools.MoveCameraTo(mmlEditorCanvas.localPosition); mmlEditorCanvas.GetComponent <CanvasGroup>().interactable = true; this.GetComponent <CanvasGroup>().interactable = false; }); } }
void Awake() { syntheStation = GameObject.FindObjectOfType <MySyntheStation>(); sampleTools = GameObject.FindObjectOfType <SampleTools>(); mmlBox = sampleTools.GetComponent <MyMMLBox>(); { Button extend = transform.FindChild("Panel/Extend").GetComponent <Button>(); extend.onClick.AddListener(() => { param.Extended = !param.Extended; loadTone(param); }); } { inputField = transform.FindChild("Panel/InputField").GetComponent <InputField>(); inputField.onEndEdit.AddListener((v) => { if ((v != null) && (v.Length != 0)) { loadTone(new ToneParam(v)); } else { loadTone(new ToneParam(defaultTone)); } }); PresetButton [] presets = GetComponentsInChildren <PresetButton>(); foreach (PresetButton pb in presets) { Button btn = pb.GetComponent <Button>(); ToneParam tp = new ToneParam(pb.ToneData); btn.onClick.AddListener(() => { loadTone(tp); inputField.text = param.ToString(); }); } } { GameObject obj = transform.FindChild("Panel/FM").gameObject; setupSlider(obj, "Algorithm", "al:", (val) => { param.Al = (Byte)val; applyTone(); }); setupSlider(obj, "Feedback", "fb:", (val) => { param.Fb = (Byte)val; applyTone(); }); setupSlider(obj, "WaveForm", "lw:", (val) => { param.Lfo.WS = (Byte)val; applyTone(); }); setupSlider(obj, "Frequency", "lf:", (val) => { param.Lfo.LF = (Byte)val; applyTone(); }); setupSlider(obj, "PMPower", "lp:", (val) => { param.Lfo.LP = (Byte)val; applyTone(); }); setupSlider(obj, "AMPower", "la:", (val) => { param.Lfo.LA = (Byte)val; applyTone(); }); setupSlider(obj, "AttackRate", "ar:", (val) => { if (param.Extended) { param.Lfo.Env.xAR = (Byte)val; } else { param.Lfo.Env.AR = (Byte)val; }; applyTone(); }); setupSlider(obj, "DecayRate", "dr:", (val) => { if (param.Extended) { param.Lfo.Env.xDR = (Byte)val; } else { param.Lfo.Env.DR = (Byte)val; }; applyTone(); }); setupSlider(obj, "SustainLevel", "sl:", (val) => { if (param.Extended) { param.Lfo.Env.xSL = (Byte)val; } else { param.Lfo.Env.SL = (Byte)val; }; applyTone(); }); setupSlider(obj, "SustainRate", "sr:", (val) => { if (param.Extended) { param.Lfo.Env.xSR = (Byte)val; } else { param.Lfo.Env.SR = (Byte)val; }; applyTone(); }); setupSlider(obj, "ReleaseRate", "rr:", (val) => { if (param.Extended) { param.Lfo.Env.xRR = (Byte)val; } else { param.Lfo.Env.RR = (Byte)val; }; applyTone(); }); } for (int i = 0; i < 4; i++) { int n = i; GameObject obj = transform.FindChild("Panel/OP" + (i + 1)).gameObject; setupSlider(obj, "WaveStyle", "ws:", (val) => { param.Op[n].WS = (Byte)val; applyTone(); }); setupSlider(obj, "AMEnable", "ae:", (val) => { param.Op[n].AE = (Byte)val; applyTone(); }); setupSlider(obj, "Multiple", "ml:", (val) => { param.Op[n].Ml = (Byte)val; applyTone(); }); setupSlider(obj, "Detune", "dt:", (val) => { param.Op[n].Dt = (Byte)val; applyTone(); }); setupSlider(obj, "KeyScale", "ks:", (val) => { param.Op[n].Env.KS = (Byte)val; applyTone(); }); setupSlider(obj, "VelocitySense", "vs:", (val) => { param.Op[n].Env.VS = (Byte)val; applyTone(); }); setupSlider(obj, "TotalLevel", "tl:", (val) => { param.Op[n].Env.TL = (Byte)val; applyTone(); }); setupSlider(obj, "AttackRate", "ar:", (val) => { if (param.Extended) { param.Op[n].Env.xAR = (Byte)val; } else { param.Op[n].Env.AR = (Byte)val; }; applyTone(); }); setupSlider(obj, "DecayRate", "dr:", (val) => { if (param.Extended) { param.Op[n].Env.xDR = (Byte)val; } else { param.Op[n].Env.DR = (Byte)val; }; applyTone(); }); setupSlider(obj, "SustainLevel", "sl:", (val) => { if (param.Extended) { param.Op[n].Env.xSL = (Byte)val; } else { param.Op[n].Env.SL = (Byte)val; }; applyTone(); }); setupSlider(obj, "SustainRate", "sr:", (val) => { if (param.Extended) { param.Op[n].Env.xSR = (Byte)val; } else { param.Op[n].Env.SR = (Byte)val; }; applyTone(); }); setupSlider(obj, "ReleaseRate", "rr:", (val) => { if (param.Extended) { param.Op[n].Env.xRR = (Byte)val; } else { param.Op[n].Env.RR = (Byte)val; }; applyTone(); }); } { Keyboard keyboard = transform.FindChild("Panel/Keyboard").GetComponent <Keyboard>(); keyboard.PortNo = PortNo; keyboard.ChNo = ChNo; } { Transform mmlEditorCanvas = transform.parent.FindChild("MMLPlayerCanvas"); Button button = transform.FindChild("Panel/MMLEditorButton").GetComponent <Button>(); button.onClick.AddListener(() => { mmlBox.Play("Click"); sampleTools.MoveCameraTo(mmlEditorCanvas.localPosition); }); } }