見るメトロノーム


前書き

 

まだコードを書くことにあまり慣れていないので

とりあえず何かを作ってみようと思いました。

自分は音楽が好きなのでメトロノーム的なものを作ってみました。

 

具体的にどんなものかというと、

自分が欲しいBPMを入力すると        ※BPM…Beats Per Minuteの略。

●がその速度で点滅するというものです。          1分間に何回のリズムが刻まれているかを示す。


 

コード

class Metronome
    {
        //任意のタイミングで終了させるためのもの
        static bool End = false;

        static void Main()
        {
            Console.WriteLine("BPMを入力してください。");

            //BPMの入力
            var BPM = int.Parse(Console.ReadLine());
            Console.WriteLine("");

            Console.WriteLine("設定したBPMで●が時を刻みます。");
            Console.WriteLine("終了したい場合はEnterキーを押してください。");
            Console.WriteLine("");

            //3秒のカウントダウン
            for (int timer = 3; 1 <= timer; timer--)
            {
                Console.CursorLeft = 0;
                Console.Write("開始まで{0}秒", timer);
                Thread.Sleep(1000);
            }
            Console.CursorLeft = 0;
            Console.WriteLine("開始まで0秒");
            Console.WriteLine("");

            //処理の予約(実行可能な時に発動)
            ThreadPool.QueueUserWorkItem(new WaitCallback(PushKey)); 

            //キー入力があるまで設定BPMで点滅
            while (true)
            {
                Console.CursorLeft = 0;
                Console.Write("●");
                Thread.Sleep(6000 / BPM);
                Console.CursorLeft = 0;
                Console.Write(" ");
                Thread.Sleep(54000 / BPM);

                if (End)
                {
                    break;
                }
            }
        }

        //キー入力でEndをtrueに
        static void PushKey(object State) 
        {
            ConsoleKeyInfo keyInfo = Console.ReadKey(true);
            End = true;
        }
    }

後書き

 

内容的にはシンプルですが、

一つ自分が作りたいものを作れたので

良かったなと思います。

 

次回も何か作るなら、

もう少し凝ったものを作りたいなと思います。