Немало распространенных классов, которые мы используем каждый день чуть ли не в каждой программе, имеют малоизвестные,
но тем не менее интересные функциональные возможности. Так, класс Console
имеет интересный метод Console.Beep(Int32, Int32).
Первый параметр представляет значение частоты сигнала, который нужно проигрывать в динамике. А второй параметр - длительность этого сигнала.
Поскольку все ноты в различных октавах имеют определенную частоту (например, нота До в первой октаве имеет частоту 261,6 герц),
то мы можем с помощью комбинации методов Beep(Int32, Int32)
создать целые мелодии. Правда, такие медодии будут звучать несколько примитивно,
как, например, на рингтонах старых телефонов. Итак, создадим консольное приложение со следующим содержанием:
using System.Threading; //Для создания пауз в мелодии class Program { static void Main(string[] args) { refrenSolo(); coupleSolo(); refrenSolo(); } //Jingle Bells static void refrenSolo() { Console.Beep(659, 300); Console.Beep(659, 300); Console.Beep(659, 300); Thread.Sleep(300); Console.Beep(659, 300); Console.Beep(659, 300); Console.Beep(659, 300); Thread.Sleep(300); Console.Beep(659, 300); Console.Beep(783, 300); Console.Beep(523, 300); Console.Beep(587, 300); Console.Beep(659, 300); Console.Beep(261, 300); Console.Beep(293, 300); Console.Beep(329, 300); Console.Beep(698, 300); Console.Beep(698, 300); Console.Beep(698, 300); Thread.Sleep(300); Console.Beep(698, 300); Console.Beep(659, 300); Console.Beep(659, 300); Thread.Sleep(300); Console.Beep(659, 300); Console.Beep(587, 300); Console.Beep(587, 300); Console.Beep(659, 300); Console.Beep(587, 300); Thread.Sleep(300); Console.Beep(783, 300); Thread.Sleep(300); Console.Beep(659, 300); Console.Beep(659, 300); Console.Beep(659, 300); Thread.Sleep(300); Console.Beep(659, 300); Console.Beep(659, 300); Console.Beep(659, 300); Thread.Sleep(300); Console.Beep(659, 300); Console.Beep(783, 300); Console.Beep(523, 300); Console.Beep(587, 300); Console.Beep(659, 300); Console.Beep(261, 300); Console.Beep(293, 300); Console.Beep(329, 300); Console.Beep(698, 300); Console.Beep(698, 300); Console.Beep(698, 300); Thread.Sleep(300); Console.Beep(698, 300); Console.Beep(659, 300); Console.Beep(659, 300); Thread.Sleep(300); Console.Beep(783, 300); Console.Beep(783, 300); Console.Beep(698, 300); Console.Beep(587, 300); Console.Beep(523, 600); Thread.Sleep(600); } static void coupleSolo() { Console.Beep(392, 300); Console.Beep(659, 300); Console.Beep(587, 300); Console.Beep(523, 300); Console.Beep(392, 600); Thread.Sleep(300 * 2); Console.Beep(392, 300); Console.Beep(659, 300); Console.Beep(587, 300); Console.Beep(523, 300); Console.Beep(440, 600); Thread.Sleep(600); Console.Beep(440, 300); Console.Beep(698, 300); Console.Beep(659, 300); Console.Beep(587, 300); Console.Beep(783, 600); Thread.Sleep(600); Console.Beep(880, 300); Console.Beep(880, 300); Console.Beep(783, 300); Console.Beep(622, 300); Console.Beep(659, 600); Thread.Sleep(600); Console.Beep(392, 300); Console.Beep(659, 300); Console.Beep(587, 300); Console.Beep(523, 300); Console.Beep(392, 600); Thread.Sleep(600); Console.Beep(392, 300); Console.Beep(659, 300); Console.Beep(587, 300); Console.Beep(523, 300); Console.Beep(440, 600); Thread.Sleep(600); Console.Beep(440, 300); Console.Beep(698, 300); Console.Beep(659, 300); Console.Beep(587, 300); Console.Beep(783, 600); Thread.Sleep(600); Console.Beep(880, 300); Console.Beep(783, 300); Console.Beep(698, 300); Console.Beep(587, 300); Console.Beep(523, 600); Thread.Sleep(600); } }
Запустим программу на выполнение и услышим знакомую мелодию. А теперь еще немного мелодий.
Мелодия "В траве сидел кузнечик":
private static void Grasshoper() { Console.Beep(440, 300); Console.Beep(330, 300); Console.Beep(440, 300); Console.Beep(330, 300); Console.Beep(440, 300); Console.Beep(415, 300); Console.Beep(415, 300); Thread.Sleep(600); Console.Beep(415, 300); Console.Beep(330, 300); Console.Beep(415, 300); Console.Beep(330, 300); Console.Beep(415, 300); Console.Beep(440, 300); Console.Beep(440, 300); Thread.Sleep(600); Console.Beep(440, 300); Console.Beep(494, 300); Console.Beep(494, 100); Console.Beep(494, 100); Console.Beep(494, 300); Console.Beep(494, 300); Console.Beep(523, 300); Console.Beep(523, 100); Console.Beep(523, 100); Console.Beep(523, 300); Console.Beep(523, 300); Console.Beep(523, 300); Console.Beep(494, 300); Console.Beep(440, 300); Console.Beep(415, 300); Console.Beep(440, 800); }
В лесу родилась елочка.
private static void Tannenbaum() { Console.Beep(247, 500); Console.Beep(417, 500); Console.Beep(417, 500); Console.Beep(370, 500); Console.Beep(417, 500); Console.Beep(329, 500); Console.Beep(247, 500); Console.Beep(247, 500); Console.Beep(247, 500); Console.Beep(417, 500); Console.Beep(417, 500); Console.Beep(370, 500); Console.Beep(417, 500); Console.Beep(497, 500); Thread.Sleep(500); Console.Beep(497, 500); Console.Beep(277, 500); Console.Beep(277, 500); Console.Beep(440, 500); Console.Beep(440, 500); Console.Beep(417, 500); Console.Beep(370, 500); Console.Beep(329, 500); Console.Beep(247, 500); Console.Beep(417, 500); Console.Beep(417, 500); Console.Beep(370, 500); Console.Beep(417, 500); Console.Beep(329, 500); }
Миссия невыполнима:
private static void MissionImpossible() { Console.Beep(784,150); Thread.Sleep(300); Console.Beep(784,150); Thread.Sleep(300); Console.Beep(932,150); Thread.Sleep(150); Console.Beep(1047,150); Thread.Sleep(150); Console.Beep(784,150); Thread.Sleep(300); Console.Beep(784,150); Thread.Sleep(300); Console.Beep(699,150); Thread.Sleep(150); Console.Beep(740,150); Thread.Sleep(150); Console.Beep(784,150); Thread.Sleep(300); Console.Beep(784,150); Thread.Sleep(300); Console.Beep(932,150); Thread.Sleep(150); Console.Beep(1047,150); Thread.Sleep(150); Console.Beep(784,150); Thread.Sleep(300); Console.Beep(784,150); Thread.Sleep(300); Console.Beep(699,150); Thread.Sleep(150); Console.Beep(740,150); Thread.Sleep(150); Console.Beep(932,150); Console.Beep(784,150); Console.Beep(587,1200); Thread.Sleep(75); Console.Beep(932,150); Console.Beep(784,150); Console.Beep(554,1200); Thread.Sleep(75); Console.Beep(932,150); Console.Beep(784,150); Console.Beep(523,1200); Thread.Sleep(150); Console.Beep(466,150); Console.Beep(523, 150); }
Тема из звездных войн:
private static void StarWars() { Console.Beep(300, 500); Thread.Sleep(50); Console.Beep(300, 500); Thread.Sleep(50); Console.Beep(300, 500); Thread.Sleep(50); Console.Beep(250, 500); Thread.Sleep(50); Console.Beep(350, 250); Console.Beep(300, 500); Thread.Sleep(50); Console.Beep(250, 500); Thread.Sleep(50); Console.Beep(350, 250); Console.Beep(300, 500); Thread.Sleep(50); }
Ну а эту мелодию должны знать все
private static void SuperMario() { Console.Beep(659, 125); Console.Beep(659, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(167); Console.Beep(523, 125); Console.Beep(659, 125); Thread.Sleep(125); Console.Beep(784, 125); Thread.Sleep(375); Console.Beep(392, 125); Thread.Sleep(375); Console.Beep(523, 125); Thread.Sleep(250); Console.Beep(392, 125); Thread.Sleep(250); Console.Beep(330, 125); Thread.Sleep(250); Console.Beep(440, 125); Thread.Sleep(125); Console.Beep(494, 125); Thread.Sleep(125); Console.Beep(466, 125); Thread.Sleep(42); Console.Beep(440, 125); Thread.Sleep(125); Console.Beep(392, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(125); Console.Beep(784, 125); Thread.Sleep(125); Console.Beep(880, 125); Thread.Sleep(125); Console.Beep(698, 125); Console.Beep(784, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(125); Console.Beep(523, 125); Thread.Sleep(125); Console.Beep(587, 125); Console.Beep(494, 125); Thread.Sleep(125); Console.Beep(523, 125); Thread.Sleep(250); Console.Beep(392, 125); Thread.Sleep(250); Console.Beep(330, 125); Thread.Sleep(250); Console.Beep(440, 125); Thread.Sleep(125); Console.Beep(494, 125); Thread.Sleep(125); Console.Beep(466, 125); Thread.Sleep(42); Console.Beep(440, 125); Thread.Sleep(125); Console.Beep(392, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(125); Console.Beep(784, 125); Thread.Sleep(125); Console.Beep(880, 125); Thread.Sleep(125); Console.Beep(698, 125); Console.Beep(784, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(125); Console.Beep(523, 125); Thread.Sleep(125); Console.Beep(587, 125); Console.Beep(494, 125); Thread.Sleep(375); Console.Beep(784, 125); Console.Beep(740, 125); Console.Beep(698, 125); Thread.Sleep(42); Console.Beep(622, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(167); Console.Beep(415, 125); Console.Beep(440, 125); Console.Beep(523, 125); Thread.Sleep(125); Console.Beep(440, 125); Console.Beep(523, 125); Console.Beep(587, 125); Thread.Sleep(250); Console.Beep(784, 125); Console.Beep(740, 125); Console.Beep(698, 125); Thread.Sleep(42); Console.Beep(622, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(167); Console.Beep(698, 125); Thread.Sleep(125); Console.Beep(698, 125); Console.Beep(698, 125); Thread.Sleep(625); Console.Beep(784, 125); Console.Beep(740, 125); Console.Beep(698, 125); Thread.Sleep(42); Console.Beep(622, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(167); Console.Beep(415, 125); Console.Beep(440, 125); Console.Beep(523, 125); Thread.Sleep(125); Console.Beep(440, 125); Console.Beep(523, 125); Console.Beep(587, 125); Thread.Sleep(250); Console.Beep(622, 125); Thread.Sleep(250); Console.Beep(587, 125); Thread.Sleep(250); Console.Beep(523, 125); Thread.Sleep(1125); Console.Beep(784, 125); Console.Beep(740, 125); Console.Beep(698, 125); Thread.Sleep(42); Console.Beep(622, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(167); Console.Beep(415, 125); Console.Beep(440, 125); Console.Beep(523, 125); Thread.Sleep(125); Console.Beep(440, 125); Console.Beep(523, 125); Console.Beep(587, 125); Thread.Sleep(250); Console.Beep(784, 125); Console.Beep(740, 125); Console.Beep(698, 125); Thread.Sleep(42); Console.Beep(622, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(167); Console.Beep(698, 125); Thread.Sleep(125); Console.Beep(698, 125); Console.Beep(698, 125); Thread.Sleep(625); Console.Beep(784, 125); Console.Beep(740, 125); Console.Beep(698, 125); Thread.Sleep(42); Console.Beep(622, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(167); Console.Beep(415, 125); Console.Beep(440, 125); Console.Beep(523, 125); Thread.Sleep(125); Console.Beep(440, 125); Console.Beep(523, 125); Console.Beep(587, 125); Thread.Sleep(250); Console.Beep(622, 125); Thread.Sleep(250); Console.Beep(587, 125); Thread.Sleep(250); Console.Beep(523, 125); Thread.Sleep(625); }
"К Элизе" Бетховена:
private static void Beethoven() { Console.Beep(659, 120); Thread.Sleep(130); Console.Beep(622, 120); Thread.Sleep(130); Console.Beep(659, 120); Thread.Sleep(130); Console.Beep(622, 120); Thread.Sleep(130); Console.Beep(659, 120); Thread.Sleep(130); Console.Beep(494, 120); Thread.Sleep(130); Console.Beep(587, 120); Thread.Sleep(130); Console.Beep(523, 120); Thread.Sleep(130); Console.Beep(440, 120); Thread.Sleep(150); Console.Beep(262, 120); Thread.Sleep(130); Console.Beep(330, 120); Thread.Sleep(130); Console.Beep(440, 120); Thread.Sleep(130); Console.Beep(494, 120); Thread.Sleep(150); Console.Beep(330, 120); Thread.Sleep(130); Console.Beep(415, 120); Thread.Sleep(130); Console.Beep(494, 120); Thread.Sleep(130); Console.Beep(523, 120); Thread.Sleep(150); Console.Beep(330, 120); Thread.Sleep(130); Console.Beep(659, 120); Thread.Sleep(130); Console.Beep(622, 120); Thread.Sleep(130); Console.Beep(659, 120); Thread.Sleep(130); Console.Beep(622, 120); Thread.Sleep(130); Console.Beep(659, 120); Thread.Sleep(130); Console.Beep(494, 120); Thread.Sleep(130); Console.Beep(587, 120); Thread.Sleep(130); Console.Beep(523, 120); Thread.Sleep(130); Console.Beep(440, 120); Thread.Sleep(150); Console.Beep(262, 120); Thread.Sleep(130); Console.Beep(330, 120); Thread.Sleep(130); Console.Beep(440, 120); Thread.Sleep(130); Console.Beep(494, 120); Thread.Sleep(150); Console.Beep(330, 120); Thread.Sleep(130); Console.Beep(523, 120); Thread.Sleep(130); Console.Beep(494, 120); Thread.Sleep(150); Console.Beep(440, 120); }
И на последок Happy Birthday:
private static void HappyBirthday() { Thread.Sleep(2000); Console.Beep(264, 125); Thread.Sleep(250); Console.Beep(264, 125); Thread.Sleep(125); Console.Beep(297, 500); Thread.Sleep(125); Console.Beep(264, 500); Thread.Sleep(125); Console.Beep(352, 500); Thread.Sleep(125); Console.Beep(330, 1000); Thread.Sleep(250); Console.Beep(264, 125); Thread.Sleep(250); Console.Beep(264, 125); Thread.Sleep(125); Console.Beep(297, 500); Thread.Sleep(125); Console.Beep(264, 500); Thread.Sleep(125); Console.Beep(396, 500); Thread.Sleep(125); Console.Beep(352, 1000); Thread.Sleep(250); Console.Beep(264, 125); Thread.Sleep(250); Console.Beep(264, 125); Thread.Sleep(125); Console.Beep(2642, 500); Thread.Sleep(125); Console.Beep(440, 500); Thread.Sleep(125); Console.Beep(352, 250); Thread.Sleep(125); Console.Beep(352, 125); Thread.Sleep(125); Console.Beep(330, 500); Thread.Sleep(125); Console.Beep(297, 1000); Thread.Sleep(250); Console.Beep(466, 125); Thread.Sleep(250); Console.Beep(466, 125); Thread.Sleep(125); Console.Beep(440, 500); Thread.Sleep(125); Console.Beep(352, 500); Thread.Sleep(125); Console.Beep(396, 500); Thread.Sleep(125); Console.Beep(352, 1000); }