123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- /*
- * mod2midi.h
- * ----------
- * Purpose: Module to MIDI 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"
- #ifndef NO_PLUGINS
- #include "ProgressDialog.h"
- OPENMPT_NAMESPACE_BEGIN
- namespace MidiExport
- {
- struct Mod2MidiInstr
- {
- uint8 channel = MidiMappedChannel; // See enum MidiChannel
- uint8 program = 0;
- };
- using InstrMap = std::vector<Mod2MidiInstr>;
- }
- class CModToMidi: public CDialog
- {
- protected:
- CComboBox m_CbnInstrument, m_CbnChannel, m_CbnProgram;
- CSpinButtonCtrl m_SpinInstrument;
- CSoundFile &m_sndFile;
- UINT m_currentInstr;
- bool m_percussion;
- public:
- MidiExport::InstrMap m_instrMap;
- static bool s_overlappingInstruments;
- public:
- CModToMidi(CSoundFile &sndFile, CWnd *pWndParent = nullptr);
- protected:
- void OnOK() override;
- BOOL OnInitDialog() override;
- void DoDataExchange(CDataExchange *pDX) override;
- void FillProgramBox(bool percussion);
- afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
- afx_msg void UpdateDialog();
- afx_msg void OnChannelChanged();
- afx_msg void OnProgramChanged();
- afx_msg void OnOverlapChanged();
- DECLARE_MESSAGE_MAP();
- };
- class CDoMidiConvert: public CProgressDialog
- {
- public:
- CSoundFile &m_sndFile;
- mpt::ofstream &m_file;
- const MidiExport::InstrMap &m_instrMap;
- public:
- CDoMidiConvert(CSoundFile &sndFile, mpt::ofstream &f, const MidiExport::InstrMap &instrMap, CWnd *parent = nullptr)
- : CProgressDialog(parent)
- , m_sndFile(sndFile)
- , m_file(f)
- , m_instrMap(instrMap)
- { }
- void Run() override;
- };
- OPENMPT_NAMESPACE_END
- #endif // NO_PLUGINS
|