10 #ifndef LIBOPENMPT_HPP
11 #define LIBOPENMPT_HPP
20 #include <string_view>
136 #if defined(_MSC_VER)
137 #pragma warning(push)
138 #pragma warning(disable:4275)
145 class LIBOPENMPT_CXX_API_CLASS
exception :
public std::exception {
149 LIBOPENMPT_CXX_API_MEMBER
exception(
const std::string & text ) noexcept;
154 LIBOPENMPT_CXX_API_MEMBER virtual ~
exception() noexcept;
155 LIBOPENMPT_CXX_API_MEMBER const
char * what() const noexcept override;
157 #if defined(_MSC_VER)
181 static const char library_features LIBOPENMPT_ATTR_DEPRECATED [] =
"library_features";
183 static const char core_version LIBOPENMPT_ATTR_DEPRECATED [] =
"core_version";
185 static const char build LIBOPENMPT_ATTR_DEPRECATED [] =
"build";
187 static const char credits LIBOPENMPT_ATTR_DEPRECATED [] =
"credits";
189 static const char contact LIBOPENMPT_ATTR_DEPRECATED [] =
"contact";
191 static const char license LIBOPENMPT_ATTR_DEPRECATED [] =
"license";
222 LIBOPENMPT_CXX_API std::string
get(
const std::string & key );
260 LIBOPENMPT_CXX_API
double could_open_probability( std::istream & stream,
double effort = 1.0, std::ostream & log = std::clog );
279 static const std::uint64_t probe_file_header_flags_containers LIBOPENMPT_ATTR_DEPRECATED = 0x2ull;
282 static const std::uint64_t probe_file_header_flags_default LIBOPENMPT_ATTR_DEPRECATED = 0x1ull | 0x2ull;
285 static const std::uint64_t probe_file_header_flags_none LIBOPENMPT_ATTR_DEPRECATED = 0x0ull;
324 LIBOPENMPT_CXX_API
int probe_file_header( std::uint64_t flags,
const std::byte * data, std::size_t size, std::uint64_t filesize );
340 LIBOPENMPT_CXX_API
int probe_file_header( std::uint64_t flags,
const std::uint8_t * data, std::size_t size, std::uint64_t filesize );
357 LIBOPENMPT_CXX_API
int probe_file_header( std::uint64_t flags,
const std::byte * data, std::size_t size );
373 LIBOPENMPT_CXX_API
int probe_file_header( std::uint64_t flags,
const std::uint8_t * data, std::size_t size );
388 LIBOPENMPT_CXX_API
int probe_file_header( std::uint64_t flags, std::istream & stream );
396 typedef std::map< std::string, std::string > initial_ctls_map;
414 RENDER_MASTERGAIN_MILLIBEL = 1,
421 RENDER_STEREOSEPARATION_PERCENT = 2,
434 RENDER_INTERPOLATIONFILTER_LENGTH = 3,
443 RENDER_VOLUMERAMPING_STRENGTH = 4
449 command_instrument = 1,
450 command_volumeffect = 2,
453 command_parameter = 5
461 void operator = (
const module & );
465 void set_impl( module_impl * i );
476 LIBOPENMPT_CXX_API_MEMBER
module( std::istream & stream, std::ostream & log = std::clog,
const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
486 LIBOPENMPT_CXX_API_MEMBER
module(
const std::vector<std::byte> & data, std::ostream & log = std::clog,
const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
497 LIBOPENMPT_CXX_API_MEMBER
module(
const std::byte * beg,
const std::byte * end, std::ostream & log = std::clog,
const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
508 LIBOPENMPT_CXX_API_MEMBER
module(
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() );
517 LIBOPENMPT_CXX_API_MEMBER
module(
const std::vector<std::uint8_t> & data, std::ostream & log = std::clog,
const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
527 LIBOPENMPT_CXX_API_MEMBER
module(
const std::uint8_t * beg,
const std::uint8_t * end, std::ostream & log = std::clog,
const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
537 LIBOPENMPT_CXX_API_MEMBER
module(
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() );
546 LIBOPENMPT_CXX_API_MEMBER
module(
const std::vector<char> & data, std::ostream & log = std::clog,
const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
556 LIBOPENMPT_CXX_API_MEMBER
module(
const char * beg,
const char * end, std::ostream & log = std::clog,
const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
566 LIBOPENMPT_CXX_API_MEMBER
module(
const char * data, std::size_t size, std::ostream & log = std::clog,
const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
576 LIBOPENMPT_CXX_API_MEMBER
module(
const void * data, std::size_t size, std::ostream & log = std::clog,
const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
577 LIBOPENMPT_CXX_API_MEMBER
virtual ~
module();
587 LIBOPENMPT_CXX_API_MEMBER
void select_subsong( std::int32_t subsong );
594 LIBOPENMPT_CXX_API_MEMBER std::int32_t get_selected_subsong()
const;
604 LIBOPENMPT_CXX_API_MEMBER std::int32_t get_restart_order( std::int32_t subsong )
const;
613 LIBOPENMPT_CXX_API_MEMBER std::int32_t get_restart_row( std::int32_t subsong )
const;
623 LIBOPENMPT_CXX_API_MEMBER
void set_repeat_count( std::int32_t repeat_count );
632 LIBOPENMPT_CXX_API_MEMBER std::int32_t get_repeat_count()
const;
639 LIBOPENMPT_CXX_API_MEMBER
double get_duration_seconds()
const;
649 LIBOPENMPT_CXX_API_MEMBER
double get_time_at_position( std::int32_t order, std::int32_t row )
const;
657 LIBOPENMPT_CXX_API_MEMBER
double set_position_seconds(
double seconds );
663 LIBOPENMPT_CXX_API_MEMBER
double get_position_seconds()
const;
674 LIBOPENMPT_CXX_API_MEMBER
double set_position_order_row( std::int32_t order, std::int32_t row );
684 LIBOPENMPT_CXX_API_MEMBER std::int32_t get_render_param(
int param )
const;
693 LIBOPENMPT_CXX_API_MEMBER
void set_render_param(
int param, std::int32_t value );
708 LIBOPENMPT_CXX_API_MEMBER std::size_t read( std::int32_t samplerate, std::size_t count, std::int16_t * mono );
722 LIBOPENMPT_CXX_API_MEMBER std::size_t read( std::int32_t samplerate, std::size_t count, std::int16_t * left, std::int16_t * right );
738 LIBOPENMPT_CXX_API_MEMBER std::size_t read( std::int32_t samplerate, std::size_t count, std::int16_t * left, std::int16_t * right, std::int16_t * rear_left, std::int16_t * rear_right );
751 LIBOPENMPT_CXX_API_MEMBER std::size_t read( std::int32_t samplerate, std::size_t count,
float * mono );
765 LIBOPENMPT_CXX_API_MEMBER std::size_t read( std::int32_t samplerate, std::size_t count,
float * left,
float * right );
781 LIBOPENMPT_CXX_API_MEMBER std::size_t read( std::int32_t samplerate, std::size_t count,
float * left,
float * right,
float * rear_left,
float * rear_right );
794 LIBOPENMPT_CXX_API_MEMBER std::size_t read_interleaved_stereo( std::int32_t samplerate, std::size_t count, std::int16_t * interleaved_stereo );
807 LIBOPENMPT_CXX_API_MEMBER std::size_t read_interleaved_quad( std::int32_t samplerate, std::size_t count, std::int16_t * interleaved_quad );
820 LIBOPENMPT_CXX_API_MEMBER std::size_t read_interleaved_stereo( std::int32_t samplerate, std::size_t count,
float * interleaved_stereo );
833 LIBOPENMPT_CXX_API_MEMBER std::size_t read_interleaved_quad( std::int32_t samplerate, std::size_t count,
float * interleaved_quad );
841 LIBOPENMPT_CXX_API_MEMBER std::vector<std::string> get_metadata_keys()
const;
862 LIBOPENMPT_CXX_API_MEMBER std::string get_metadata(
const std::string & key )
const;
870 LIBOPENMPT_CXX_API_MEMBER
double get_current_estimated_bpm()
const;
875 LIBOPENMPT_CXX_API_MEMBER std::int32_t get_current_speed()
const;
881 LIBOPENMPT_ATTR_DEPRECATED LIBOPENMPT_CXX_API_MEMBER std::int32_t get_current_tempo()
const;
887 LIBOPENMPT_CXX_API_MEMBER
double get_current_tempo2()
const;
892 LIBOPENMPT_CXX_API_MEMBER std::int32_t get_current_order()
const;
897 LIBOPENMPT_CXX_API_MEMBER std::int32_t get_current_pattern()
const;
902 LIBOPENMPT_CXX_API_MEMBER std::int32_t get_current_row()
const;
907 LIBOPENMPT_CXX_API_MEMBER std::int32_t get_current_playing_channels()
const;
915 LIBOPENMPT_CXX_API_MEMBER
float get_current_channel_vu_mono( std::int32_t channel )
const;
922 LIBOPENMPT_CXX_API_MEMBER
float get_current_channel_vu_left( std::int32_t channel )
const;
929 LIBOPENMPT_CXX_API_MEMBER
float get_current_channel_vu_right( std::int32_t channel )
const;
936 LIBOPENMPT_CXX_API_MEMBER
float get_current_channel_vu_rear_left( std::int32_t channel )
const;
943 LIBOPENMPT_CXX_API_MEMBER
float get_current_channel_vu_rear_right( std::int32_t channel )
const;
950 LIBOPENMPT_CXX_API_MEMBER std::int32_t get_num_subsongs()
const;
956 LIBOPENMPT_CXX_API_MEMBER std::int32_t get_num_channels()
const;
961 LIBOPENMPT_CXX_API_MEMBER std::int32_t get_num_orders()
const;
966 LIBOPENMPT_CXX_API_MEMBER std::int32_t get_num_patterns()
const;
971 LIBOPENMPT_CXX_API_MEMBER std::int32_t get_num_instruments()
const;
976 LIBOPENMPT_CXX_API_MEMBER std::int32_t get_num_samples()
const;
983 LIBOPENMPT_CXX_API_MEMBER std::vector<std::string> get_subsong_names()
const;
989 LIBOPENMPT_CXX_API_MEMBER std::vector<std::string> get_channel_names()
const;
995 LIBOPENMPT_CXX_API_MEMBER std::vector<std::string> get_order_names()
const;
1001 LIBOPENMPT_CXX_API_MEMBER std::vector<std::string> get_pattern_names()
const;
1007 LIBOPENMPT_CXX_API_MEMBER std::vector<std::string> get_instrument_names()
const;
1013 LIBOPENMPT_CXX_API_MEMBER std::vector<std::string> get_sample_names()
const;
1020 LIBOPENMPT_CXX_API_MEMBER std::int32_t get_order_pattern( std::int32_t order )
const;
1029 LIBOPENMPT_CXX_API_MEMBER
bool is_order_skip_entry( std::int32_t order )
const ;
1037 LIBOPENMPT_CXX_API_MEMBER
bool is_pattern_skip_item( std::int32_t pattern )
const;
1045 LIBOPENMPT_CXX_API_MEMBER
bool is_order_stop_entry( std::int32_t order )
const;
1053 LIBOPENMPT_CXX_API_MEMBER
bool is_pattern_stop_item( std::int32_t pattern )
const;
1060 LIBOPENMPT_CXX_API_MEMBER std::int32_t get_pattern_num_rows( std::int32_t pattern )
const;
1069 LIBOPENMPT_CXX_API_MEMBER std::int32_t get_pattern_rows_per_beat( std::int32_t pattern )
const;
1078 LIBOPENMPT_CXX_API_MEMBER std::int32_t get_pattern_rows_per_measure( std::int32_t pattern )
const;
1088 LIBOPENMPT_CXX_API_MEMBER std::uint8_t get_pattern_row_channel_command( std::int32_t pattern, std::int32_t row, std::int32_t channel,
int command )
const;
1099 LIBOPENMPT_CXX_API_MEMBER std::string format_pattern_row_channel_command( std::int32_t pattern, std::int32_t row, std::int32_t channel,
int command )
const;
1121 LIBOPENMPT_CXX_API_MEMBER std::string highlight_pattern_row_channel_command( std::int32_t pattern, std::int32_t row, std::int32_t channel,
int command )
const;
1133 LIBOPENMPT_CXX_API_MEMBER std::string format_pattern_row_channel( std::int32_t pattern, std::int32_t row, std::int32_t channel, std::size_t width = 0,
bool pad =
true )
const;
1144 LIBOPENMPT_CXX_API_MEMBER std::string highlight_pattern_row_channel( std::int32_t pattern, std::int32_t row, std::int32_t channel, std::size_t width = 0,
bool pad =
true )
const;
1177 LIBOPENMPT_CXX_API_MEMBER std::vector<std::string> get_ctls()
const;
1186 LIBOPENMPT_ATTR_DEPRECATED LIBOPENMPT_CXX_API_MEMBER std::string ctl_get(
const std::string & ctl )
const;
1194 LIBOPENMPT_CXX_API_MEMBER
bool ctl_get_boolean( std::string_view ctl )
const;
1202 LIBOPENMPT_CXX_API_MEMBER std::int64_t ctl_get_integer( std::string_view ctl )
const;
1210 LIBOPENMPT_CXX_API_MEMBER
double ctl_get_floatingpoint( std::string_view ctl )
const;
1218 LIBOPENMPT_CXX_API_MEMBER std::string ctl_get_text( std::string_view ctl )
const;
1228 LIBOPENMPT_ATTR_DEPRECATED LIBOPENMPT_CXX_API_MEMBER
void ctl_set(
const std::string & ctl,
const std::string & value );
1237 LIBOPENMPT_CXX_API_MEMBER
void ctl_set_boolean( std::string_view ctl,
bool value );
1246 LIBOPENMPT_CXX_API_MEMBER
void ctl_set_integer( std::string_view ctl, std::int64_t value );
1255 LIBOPENMPT_CXX_API_MEMBER
void ctl_set_floatingpoint( std::string_view ctl,
double value );
1264 LIBOPENMPT_CXX_API_MEMBER
void ctl_set_text( std::string_view ctl, std::string_view value );
1276 #endif // LIBOPENMPT_HPP
The file is not supported by libopenmpt.
Definition: libopenmpt.hpp:304
LIBOPENMPT_ATTR_DEPRECATED LIBOPENMPT_CXX_API double could_open_propability(std::istream &stream, double effort=1.0, std::ostream &log=std::clog)
Roughly scan the input stream to find out whether libopenmpt might be able to open it...
command_index
Parameter index to use with openmpt::module::get_pattern_row_channel_command, openmpt::module::format...
Definition: libopenmpt.hpp:447
Probe for the default set of formats in openmpt::probe_file_header().
Definition: libopenmpt.hpp:294
probe_file_header_result
Possible return values for openmpt::probe_file_header().
Definition: libopenmpt.hpp:300
LIBOPENMPT_CXX_API int probe_file_header(std::uint64_t flags, const std::byte *data, std::size_t size, std::uint64_t filesize)
Probe the provided bytes from the beginning of a file for supported file format headers to find out w...
The file will most likely be supported by libopenmpt.
Definition: libopenmpt.hpp:302
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
LIBOPENMPT_CXX_API std::vector< std::string > get_supported_extensions()
Get a list of supported file extensions.
libopenmpt exception base class
Definition: libopenmpt.hpp:145
Probe for module-specific container formats in openmpt::probe_file_header().
Definition: libopenmpt.hpp:292
LIBOPENMPT_CXX_API bool is_extension_supported2(std::string_view extension)
Query whether a file extension is supported.
Definition: libopenmpt.hpp:130
Probe for no formats in openmpt::probe_file_header().
Definition: libopenmpt.hpp:296
LIBOPENMPT_CXX_API double could_open_probability(std::istream &stream, double effort=1.0, std::ostream &log=std::clog)
Roughly scan the input stream to find out whether libopenmpt might be able to open it...
LIBOPENMPT_CXX_API std::uint32_t get_core_version()
Get the core version number.
An answer could not be determined with the amount of data provided.
Definition: libopenmpt.hpp:306
render_param
Parameter index to use with openmpt::module::get_render_param and openmpt::module::set_render_param.
Definition: libopenmpt.hpp:407
probe_file_header_flags
Possible values for openmpt::probe_file_header() flags parameter.
Definition: libopenmpt.hpp:288
LIBOPENMPT_ATTR_DEPRECATED LIBOPENMPT_CXX_API bool is_extension_supported(const std::string &extension)
Query whether a file extension is supported.
LIBOPENMPT_CXX_API std::size_t probe_file_header_get_recommended_size()
Get recommended header size for successfull format probing.
LIBOPENMPT_CXX_API std::uint32_t get_library_version()
Get the libopenmpt version number.
Definition: libopenmpt_ext.hpp:37
Definition: libopenmpt.hpp:400
Probe for module formats in openmpt::probe_file_header().
Definition: libopenmpt.hpp:290