예제 #1
0
        private void mButtonStart_Click(object sender, RoutedEventArgs e)
        {
            if (!System.IO.File.Exists(mTextBoxInput.Text))
            {
                MessageBox.Show(string.Format("Error: Input file does not exist. {0}", mTextBoxInput.Text));
                return;
            }

            if (0 != ".LRC".CompareTo(System.IO.Path.GetExtension(mTextBoxOutput.Text).ToUpperInvariant()))
            {
                MessageBox.Show(string.Format("Error: Output file extension should be .LRC. {0}", mTextBoxOutput.Text));
                return;
            }

            if (System.IO.File.Exists(mTextBoxOutput.Text))
            {
                var mbr = MessageBox.Show(string.Format("Overwrite LRC file ? {0}", mTextBoxOutput.Text), "Overwrite confirmation", MessageBoxButton.YesNo, MessageBoxImage.Question);
                if (mbr != MessageBoxResult.Yes)
                {
                    // キャンセル。
                    return;
                }
            }

            mState = State.Processing;
            Update();

            KeyClassifier.PitchEnum pitchEnum = KeyClassifier.PitchEnum.ConcertPitch;
            if (mRadioButtonBaroquePitch.IsChecked == true)
            {
                pitchEnum = KeyClassifier.PitchEnum.BaroquePitch;
            }

            mBw.RunWorkerAsync(new WorkerParams(mTextBoxInput.Text, mTextBoxOutput.Text, pitchEnum));
        }
예제 #2
0
        private bool ParseCommandline(string [] args)
        {
            if (args.Length != 2 && args.Length != 3)
            {
                PrintUsage();
                return(false);
            }

            string inputFlac = args[0];
            string outputLrc;

            KeyClassifier.PitchEnum pitchEnum = KeyClassifier.PitchEnum.ConcertPitch;
            if (args.Length == 3)
            {
                if (0 != "-bp".CompareTo(args[1]))
                {
                    Console.WriteLine("Error: Unknown option {0}", args[1]);
                    PrintUsage();
                    return(false);
                }

                pitchEnum = KeyClassifier.PitchEnum.BaroquePitch;
                outputLrc = args[2];
            }
            else
            {
                outputLrc = args[1];
            }

            Console.WriteLine("{0} input=\"{1}\" outputLRC=\"{2}\"", pitchEnum, inputFlac, outputLrc);

            var kc = new KeyClassifier();
            var r  = kc.Classify(inputFlac, outputLrc, pitchEnum, null);

            if (r.Length != 0)
            {
                Console.Write(r);
            }

            // コマンドライン処理が行われたのでtrueを戻す。
            return(true);
        }
예제 #3
0
 public WorkerParams(string aInput, string aOutput, KeyClassifier.PitchEnum aPitchEnum)
 {
     inputAudioPath = aInput;
     outputLrcPath  = aOutput;
     pitchEnum      = aPitchEnum;
 }