シンセサイザに対する命令をサポートします。
Пример #1
0
        public static bool TryCreate(int part, string name, string type, string value, out Handle handle)
        {
            HandleType handleType;
            int data1;
            float data2;

            handle = null;

            if (!Enum.TryParse(name, true, out handleType))
                return false;

            data1 = (string.IsNullOrWhiteSpace(type)) ? 0 : HandleCreator.ParseOperators(handleType, type);

            if (string.IsNullOrWhiteSpace(value))
                data2 = 0.0f;
            else if (!float.TryParse(value, out data2))
                return false;

            handle = new Handle(part, handleType, data1, data2);
            return true;
        }
Пример #2
0
 public HandleItem(Handle handle, long tick)
     : base(tick)
 {
     this.Handle = handle;
 }
Пример #3
0
 /// <summary>
 /// 単一のハンドルをキューにプッシュします。
 /// </summary>
 /// <param name="handle">プッシュされるハンドル。</param>
 public void PushHandle(Handle handle)
 {
     lock (((ICollection)this.handleQueue).SyncRoot)
         this.handleQueue.Enqueue(handle);
 }
Пример #4
0
        /// <summary>
        /// ベースとなる Handle オブジェクトと新しいパートを指定して Handle クラスのインスタンスを初期化します。
        /// </summary>
        /// <param name="handle">ベースとなる Handle オブジェクト。</param>
        /// <param name="newTargetPart">新しいパート。</param>
        public Handle(Handle handle, int newTargetPart)
        {
            this.targetPart = newTargetPart;
            this.type = handle.Type;

            this.data1 = handle.data1;
            this.data2 = handle.data2;
        }
Пример #5
0
Файл: Part.cs Проект: nanase/ux
        /// <summary>
        /// このパートにハンドルを適用します。
        /// </summary>
        /// <param name="handle">適用されるハンドル。</param>
        public void ApplyHandle(Handle handle)
        {
            switch (handle.Type)
            {
                //パラメータリセット
                case HandleType.Reset:
                    this.Reset();
                    break;

                //サイレンス
                case HandleType.Silence:
                    this.Silence();
                    break;

                //ボリューム設定
                case HandleType.Volume:
                    this.ApplyForVolume(handle.Data1, handle.Data2);
                    break;

                //パンポット
                case HandleType.Panpot:
                    this.panpot = new Panpot(handle.Data2);
                    break;

                //ビブラート
                case HandleType.Vibrate:
                    this.ApplyForVibrate(handle.Data1, handle.Data2);
                    break;

                //波形追加
                case HandleType.Waveform:
                    this.ApplyForWaveform(handle.Data1, handle.Data2);
                    break;

                //波形編集
                case HandleType.EditWaveform:
                    this.waveform.SetParameter(handle.Data1, handle.Data2);
                    break;

                //エンベロープ
                case HandleType.Envelope:
                    this.envelope.SetParameter(handle.Data1, handle.Data2);
                    break;

                //ファインチューン
                case HandleType.FineTune:
                    this.finetune = handle.Data2.Clamp(float.MaxValue, 0.0f);
                    break;

                //キーシフト
                case HandleType.KeyShift:
                    this.keyShift = handle.Data1.Clamp(128, -128);
                    break;

                //ポルタメント
                case HandleType.Portament:
                    this.ApplyForPortament(handle.Data1, handle.Data2);
                    break;

                //ゼロゲート
                case HandleType.ZeroGate:
                    this.ZeroGate(handle.Data1);
                    break;

                //ノートオフ
                case HandleType.NoteOff:
                    this.Release();
                    break;

                //ノートオン
                case HandleType.NoteOn:
                    this.Attack(handle.Data1);
                    this.velocity = handle.Data2.Clamp(1.0f, 0.0f);
                    break;

                default:
                    break;
            }
        }
Пример #6
0
 private void AddHandle(Handle handle)
 {
     this.output.Add(new HandleItem(handle, this.nowTick));
 }