10#ifndef LIBOPENMPT_EXT_HPP
11#define LIBOPENMPT_EXT_HPP
37class LIBOPENMPT_CXX_API_CLASS module_ext :
public module {
40 module_ext_impl * ext_impl;
43 LIBOPENMPT_CXX_API_MEMBER module_ext(
const module_ext & );
44 LIBOPENMPT_CXX_API_MEMBER
void operator = (
const module_ext & );
46 LIBOPENMPT_CXX_API_MEMBER
module_ext( std::istream & stream, std::ostream & log = std::clog,
const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
47 LIBOPENMPT_CXX_API_MEMBER
module_ext(
const std::vector<std::byte> & data, std::ostream & log = std::clog,
const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
48 LIBOPENMPT_CXX_API_MEMBER
module_ext(
const std::vector<std::uint8_t> & data, std::ostream & log = std::clog,
const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
49 LIBOPENMPT_CXX_API_MEMBER
module_ext(
const std::vector<char> & data, std::ostream & log = std::clog,
const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
50 LIBOPENMPT_CXX_API_MEMBER
module_ext(
const std::byte * data, std::size_t size, std::ostream & log = std::clog,
const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
51 LIBOPENMPT_CXX_API_MEMBER
module_ext(
const std::uint8_t * data, std::size_t size, std::ostream & log = std::clog,
const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
52 LIBOPENMPT_CXX_API_MEMBER
module_ext(
const char * data, std::size_t size, std::ostream & log = std::clog,
const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
53 LIBOPENMPT_CXX_API_MEMBER
module_ext(
const void * data, std::size_t size, std::ostream & log = std::clog,
const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
76 LIBOPENMPT_CXX_API_MEMBER
void *
get_interface(
const std::string & interface_id );
90#define LIBOPENMPT_DECLARE_EXT_CXX_INTERFACE(name) \
91 static const char name ## _id [] = # name ; \
95#define LIBOPENMPT_EXT_CXX_INTERFACE(name) \
98 virtual ~ name () {} \
103#ifndef LIBOPENMPT_EXT_INTERFACE_PATTERN_VIS
104#define LIBOPENMPT_EXT_INTERFACE_PATTERN_VIS
148#ifndef LIBOPENMPT_EXT_INTERFACE_INTERACTIVE
149#define LIBOPENMPT_EXT_INTERFACE_INTERACTIVE
294 virtual std::int32_t
play_note( std::int32_t instrument, std::int32_t note,
double volume,
double panning ) = 0;
309#ifndef LIBOPENMPT_EXT_INTERFACE_INTERACTIVE2
310#define LIBOPENMPT_EXT_INTERFACE_INTERACTIVE2
390#ifndef LIBOPENMPT_EXT_INTERFACE_INTERACTIVE3
391#define LIBOPENMPT_EXT_INTERFACE_INTERACTIVE3
418#undef LIBOPENMPT_DECLARE_EXT_CXX_INTERFACE
419#undef LIBOPENMPT_EXT_CXX_INTERFACE
Definition libopenmpt_ext.hpp:315
virtual void set_note_finetune(int32_t channel, double finetune)=0
Set the finetune for the currently playing note on a channel.
virtual double get_channel_panning(int32_t channel)=0
Get the current panning position for a channel.
virtual double get_note_finetune(int32_t channel)=0
Get the finetune for the currently playing note on a channel.
interactive2()
Definition libopenmpt_ext.hpp:317
virtual void note_off(int32_t channel)=0
Sends a key-off command for the note playing on the specified channel.
virtual void set_channel_panning(int32_t channel, double panning)=0
Set the current panning position for a channel.
virtual void note_fade(int32_t channel)=0
Sends a note fade command for the note playing on the specified channel.
Definition libopenmpt_ext.hpp:396
interactive3()
Definition libopenmpt_ext.hpp:398
virtual void set_current_tempo2(double tempo)=0
Set the current module tempo.
Definition libopenmpt_ext.hpp:154
virtual double get_tempo_factor() const =0
Gets the current module tempo factor.
virtual void set_global_volume(double volume)=0
Set the current global volume.
virtual double get_pitch_factor() const =0
Gets the current module pitch factor.
virtual bool get_instrument_mute_status(std::int32_t instrument) const =0
Get the current mute status for an instrument.
virtual void stop_note(std::int32_t channel)=0
Stop the note playing on the specified channel.
virtual void set_channel_mute_status(std::int32_t channel, bool mute)=0
Set the current mute status for a channel.
virtual LIBOPENMPT_ATTR_DEPRECATED void set_current_tempo(std::int32_t tempo)=0
Set the current module tempo.
virtual void set_pitch_factor(double factor)=0
Set the current module pitch factor without affecting playback speed.
virtual void set_channel_volume(std::int32_t channel, double volume)=0
Set the current channel volume for a channel.
virtual void set_current_speed(std::int32_t speed)=0
Set the current ticks per row (speed)
virtual double get_global_volume() const =0
Get the current global volume.
virtual void set_instrument_mute_status(std::int32_t instrument, bool mute)=0
Set the current mute status for an instrument.
interactive()
Definition libopenmpt_ext.hpp:156
virtual void set_tempo_factor(double factor)=0
Set the current module tempo factor without affecting playback pitch.
virtual std::int32_t play_note(std::int32_t instrument, std::int32_t note, double volume, double panning)=0
Play a note using the specified instrument.
virtual double get_channel_volume(std::int32_t channel) const =0
Get the current channel volume for a channel.
virtual bool get_channel_mute_status(std::int32_t channel) const =0
Get the current mute status for a channel.
Definition libopenmpt_ext.hpp:109
virtual effect_type get_pattern_row_channel_effect_type(std::int32_t pattern, std::int32_t row, std::int32_t channel) const =0
Get pattern command type for pattern highlighting.
effect_type
Pattern command type.
Definition libopenmpt_ext.hpp:114
@ effect_pitch
Definition libopenmpt_ext.hpp:121
@ effect_general
Definition libopenmpt_ext.hpp:117
@ effect_global
Definition libopenmpt_ext.hpp:118
@ effect_volume
Definition libopenmpt_ext.hpp:119
@ effect_panning
Definition libopenmpt_ext.hpp:120
@ effect_unknown
Definition libopenmpt_ext.hpp:116
pattern_vis()
Definition libopenmpt_ext.hpp:111
virtual effect_type get_pattern_row_channel_volume_effect_type(std::int32_t pattern, std::int32_t row, std::int32_t channel) const =0
Get pattern command type for pattern highlighting.
LIBOPENMPT_CXX_API_MEMBER module_ext(const char *data, std::size_t size, std::ostream &log=std::clog, const std::map< std::string, std::string > &ctls=detail::initial_ctls_map())
LIBOPENMPT_CXX_API_MEMBER module_ext(const std::byte *data, std::size_t size, std::ostream &log=std::clog, const std::map< std::string, std::string > &ctls=detail::initial_ctls_map())
LIBOPENMPT_CXX_API_MEMBER void * get_interface(const std::string &interface_id)
Retrieve a libopenmpt extension.
LIBOPENMPT_CXX_API_MEMBER module_ext(const void *data, std::size_t size, std::ostream &log=std::clog, const std::map< std::string, std::string > &ctls=detail::initial_ctls_map())
LIBOPENMPT_CXX_API_MEMBER module_ext(const std::vector< std::uint8_t > &data, std::ostream &log=std::clog, const std::map< std::string, std::string > &ctls=detail::initial_ctls_map())
LIBOPENMPT_CXX_API_MEMBER module_ext(const std::vector< std::byte > &data, std::ostream &log=std::clog, const std::map< std::string, std::string > &ctls=detail::initial_ctls_map())
virtual LIBOPENMPT_CXX_API_MEMBER ~module_ext()
LIBOPENMPT_CXX_API_MEMBER module_ext(std::istream &stream, std::ostream &log=std::clog, const std::map< std::string, std::string > &ctls=detail::initial_ctls_map())
LIBOPENMPT_CXX_API_MEMBER module_ext(const std::vector< char > &data, std::ostream &log=std::clog, const std::map< std::string, std::string > &ctls=detail::initial_ctls_map())
LIBOPENMPT_CXX_API_MEMBER module_ext(const std::uint8_t *data, std::size_t size, std::ostream &log=std::clog, const std::map< std::string, std::string > &ctls=detail::initial_ctls_map())
static const std::uint64_t probe_file_header_flags_modules LIBOPENMPT_ATTR_DEPRECATED
Probe for module formats in openmpt::probe_file_header().
Definition libopenmpt.hpp:276
#define LIBOPENMPT_DECLARE_EXT_CXX_INTERFACE(name)
Definition libopenmpt_ext.hpp:90
#define LIBOPENMPT_EXT_CXX_INTERFACE(name)
Definition libopenmpt_ext.hpp:95
Definition libopenmpt_ext.hpp:84
Definition libopenmpt.hpp:130