diff options
Diffstat (limited to 'Src/external_dependencies/openmpt-trunk/mptrack/mod2wave.h')
-rw-r--r-- | Src/external_dependencies/openmpt-trunk/mptrack/mod2wave.h | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/Src/external_dependencies/openmpt-trunk/mptrack/mod2wave.h b/Src/external_dependencies/openmpt-trunk/mptrack/mod2wave.h new file mode 100644 index 00000000..e53ffce2 --- /dev/null +++ b/Src/external_dependencies/openmpt-trunk/mptrack/mod2wave.h @@ -0,0 +1,138 @@ +/* + * mod2wave.h + * ---------- + * Purpose: Module to WAV conversion (dialog + conversion code). + * 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" + +#include "StreamEncoder.h" +#include "StreamEncoderSettings.h" +#include "Settings.h" +#include "ProgressDialog.h" + + +OPENMPT_NAMESPACE_BEGIN + + +/////////////////////////////////////////////////////////////////////////////////////////////////// +// Direct To Disk Recording + + + +struct CWaveConvertSettings +{ + std::vector<EncoderFactoryBase*> EncoderFactories; + std::vector<std::unique_ptr<EncoderSettingsConf>> EncoderSettings; + + Setting<mpt::ustring> EncoderName; + std::size_t EncoderIndex; + + StoredTags storedTags; + FileTags Tags; + + int repeatCount; + ORDERINDEX minOrder, maxOrder; + SAMPLEINDEX sampleSlot; + SEQUENCEINDEX minSequence, maxSequence; + + bool normalize : 1; + bool silencePlugBuffers : 1; + bool outputToSample : 1; + + std::size_t FindEncoder(const mpt::ustring &name) const; + void SelectEncoder(std::size_t index); + EncoderFactoryBase *GetEncoderFactory() const; + const Encoder::Traits *GetTraits() const; + EncoderSettingsConf &GetEncoderSettings() const; + Encoder::Settings GetEncoderSettingsWithDetails() const; + CWaveConvertSettings(SettingsContainer &conf, const std::vector<EncoderFactoryBase*> &encFactories); +}; + + +class CWaveConvert: public CDialog +{ +public: + CWaveConvertSettings m_Settings; + const Encoder::Traits *encTraits; + CSoundFile &m_SndFile; + uint64 m_dwSongLimit; + ORDERINDEX m_nNumOrders; + + CComboBox m_CbnFileType, m_CbnSampleRate, m_CbnChannels, m_CbnDither, m_CbnSampleFormat, m_CbnSampleSlot; + CSpinButtonCtrl m_SpinLoopCount, m_SpinMinOrder, m_SpinMaxOrder, m_SpinMinSequence, m_SpinMaxSequence; + + bool m_bGivePlugsIdleTime; + bool m_bChannelMode; // Render by channel + bool m_bInstrumentMode; // Render by instrument + + CEdit m_EditTitle, m_EditAuthor, m_EditURL, m_EditAlbum, m_EditYear; + CComboBox m_CbnGenre; + CEdit m_EditGenre; + +private: + void FillFileTypes(); + void FillSamplerates(); + void FillChannels(); + void FillFormats(); + void FillDither(); + void FillTags(); + + void LoadTags(); + + void SaveEncoderSettings(); + void SaveTags(); + +public: + CWaveConvert(CWnd *parent, ORDERINDEX minOrder, ORDERINDEX maxOrder, ORDERINDEX numOrders, CSoundFile &sndFile, const std::vector<EncoderFactoryBase*> &encFactories); + +public: + void UpdateDialog(); + BOOL OnInitDialog() override; + void DoDataExchange(CDataExchange *pDX) override; + void OnOK() override; + afx_msg void OnCheckTimeLimit(); + afx_msg void OnCheckChannelMode(); + afx_msg void OnCheckInstrMode(); + afx_msg void OnFileTypeChanged(); + afx_msg void OnSamplerateChanged(); + afx_msg void OnChannelsChanged(); + afx_msg void OnDitherChanged(); + afx_msg void OnFormatChanged(); + afx_msg void OnPlayerOptions(); + afx_msg void OnExportModeChanged(); + afx_msg void OnSampleSlotChanged(); + DECLARE_MESSAGE_MAP() +}; + + +class CDoWaveConvert: public CProgressDialog +{ +public: + const CWaveConvertSettings &m_Settings; + CSoundFile &m_SndFile; + mpt::ofstream &fileStream; + const CString &caption; + uint64 m_dwSongLimit; + bool m_bGivePlugsIdleTime; + +public: + CDoWaveConvert(CSoundFile &sndFile, mpt::ofstream &f, const CString &caption, const CWaveConvertSettings &settings, CWnd *parent = NULL) + : CProgressDialog(parent) + , m_Settings(settings) + , m_SndFile(sndFile) + , fileStream(f) + , caption(caption) + , m_dwSongLimit(0) + { } + void Run() override; +}; + + +OPENMPT_NAMESPACE_END |