/*
  * This is a simple console program to run the examples.
  * The examples themselves are in their own file as are support classes
  * used in several examples.
  * The orchestra strings are part of this class and defined below.
  *
  * When runnings, enter an exercise number to hear the result.
  * Exercise 5 randomly selects one of three note-generating algorithms.
  * Run it repeatedly until you have heard all three.
  */
 static void Main(string[] args)
 {
     var pgm = new CsoundAPI_Examples();
     var r = new Random();
     int choice = 0;
     do
     {
         Console.Write("\nEnter a test number between 1 and 7: ");
         string val = Console.ReadLine();
         if (int.TryParse(val, out choice))
         {
             switch (choice)
             {
                 case 1: pgm.Example1(); break;
                 case 2: pgm.Example2(); break;
                 case 3: pgm.Example3(); break;
                 case 4: Console.WriteLine("Example 4 not implemented yet");  break;// pgm.Example4(); break;
                 case 5: pgm.Example5(r.Next(3)); break;
                 case 6: pgm.Example6(); break;
                 case 7: pgm.Example7(); break;
                 default:
                     choice = -1;
                     break;
             }
         }
         else choice = 0;
     } while (choice > 0);
 }
 /*
  * This is a simple console program to run the examples.
  * The examples themselves are in their own file as are support classes
  * used in several examples.
  * The orchestra strings are part of this class and defined below.
  *
  * When runnings, enter an exercise number to hear the result.
  * Exercise number can be an integer or, if there are subtests, a real number
  * where the fractional digit is the one-based subtest number (like 5.2 to
  * run the third subtest in example 5 or 5.0 to run the first)
  */
 static void Main(string[] args)
 {
     var pgm = new CsoundAPI_Examples();
     double choice = 0.0;
     do
     {
         Console.Write("\nEnter a test number between 1 and 9 (can be real number for subtests): ");
         string val = Console.ReadLine();
         if (double.TryParse(val, out choice))
         {
             int pgmNbr = (int)choice;
             int subPgmNbr = (((int)(choice * 10)) % 10);
             switch (pgmNbr)
             {
                 case 1: pgm.Example1(); break;
                 case 2: pgm.Example2(); break;
                 case 3: pgm.Example3(); break;
                 case 4:
                     if ((subPgmNbr % 2) == 0)
                         pgm.Example4();//use performanceThread
                     else
                     {
             //            var t = pgm.Example41(); //use C# Tasks: threading issues still
             //            Task.WaitAll(t);
                     }
                     break;
                 case 5: pgm.Example5(subPgmNbr % 3); break;
                 case 6: pgm.Example6(); break;
                 case 7: pgm.Example7(); break;
                 case 8: pgm.Example8(); break;
                 case 9: pgm.Example9(); break;
                 default:
                     choice = -1;
                     break;
             }
         }
         else choice = 0;
     } while (choice > 0);
 }