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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
|
/*
* MPDlgs.h
* --------
* Purpose: Implementation of various player setup dialogs.
* Notes : (currently none)
* Authors: OpenMPT Devs
* The OpenMPT source code is released under the BSD license. Read LICENSE for more details.
*/
#pragma once
#include "openmpt/all/BuildSettings.hpp"
OPENMPT_NAMESPACE_BEGIN
class CSoundFile;
class CMainFrame;
#define NUM_CHANNELCOMBOBOXES 4
class COptionsSoundcard: public CPropertyPage
{
protected:
CComboBoxEx m_CbnDevice;
CComboBox m_CbnLatencyMS, m_CbnUpdateIntervalMS, m_CbnMixingFreq, m_CbnChannels, m_CbnSampleFormat, m_CbnDither, m_CbnRecordingChannels, m_CbnRecordingSource;
CEdit m_EditStatistics;
CButton m_BtnDriverPanel;
CComboBox m_CbnStoppedMode;
CComboBox m_CbnChannelMapping[NUM_CHANNELCOMBOBOXES];
SoundDevice::Identifier m_InitialDeviceIdentifier;
void SetInitialDevice();
void SetDevice(SoundDevice::Identifier dev, bool forceReload=false);
SoundDevice::Info m_CurrentDeviceInfo;
SoundDevice::Caps m_CurrentDeviceCaps;
SoundDevice::DynamicCaps m_CurrentDeviceDynamicCaps;
SoundDevice::Settings m_Settings;
public:
COptionsSoundcard(SoundDevice::Identifier deviceIdentifier);
void UpdateStatistics();
private:
void UpdateEverything();
void UpdateDevice();
void UpdateGeneral();
void UpdateLatency();
void UpdateUpdateInterval();
void UpdateSampleRates();
void UpdateChannels();
void UpdateSampleFormat();
void UpdateDither();
void UpdateChannelMapping();
void UpdateRecording();
void UpdateControls();
protected:
BOOL OnInitDialog() override;
void OnOK() override;
BOOL OnSetActive() override;
void DoDataExchange(CDataExchange* pDX) override;
void UpdateStereoSep();
afx_msg void OnDeviceChanged();
afx_msg void OnSettingsChanged() { SetModified(TRUE); }
afx_msg void OnExclusiveModeChanged();
afx_msg void OnChannelsChanged();
afx_msg void OnSampleFormatChanged();
afx_msg void OnRecordingChanged();
afx_msg void OnSoundCardShowAll();
afx_msg void OnSoundCardRescan();
afx_msg void OnSoundCardDriverPanel();
void OnChannelChanged(int channel);
afx_msg void OnChannel1Changed() { OnChannelChanged(0); };
afx_msg void OnChannel2Changed() { OnChannelChanged(1); };
afx_msg void OnChannel3Changed() { OnChannelChanged(2); };
afx_msg void OnChannel4Changed() { OnChannelChanged(3); };
DECLARE_MESSAGE_MAP()
};
class COptionsMixer: public CPropertyPage
{
protected:
CComboBox m_CbnResampling, m_CbnAmigaType;
CEdit m_CEditRampUp;
CEdit m_CEditRampDown;
CEdit m_CInfoRampUp;
CEdit m_CInfoRampDown;
CSliderCtrl m_SliderStereoSep;
// check box soft pan
CSliderCtrl m_SliderPreAmp;
bool m_initialized : 1;
public:
COptionsMixer()
: CPropertyPage(IDD_OPTIONS_MIXER)
, m_initialized(false)
{}
protected:
void UpdateRamping();
void UpdateStereoSep();
BOOL OnInitDialog() override;
void OnOK() override;
BOOL OnSetActive() override;
void DoDataExchange(CDataExchange* pDX) override;
afx_msg void OnSettingsChanged() { SetModified(TRUE); }
afx_msg void OnAmigaChanged();
afx_msg void OnRampingChanged();
afx_msg void OnDefaultRampSettings();
afx_msg void OnHScroll(UINT n, UINT pos, CScrollBar *p);
DECLARE_MESSAGE_MAP()
};
#ifndef NO_EQ
class CEQSlider: public CSliderCtrl
{
public:
CWnd *m_pParent;
UINT m_nSliderNo;
short int m_x, m_y;
public:
CEQSlider() {}
void Init(UINT nID, UINT n, CWnd *parent);
BOOL PreTranslateMessage(MSG *pMsg);
};
#endif // !NO_EQ
class COptionsPlayer: public CPropertyPage
{
protected:
CComboBox m_CbnReverbPreset;
CSliderCtrl m_SbXBassDepth, m_SbXBassRange;
CSliderCtrl m_SbSurroundDepth, m_SbSurroundDelay;
CSliderCtrl m_SbReverbDepth;
CSliderCtrl m_SbBitCrushBits;
#ifndef NO_EQ
CEQSlider m_Sliders[MAX_EQ_BANDS];
EQPreset &m_EQPreset;
UINT m_nSliderMenu;
#endif // !NO_EQ
public:
COptionsPlayer() : CPropertyPage(IDD_OPTIONS_PLAYER)
#ifndef NO_EQ
, m_EQPreset(TrackerSettings::Instance().m_EqSettings)
#endif
{ }
protected:
BOOL OnInitDialog() override;
void OnOK() override;
BOOL OnSetActive() override;
void DoDataExchange(CDataExchange* pDX) override;
afx_msg void OnHScroll(UINT, UINT, CScrollBar *);
afx_msg void OnSettingsChanged() { SetModified(TRUE); }
#ifndef NO_EQ
afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnEqUser1() { LoadEQPreset(TrackerSettings::Instance().m_EqUserPresets[0]); };
afx_msg void OnEqUser2() { LoadEQPreset(TrackerSettings::Instance().m_EqUserPresets[1]); };
afx_msg void OnEqUser3() { LoadEQPreset(TrackerSettings::Instance().m_EqUserPresets[2]); };
afx_msg void OnEqUser4() { LoadEQPreset(TrackerSettings::Instance().m_EqUserPresets[3]); };
afx_msg void OnSavePreset();
afx_msg void OnSliderMenu(UINT);
afx_msg void OnSliderFreq(UINT);
void UpdateDialog();
void UpdateEQ(bool bReset);
void LoadEQPreset(const EQPreset &preset);
#endif // !NO_EQ
DECLARE_MESSAGE_MAP()
};
class CMidiSetupDlg: public CPropertyPage
{
public:
DWORD m_dwMidiSetup;
UINT m_nMidiDevice;
protected:
CSpinButtonCtrl m_SpinSpd, m_SpinPat, m_SpinAmp;
CComboBox m_InputDevice, m_ATBehaviour, m_Quantize;
public:
CMidiSetupDlg(DWORD d, UINT n)
: CPropertyPage(IDD_OPTIONS_MIDI)
, m_dwMidiSetup(d)
, m_nMidiDevice(n)
{ }
protected:
BOOL OnInitDialog() override;
void OnOK() override;
BOOL OnSetActive() override;
void DoDataExchange(CDataExchange* pDX) override;
void RefreshDeviceList(UINT currentDevice);
afx_msg void OnRenameDevice();
afx_msg void OnSettingsChanged() { SetModified(TRUE); }
DECLARE_MESSAGE_MAP()
};
class COptionsWine: public CPropertyPage
{
protected:
CComboBox m_CbnPulseAudio;
CComboBox m_CbnPortAudio;
CComboBox m_CbnRtAudio;
public:
COptionsWine();
protected:
BOOL OnInitDialog() override;
void OnOK() override;
BOOL OnSetActive() override;
void DoDataExchange(CDataExchange* pDX) override;
afx_msg void OnSettingsChanged();
DECLARE_MESSAGE_MAP()
};
OPENMPT_NAMESPACE_END
|