10 #ifndef LIBOPENMPT_HPP
11 #define LIBOPENMPT_HPP
63 class LIBOPENMPT_CXX_API
exception :
public std::exception {
67 exception(
const std::string & text )
throw();
69 virtual const char * what()
const throw();
95 static const char build [] =
"build";
111 LIBOPENMPT_CXX_API std::string
get(
const std::string & key );
135 LIBOPENMPT_CXX_API
double could_open_propability( std::istream & stream,
double effort = 1.0, std::ostream & log = std::clog );
143 typedef std::map< std::string, std::string > initial_ctls_map;
149 friend class module_ext;
161 RENDER_MASTERGAIN_MILLIBEL = 1,
168 RENDER_STEREOSEPARATION_PERCENT = 2,
181 RENDER_INTERPOLATIONFILTER_LENGTH = 3,
190 RENDER_VOLUMERAMPING_STRENGTH = 4
195 command_instrument = 1,
196 command_volumeffect = 2,
199 command_parameter = 5
207 void operator = (
const module & );
211 void set_impl( module_impl * i );
221 module( std::istream & stream, std::ostream & log = std::clog,
const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
229 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() );
238 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() );
247 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() );
255 module(
const std::vector<char> & data, std::ostream & log = std::clog,
const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
264 module(
const char * beg,
const char * end, std::ostream & log = std::clog,
const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
273 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() );
282 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() );
291 void select_subsong( std::int32_t subsong );
300 void set_repeat_count( std::int32_t repeat_count );
309 std::int32_t get_repeat_count()
const;
315 double get_duration_seconds()
const;
323 double set_position_seconds(
double seconds );
329 double get_position_seconds()
const;
340 double set_position_order_row( std::int32_t order, std::int32_t row );
349 std::int32_t get_render_param(
int param )
const;
358 void set_render_param(
int param, std::int32_t value );
372 std::size_t read( std::int32_t samplerate, std::size_t count, std::int16_t * mono );
385 std::size_t read( std::int32_t samplerate, std::size_t count, std::int16_t * left, std::int16_t * right );
400 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 );
412 std::size_t read( std::int32_t samplerate, std::size_t count,
float * mono );
425 std::size_t read( std::int32_t samplerate, std::size_t count,
float * left,
float * right );
440 std::size_t read( std::int32_t samplerate, std::size_t count,
float * left,
float * right,
float * rear_left,
float * rear_right );
452 std::size_t read_interleaved_stereo( std::int32_t samplerate, std::size_t count, std::int16_t * interleaved_stereo );
464 std::size_t read_interleaved_quad( std::int32_t samplerate, std::size_t count, std::int16_t * interleaved_quad );
476 std::size_t read_interleaved_stereo( std::int32_t samplerate, std::size_t count,
float * interleaved_stereo );
488 std::size_t read_interleaved_quad( std::int32_t samplerate, std::size_t count,
float * interleaved_quad );
496 std::vector<std::string> get_metadata_keys()
const;
503 std::string get_metadata(
const std::string & key )
const;
505 std::int32_t get_current_speed()
const;
506 std::int32_t get_current_tempo()
const;
507 std::int32_t get_current_order()
const;
508 std::int32_t get_current_pattern()
const;
509 std::int32_t get_current_row()
const;
510 std::int32_t get_current_playing_channels()
const;
512 float get_current_channel_vu_mono( std::int32_t channel )
const;
513 float get_current_channel_vu_left( std::int32_t channel )
const;
514 float get_current_channel_vu_right( std::int32_t channel )
const;
515 float get_current_channel_vu_rear_left( std::int32_t channel )
const;
516 float get_current_channel_vu_rear_right( std::int32_t channel )
const;
518 std::int32_t get_num_subsongs()
const;
519 std::int32_t get_num_channels()
const;
520 std::int32_t get_num_orders()
const;
521 std::int32_t get_num_patterns()
const;
522 std::int32_t get_num_instruments()
const;
523 std::int32_t get_num_samples()
const;
525 std::vector<std::string> get_subsong_names()
const;
526 std::vector<std::string> get_channel_names()
const;
527 std::vector<std::string> get_order_names()
const;
528 std::vector<std::string> get_pattern_names()
const;
529 std::vector<std::string> get_instrument_names()
const;
530 std::vector<std::string> get_sample_names()
const;
532 std::int32_t get_order_pattern( std::int32_t order )
const;
534 std::int32_t get_pattern_num_rows( std::int32_t pattern )
const;
536 std::uint8_t get_pattern_row_channel_command( std::int32_t pattern, std::int32_t row, std::int32_t channel,
int command )
const;
538 std::string format_pattern_row_channel_command( std::int32_t pattern, std::int32_t row, std::int32_t channel,
int command )
const;
539 std::string highlight_pattern_row_channel_command( std::int32_t pattern, std::int32_t row, std::int32_t channel,
int command )
const;
541 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;
542 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;
544 std::vector<std::string> get_ctls()
const;
546 std::string ctl_get(
const std::string & ctl )
const;
547 void ctl_set(
const std::string & ctl,
const std::string & value );
559 #endif // LIBOPENMPT_HPP