diff --git a/src/audio/midi/MidiAudio.cpp b/src/audio/midi/MidiAudio.cpp
index 66617a0b63f..c87a26cd426 100644
--- a/src/audio/midi/MidiAudio.cpp
+++ b/src/audio/midi/MidiAudio.cpp
@@ -21,16 +21,25 @@ namespace
MidiOut() noexcept
{
- midiOutOpen(&handle, MIDI_MAPPER, NULL, NULL, CALLBACK_NULL);
- OutputMessage(PROGRAM_CHANGE, SQUARE_WAVE_SYNTH);
+ if constexpr (Feature_DECPSViaMidiPlayer::IsEnabled())
+ {
+ midiOutOpen(&handle, MIDI_MAPPER, NULL, NULL, CALLBACK_NULL);
+ OutputMessage(PROGRAM_CHANGE, SQUARE_WAVE_SYNTH);
+ }
}
~MidiOut() noexcept
{
- midiOutClose(handle);
+ if constexpr (Feature_DECPSViaMidiPlayer::IsEnabled())
+ {
+ midiOutClose(handle);
+ }
}
void OutputMessage(const int b1, const int b2, const int b3 = 0, const int b4 = 0) noexcept
{
- midiOutShortMsg(handle, MAKELONG(MAKEWORD(b1, b2), MAKEWORD(b3, b4)));
+ if constexpr (Feature_DECPSViaMidiPlayer::IsEnabled())
+ {
+ midiOutShortMsg(handle, MAKELONG(MAKEWORD(b1, b2), MAKEWORD(b3, b4)));
+ }
}
MidiOut(const MidiOut&) = delete;
diff --git a/src/cascadia/TerminalControl/TerminalControlLib.vcxproj b/src/cascadia/TerminalControl/TerminalControlLib.vcxproj
index 92ab903986c..478e7a3983a 100644
--- a/src/cascadia/TerminalControl/TerminalControlLib.vcxproj
+++ b/src/cascadia/TerminalControl/TerminalControlLib.vcxproj
@@ -147,7 +147,8 @@
-
+
+
diff --git a/src/features.xml b/src/features.xml
index cbe55f3a5ad..a8db865ddc7 100644
--- a/src/features.xml
+++ b/src/features.xml
@@ -117,6 +117,18 @@
+
+ Feature_DECPSViaMidiPlayer
+ Enables playing sound via DECPS using the MIDI player.
+ AlwaysDisabled
+
+
+ Dev
+ Preview
+
+
+
Feature_ScrollbarMarks
Enables the experimental scrollbar marks feature.