#pragma once #include #include #include #include #include namespace rack { namespace app { /** Designed for Audio-8 and Audio-16 module. */ struct AudioWidget : LedDisplay { LedDisplayChoice* driverChoice; LedDisplaySeparator* driverSeparator; LedDisplayChoice* deviceChoice; LedDisplaySeparator* deviceSeparator; LedDisplayChoice* sampleRateChoice; LedDisplaySeparator* sampleRateSeparator; LedDisplayChoice* bufferSizeChoice; void setAudioPort(audio::Port* port); }; /** Designed for Audio-2 module. */ struct AudioDeviceWidget : LedDisplay { LedDisplayChoice* deviceChoice; void setAudioPort(audio::Port* port); }; /** A virtual audio port graphic that displays an audio menu when clicked. */ struct AudioButton : SvgButton { audio::Port* port; void setAudioPort(audio::Port* port); void onAction(const ActionEvent& e) override; }; /** Appends menu items to the given menu with driver, device, etc. Useful alternative to putting an AudioWidget on your module's panel. */ void appendAudioMenu(ui::Menu* menu, audio::Port* port); } // namespace app } // namespace rack