123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185 |
- #ifndef LIBOPENMPT_HPP
- #define LIBOPENMPT_HPP
- #include "libopenmpt_config.h"
- #include <exception>
- #include <iosfwd>
- #include <iostream>
- #include <map>
- #include <string>
- #include <string_view>
- #include <vector>
- #include <cstddef>
- #include <cstdint>
- namespace openmpt {
- #if defined(_MSC_VER)
- #pragma warning(push)
- #pragma warning(disable:4275)
- #endif
- class LIBOPENMPT_CXX_API exception : public std::exception {
- private:
- char * text;
- public:
- exception( const std::string & text ) noexcept;
- exception( const exception & other ) noexcept;
- exception( exception && other ) noexcept;
- exception & operator = ( const exception & other ) noexcept;
- exception & operator = ( exception && other ) noexcept;
- virtual ~exception() noexcept;
- const char * what() const noexcept override;
- };
- #if defined(_MSC_VER)
- #pragma warning(pop)
- #endif
- LIBOPENMPT_CXX_API std::uint32_t get_library_version();
- LIBOPENMPT_CXX_API std::uint32_t get_core_version();
- namespace string {
- static const char library_version LIBOPENMPT_ATTR_DEPRECATED [] = "library_version";
- static const char library_features LIBOPENMPT_ATTR_DEPRECATED [] = "library_features";
- static const char core_version LIBOPENMPT_ATTR_DEPRECATED [] = "core_version";
- static const char build LIBOPENMPT_ATTR_DEPRECATED [] = "build";
- static const char credits LIBOPENMPT_ATTR_DEPRECATED [] = "credits";
- static const char contact LIBOPENMPT_ATTR_DEPRECATED [] = "contact";
- static const char license LIBOPENMPT_ATTR_DEPRECATED [] = "license";
- LIBOPENMPT_CXX_API std::string get( const std::string & key );
- }
- LIBOPENMPT_CXX_API std::vector<std::string> get_supported_extensions();
- LIBOPENMPT_ATTR_DEPRECATED LIBOPENMPT_CXX_API bool is_extension_supported( const std::string & extension );
- LIBOPENMPT_CXX_API bool is_extension_supported2( std::string_view extension );
- LIBOPENMPT_CXX_API double could_open_probability( std::istream & stream, double effort = 1.0, std::ostream & log = std::clog );
- LIBOPENMPT_ATTR_DEPRECATED LIBOPENMPT_CXX_API double could_open_propability( std::istream & stream, double effort = 1.0, std::ostream & log = std::clog );
- LIBOPENMPT_CXX_API std::size_t probe_file_header_get_recommended_size();
- static const std::uint64_t probe_file_header_flags_modules LIBOPENMPT_ATTR_DEPRECATED = 0x1ull;
- static const std::uint64_t probe_file_header_flags_containers LIBOPENMPT_ATTR_DEPRECATED = 0x2ull;
- static const std::uint64_t probe_file_header_flags_default LIBOPENMPT_ATTR_DEPRECATED = 0x1ull | 0x2ull;
- static const std::uint64_t probe_file_header_flags_none LIBOPENMPT_ATTR_DEPRECATED = 0x0ull;
- enum probe_file_header_flags : std::uint64_t {
-
- probe_file_header_flags_modules2 = 0x1ull,
-
- probe_file_header_flags_containers2 = 0x2ull,
-
- probe_file_header_flags_default2 = probe_file_header_flags_modules2 | probe_file_header_flags_containers2,
-
- probe_file_header_flags_none2 = 0x0ull
- };
- enum probe_file_header_result {
- probe_file_header_result_success = 1,
- probe_file_header_result_failure = 0,
- probe_file_header_result_wantmoredata = -1
- };
- LIBOPENMPT_CXX_API int probe_file_header( std::uint64_t flags, const std::byte * data, std::size_t size, std::uint64_t filesize );
- LIBOPENMPT_CXX_API int probe_file_header( std::uint64_t flags, const std::uint8_t * data, std::size_t size, std::uint64_t filesize );
- LIBOPENMPT_CXX_API int probe_file_header( std::uint64_t flags, const std::byte * data, std::size_t size );
- LIBOPENMPT_CXX_API int probe_file_header( std::uint64_t flags, const std::uint8_t * data, std::size_t size );
- LIBOPENMPT_CXX_API int probe_file_header( std::uint64_t flags, std::istream & stream );
- class module_impl;
- class module_ext;
- namespace detail {
- typedef std::map< std::string, std::string > initial_ctls_map;
- }
- class LIBOPENMPT_CXX_API module {
- friend class module_ext;
- public:
-
- enum render_param {
-
-
- RENDER_MASTERGAIN_MILLIBEL = 1,
-
-
- RENDER_STEREOSEPARATION_PERCENT = 2,
-
-
- RENDER_INTERPOLATIONFILTER_LENGTH = 3,
-
-
- RENDER_VOLUMERAMPING_STRENGTH = 4
- };
-
- enum command_index {
- command_note = 0,
- command_instrument = 1,
- command_volumeffect = 2,
- command_effect = 3,
- command_volume = 4,
- command_parameter = 5
- };
- private:
- module_impl * impl;
- private:
-
- module( const module & );
- void operator = ( const module & );
- private:
-
- module();
- void set_impl( module_impl * i );
- public:
-
-
- module( std::istream & stream, std::ostream & log = std::clog, const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
-
- module( const std::vector<std::byte> & data, std::ostream & log = std::clog, const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
-
- 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() );
-
- 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() );
-
- 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() );
-
- 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() );
-
- 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() );
-
- module( const std::vector<char> & data, std::ostream & log = std::clog, const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
-
- module( const char * beg, const char * end, std::ostream & log = std::clog, const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
-
- 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() );
-
- 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() );
- virtual ~module();
- public:
-
-
- void select_subsong( std::int32_t subsong );
-
-
- std::int32_t get_selected_subsong() const;
-
-
- void set_repeat_count( std::int32_t repeat_count );
-
-
- std::int32_t get_repeat_count() const;
-
-
- double get_duration_seconds() const;
-
-
- double set_position_seconds( double seconds );
-
-
- double get_position_seconds() const;
-
-
- double set_position_order_row( std::int32_t order, std::int32_t row );
-
-
- std::int32_t get_render_param( int param ) const;
-
-
- void set_render_param( int param, std::int32_t value );
-
-
-
- std::size_t read( std::int32_t samplerate, std::size_t count, std::int16_t * mono );
-
-
- std::size_t read( std::int32_t samplerate, std::size_t count, std::int16_t * left, std::int16_t * right );
-
-
- 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 );
-
-
- std::size_t read( std::int32_t samplerate, std::size_t count, float * mono );
-
-
- std::size_t read( std::int32_t samplerate, std::size_t count, float * left, float * right );
-
-
- std::size_t read( std::int32_t samplerate, std::size_t count, float * left, float * right, float * rear_left, float * rear_right );
-
-
- std::size_t read_interleaved_stereo( std::int32_t samplerate, std::size_t count, std::int16_t * interleaved_stereo );
-
-
- std::size_t read_interleaved_quad( std::int32_t samplerate, std::size_t count, std::int16_t * interleaved_quad );
-
-
- std::size_t read_interleaved_stereo( std::int32_t samplerate, std::size_t count, float * interleaved_stereo );
-
-
- std::size_t read_interleaved_quad( std::int32_t samplerate, std::size_t count, float * interleaved_quad );
-
-
-
- std::vector<std::string> get_metadata_keys() const;
-
-
- std::string get_metadata( const std::string & key ) const;
-
-
- double get_current_estimated_bpm() const;
-
-
- std::int32_t get_current_speed() const;
-
-
- std::int32_t get_current_tempo() const;
-
-
- std::int32_t get_current_order() const;
-
-
- std::int32_t get_current_pattern() const;
-
-
- std::int32_t get_current_row() const;
-
-
- std::int32_t get_current_playing_channels() const;
-
-
- float get_current_channel_vu_mono( std::int32_t channel ) const;
-
-
- float get_current_channel_vu_left( std::int32_t channel ) const;
-
-
- float get_current_channel_vu_right( std::int32_t channel ) const;
-
-
- float get_current_channel_vu_rear_left( std::int32_t channel ) const;
-
-
- float get_current_channel_vu_rear_right( std::int32_t channel ) const;
-
-
- std::int32_t get_num_subsongs() const;
-
-
- std::int32_t get_num_channels() const;
-
-
- std::int32_t get_num_orders() const;
-
-
- std::int32_t get_num_patterns() const;
-
-
- std::int32_t get_num_instruments() const;
-
-
- std::int32_t get_num_samples() const;
-
-
- std::vector<std::string> get_subsong_names() const;
-
-
- std::vector<std::string> get_channel_names() const;
-
-
- std::vector<std::string> get_order_names() const;
-
-
- std::vector<std::string> get_pattern_names() const;
-
-
- std::vector<std::string> get_instrument_names() const;
-
-
- std::vector<std::string> get_sample_names() const;
-
-
- std::int32_t get_order_pattern( std::int32_t order ) const;
-
-
- std::int32_t get_pattern_num_rows( std::int32_t pattern ) const;
-
-
- std::uint8_t get_pattern_row_channel_command( std::int32_t pattern, std::int32_t row, std::int32_t channel, int command ) const;
-
-
- std::string format_pattern_row_channel_command( std::int32_t pattern, std::int32_t row, std::int32_t channel, int command ) const;
-
-
- std::string highlight_pattern_row_channel_command( std::int32_t pattern, std::int32_t row, std::int32_t channel, int command ) const;
-
-
- 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;
-
-
- 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;
-
-
- std::vector<std::string> get_ctls() const;
-
-
- LIBOPENMPT_ATTR_DEPRECATED std::string ctl_get( const std::string & ctl ) const;
-
-
- bool ctl_get_boolean( std::string_view ctl ) const;
-
-
- std::int64_t ctl_get_integer( std::string_view ctl ) const;
-
-
- double ctl_get_floatingpoint( std::string_view ctl ) const;
-
-
- std::string ctl_get_text( std::string_view ctl ) const;
-
-
- LIBOPENMPT_ATTR_DEPRECATED void ctl_set( const std::string & ctl, const std::string & value );
-
-
- void ctl_set_boolean( std::string_view ctl, bool value );
-
-
- void ctl_set_integer( std::string_view ctl, std::int64_t value );
-
-
- void ctl_set_floatingpoint( std::string_view ctl, double value );
-
-
- void ctl_set_text( std::string_view ctl, std::string_view value );
-
- };
- }
- #endif
|