-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMainForm.cs
97 lines (86 loc) · 3.17 KB
/
MainForm.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
using NAudio.Wave;
using NAudio.Wave.SampleProviders;
namespace DTMFEmulator
{
public partial class MainForm : Form
{
private WaveOutEvent outputDevice = null!;
private SignalGenerator tone1Generator = null!;
private SignalGenerator tone2Generator = null!;
private bool isMouseDown = false;
public MainForm()
{
InitializeComponent();
InitializeAudio();
}
private void InitializeAudio()
{
outputDevice = new();
var waveFormat = WaveFormat.CreateIeeeFloatWaveFormat(44100, 1);
tone1Generator = new(44100, 1) { Frequency = 697, Type = SignalGeneratorType.Sin };
tone2Generator = new(44100, 1) { Frequency = 1209, Type = SignalGeneratorType.Sin };
MixingSampleProvider mixer = new(waveFormat);
mixer.AddMixerInput(tone1Generator);
mixer.AddMixerInput(tone2Generator);
outputDevice.Init(mixer);
}
private void PlayTone(double tone1Freq, double tone2Freq)
{
tone1Generator.Frequency = tone1Freq;
tone2Generator.Frequency = tone2Freq;
outputDevice.Play();
}
private void Button_MouseDown(object sender, MouseEventArgs e)
{
isMouseDown = true;
if (sender is Button btn)
{
PlayButtonTone(btn);
}
}
private void Button_MouseUp(object sender, MouseEventArgs e)
{
isMouseDown = false;
outputDevice.Stop();
}
private void Button_MouseMove(object sender, MouseEventArgs e)
{
if (isMouseDown && sender is Button btn)
{
PlayButtonTone(btn);
}
}
private void PlayButtonTone(Button btn)
{
switch (btn.Name)
{
case nameof(Button1):
PlayTone(697, 1209); break;
case nameof(Button2):
PlayTone(697, 1336); break;
case nameof(Button3):
PlayTone(697, 1477); break;
case nameof(Button4):
PlayTone(770, 1209); break;
case nameof(Button5):
PlayTone(770, 1336); break;
case nameof(Button6):
PlayTone(770, 1477); break;
case nameof(Button7):
PlayTone(852, 1209); break;
case nameof(Button8):
PlayTone(852, 1336); break;
case nameof(Button9):
PlayTone(852, 1477); break;
case nameof(Button0):
PlayTone(941, 1336); break;
case nameof(ButtonStar):
PlayTone(941, 1209); break;
case nameof(ButtonHash):
PlayTone(941, 1477); break;
case nameof(CustomToneButton):
PlayTone((double)ToneNumericUpDown1.Value, (double)ToneNumericUpDown2.Value); break;
}
}
}
}