mirror of
https://github.com/SabreTools/MPF.git
synced 2026-02-14 05:36:10 +00:00
397 lines
10 KiB
C#
397 lines
10 KiB
C#
using System;
|
|
|
|
namespace MPF.Core.Utilities
|
|
{
|
|
/// <summary>
|
|
/// Methods to deal with outputting tones to the PC speaker
|
|
/// </summary>
|
|
public class Chime
|
|
{
|
|
/// <summary>
|
|
/// Standard duration to play a single tone
|
|
/// </summary>
|
|
private const int standardDurationMs = 200;
|
|
|
|
#region Octave 0
|
|
|
|
/// <summary>
|
|
/// Frequency representing C(0)
|
|
/// </summary>
|
|
private const int noteC0 = 16; // 16.35
|
|
|
|
/// <summary>
|
|
/// Frequency representing D(0)
|
|
/// </summary>
|
|
private const int noteD0 = 18; // 18.35
|
|
|
|
/// <summary>
|
|
/// Frequency representing E(0)
|
|
/// </summary>
|
|
private const int noteE0 = 21; // 20.60
|
|
|
|
/// <summary>
|
|
/// Frequency representing F(0)
|
|
/// </summary>
|
|
private const int noteF0 = 22; // 21.83
|
|
|
|
/// <summary>
|
|
/// Frequency representing G(0)
|
|
/// </summary>
|
|
private const int noteG0 = 25; // 24.50
|
|
|
|
/// <summary>
|
|
/// Frequency representing A(0)
|
|
/// </summary>
|
|
private const int noteA0 = 28; // 27.50
|
|
|
|
/// <summary>
|
|
/// Frequency representing B(0)
|
|
/// </summary>
|
|
private const int noteB0 = 31; // 30.87
|
|
|
|
#endregion
|
|
|
|
#region Octave 1
|
|
|
|
/// <summary>
|
|
/// Frequency representing C(1)
|
|
/// </summary>
|
|
private const int noteC1 = 33; // 32.70
|
|
|
|
/// <summary>
|
|
/// Frequency representing D(1)
|
|
/// </summary>
|
|
private const int noteD1 = 37; // 36.71
|
|
|
|
/// <summary>
|
|
/// Frequency representing E(1)
|
|
/// </summary>
|
|
private const int noteE1 = 41; // 41.20
|
|
|
|
/// <summary>
|
|
/// Frequency representing F(1)
|
|
/// </summary>
|
|
private const int noteF1 = 44; // 43.65
|
|
|
|
/// <summary>
|
|
/// Frequency representing G(1)
|
|
/// </summary>
|
|
private const int noteG1 = 49; // 49.00
|
|
|
|
/// <summary>
|
|
/// Frequency representing A(1)
|
|
/// </summary>
|
|
private const int noteA1 = 55; // 55.00
|
|
|
|
/// <summary>
|
|
/// Frequency representing B(1)
|
|
/// </summary>
|
|
private const int noteB1 = 62; // 61.74
|
|
|
|
#endregion
|
|
|
|
#region Octave 2
|
|
|
|
/// <summary>
|
|
/// Frequency representing C(2)
|
|
/// </summary>
|
|
private const int noteC2 = 65; // 65.41
|
|
|
|
/// <summary>
|
|
/// Frequency representing D(2)
|
|
/// </summary>
|
|
private const int noteD2 = 73; // 73.42
|
|
|
|
/// <summary>
|
|
/// Frequency representing E(2)
|
|
/// </summary>
|
|
private const int noteE2 = 82; // 82.41
|
|
|
|
/// <summary>
|
|
/// Frequency representing F(2)
|
|
/// </summary>
|
|
private const int noteF2 = 87; // 87.31
|
|
|
|
/// <summary>
|
|
/// Frequency representing G(2)
|
|
/// </summary>
|
|
private const int noteG2 = 98; // 98.00
|
|
|
|
/// <summary>
|
|
/// Frequency representing A(2)
|
|
/// </summary>
|
|
private const int noteA2 = 110; // 110.00
|
|
|
|
/// <summary>
|
|
/// Frequency representing B(2)
|
|
/// </summary>
|
|
private const int noteB2 = 123; // 123.47
|
|
|
|
#endregion
|
|
|
|
#region Octave 3
|
|
|
|
/// <summary>
|
|
/// Frequency representing C(3)
|
|
/// </summary>
|
|
private const int noteC3 = 131; // 130.81
|
|
|
|
/// <summary>
|
|
/// Frequency representing D(3)
|
|
/// </summary>
|
|
private const int noteD3 = 147; // 146.83
|
|
|
|
/// <summary>
|
|
/// Frequency representing E(3)
|
|
/// </summary>
|
|
private const int noteE3 = 165; // 164.81
|
|
|
|
/// <summary>
|
|
/// Frequency representing F(3)
|
|
/// </summary>
|
|
private const int noteF3 = 175; // 174.61
|
|
|
|
/// <summary>
|
|
/// Frequency representing G(3)
|
|
/// </summary>
|
|
private const int noteG3 = 196; // 196.00
|
|
|
|
/// <summary>
|
|
/// Frequency representing A(3)
|
|
/// </summary>
|
|
private const int noteA3 = 220; // 220.00
|
|
|
|
/// <summary>
|
|
/// Frequency representing B(3)
|
|
/// </summary>
|
|
private const int noteB3 = 247; // 246.94
|
|
|
|
#endregion
|
|
|
|
#region Octave 4
|
|
|
|
/// <summary>
|
|
/// Frequency representing C(4)
|
|
/// </summary>
|
|
private const int noteC4 = 262; // 261.63
|
|
|
|
/// <summary>
|
|
/// Frequency representing D(4)
|
|
/// </summary>
|
|
private const int noteD4 = 294; // 293.66
|
|
|
|
/// <summary>
|
|
/// Frequency representing E(4)
|
|
/// </summary>
|
|
private const int noteE4 = 330; // 329.63
|
|
|
|
/// <summary>
|
|
/// Frequency representing F(4)
|
|
/// </summary>
|
|
private const int noteF4 = 349; // 349.23
|
|
|
|
/// <summary>
|
|
/// Frequency representing G(4)
|
|
/// </summary>
|
|
private const int noteG4 = 392; // 392.00
|
|
|
|
/// <summary>
|
|
/// Frequency representing A(4)
|
|
/// </summary>
|
|
private const int noteA4 = 440; // 440.00
|
|
|
|
/// <summary>
|
|
/// Frequency representing B(4)
|
|
/// </summary>
|
|
private const int noteB4 = 494; // 493.88
|
|
|
|
#endregion
|
|
|
|
#region Octave 5
|
|
|
|
/// <summary>
|
|
/// Frequency representing C(5)
|
|
/// </summary>
|
|
private const int noteC5 = 523; // 523.25
|
|
|
|
/// <summary>
|
|
/// Frequency representing D(5)
|
|
/// </summary>
|
|
private const int noteD5 = 587; // 587.33
|
|
|
|
/// <summary>
|
|
/// Frequency representing E(5)
|
|
/// </summary>
|
|
private const int noteE5 = 659; // 659.25
|
|
|
|
/// <summary>
|
|
/// Frequency representing F(5)
|
|
/// </summary>
|
|
private const int noteF5 = 698; // 698.46
|
|
|
|
/// <summary>
|
|
/// Frequency representing G(5)
|
|
/// </summary>
|
|
private const int noteG5 = 783; // 783.99
|
|
|
|
/// <summary>
|
|
/// Frequency representing A(5)
|
|
/// </summary>
|
|
private const int noteA5 = 880; // 880.00
|
|
|
|
/// <summary>
|
|
/// Frequency representing B(5)
|
|
/// </summary>
|
|
private const int noteB5 = 988; // 987.77
|
|
|
|
#endregion
|
|
|
|
#region Octave 6
|
|
|
|
/// <summary>
|
|
/// Frequency representing C(6)
|
|
/// </summary>
|
|
private const int noteC6 = 1047; // 1046.50
|
|
|
|
/// <summary>
|
|
/// Frequency representing D(6)
|
|
/// </summary>
|
|
private const int noteD6 = 1175; // 1174.66
|
|
|
|
/// <summary>
|
|
/// Frequency representing E(6)
|
|
/// </summary>
|
|
private const int noteE6 = 1319; // 1318.51
|
|
|
|
/// <summary>
|
|
/// Frequency representing F(6)
|
|
/// </summary>
|
|
private const int noteF6 = 1397; // 1396.91
|
|
|
|
/// <summary>
|
|
/// Frequency representing G(6)
|
|
/// </summary>
|
|
private const int noteG6 = 1568; // 1567.98
|
|
|
|
/// <summary>
|
|
/// Frequency representing A(6)
|
|
/// </summary>
|
|
private const int noteA6 = 1760; // 1760.00
|
|
|
|
/// <summary>
|
|
/// Frequency representing B(6)
|
|
/// </summary>
|
|
private const int noteB6 = 1976; // 1975.53
|
|
|
|
#endregion
|
|
|
|
#region Octave 7
|
|
|
|
/// <summary>
|
|
/// Frequency representing C(7)
|
|
/// </summary>
|
|
private const int noteC7 = 2093; // 2093.00
|
|
|
|
/// <summary>
|
|
/// Frequency representing D(7)
|
|
/// </summary>
|
|
private const int noteD7 = 2349; // 2349.32
|
|
|
|
/// <summary>
|
|
/// Frequency representing E(7)
|
|
/// </summary>
|
|
private const int noteE7 = 2637; // 2637.02
|
|
|
|
/// <summary>
|
|
/// Frequency representing F(7)
|
|
/// </summary>
|
|
private const int noteF7 = 2794; // 2793.83
|
|
|
|
/// <summary>
|
|
/// Frequency representing G(7)
|
|
/// </summary>
|
|
private const int noteG7 = 3136; // 3135.96
|
|
|
|
/// <summary>
|
|
/// Frequency representing A(7)
|
|
/// </summary>
|
|
private const int noteA7 = 3520; // 3520.00
|
|
|
|
/// <summary>
|
|
/// Frequency representing B(7)
|
|
/// </summary>
|
|
private const int noteB7 = 3951; // 3951.07
|
|
|
|
#endregion
|
|
|
|
#region Octave 8
|
|
|
|
/// <summary>
|
|
/// Frequency representing C(8)
|
|
/// </summary>
|
|
private const int noteC8 = 4186; // 4186.01
|
|
|
|
/// <summary>
|
|
/// Frequency representing D(8)
|
|
/// </summary>
|
|
private const int noteD8 = 4699; // 4698.63
|
|
|
|
/// <summary>
|
|
/// Frequency representing E(8)
|
|
/// </summary>
|
|
private const int noteE8 = 5274; // 5274.04
|
|
|
|
/// <summary>
|
|
/// Frequency representing F(8)
|
|
/// </summary>
|
|
private const int noteF8 = 5588; // 5587.65
|
|
|
|
/// <summary>
|
|
/// Frequency representing G(8)
|
|
/// </summary>
|
|
private const int noteG8 = 6272; // 6271.93
|
|
|
|
/// <summary>
|
|
/// Frequency representing A(8)
|
|
/// </summary>
|
|
private const int noteA8 = 7040; // 7040.00
|
|
|
|
/// <summary>
|
|
/// Frequency representing B(8)
|
|
/// </summary>
|
|
private const int noteB8 = 7902; // 7902.13
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// Output a series of beeps for completion, similar to DiscImageCreator
|
|
/// </summary>
|
|
/// <param name="success">True if the upward series should play, false otherwise</param>
|
|
public static void StandardCompletion(bool success)
|
|
{
|
|
if (success)
|
|
{
|
|
Console.Beep(noteC4, standardDurationMs);
|
|
Console.Beep(noteD4, standardDurationMs);
|
|
Console.Beep(noteE4, standardDurationMs);
|
|
Console.Beep(noteF4, standardDurationMs);
|
|
Console.Beep(noteG4, standardDurationMs);
|
|
Console.Beep(noteA4, standardDurationMs);
|
|
Console.Beep(noteB4, standardDurationMs);
|
|
Console.Beep(noteC5, standardDurationMs);
|
|
}
|
|
else
|
|
{
|
|
Console.Beep(noteC5, standardDurationMs);
|
|
Console.Beep(noteB4, standardDurationMs);
|
|
Console.Beep(noteA4, standardDurationMs);
|
|
Console.Beep(noteG4, standardDurationMs);
|
|
Console.Beep(noteF4, standardDurationMs);
|
|
Console.Beep(noteE4, standardDurationMs);
|
|
Console.Beep(noteD4, standardDurationMs);
|
|
Console.Beep(noteC4, standardDurationMs);
|
|
}
|
|
}
|
|
}
|
|
}
|