diff options
Diffstat (limited to '')
| -rw-r--r-- | modules/chibi/event_stream_chibi.h | 132 |
1 files changed, 57 insertions, 75 deletions
diff --git a/modules/chibi/event_stream_chibi.h b/modules/chibi/event_stream_chibi.h index 57aa307a8..8712fead2 100644 --- a/modules/chibi/event_stream_chibi.h +++ b/modules/chibi/event_stream_chibi.h @@ -29,16 +29,16 @@ #ifndef EVENT_STREAM_CHIBI_H #define EVENT_STREAM_CHIBI_H -#include "scene/resources/event_stream.h" -#include "cp_sample_manager.h" -#include "cp_mixer.h" -#include "cp_song.h" #include "cp_file_access_wrapper.h" +#include "cp_mixer.h" #include "cp_player_data.h" +#include "cp_sample_manager.h" +#include "cp_song.h" +#include "io/resource_loader.h" +#include "os/file_access.h" #include "resource.h" +#include "scene/resources/event_stream.h" #include "servers/audio_server.h" -#include "os/file_access.h" -#include "io/resource_loader.h" /** SAMPLE MANAGER **/ @@ -59,27 +59,24 @@ class CPSampleManagerImpl : public CPSampleManager { CPSample_Loop_Type loop_type; }; + _FORCE_INLINE_ SampleData *_getsd(CPSample_ID p_id) { - _FORCE_INLINE_ SampleData* _getsd(CPSample_ID p_id) { - - return ((SampleData*)p_id._private); + return ((SampleData *)p_id._private); } - Set<SampleData*> valid; + Set<SampleData *> valid; public: - _FORCE_INLINE_ RID get_rid(CPSample_ID p_id) { return _getsd(p_id)->rid; } - virtual CPSample_ID create(bool p_16bits,bool p_stereo,int32_t p_len); - virtual void recreate(CPSample_ID p_id,bool p_16bits,bool p_stereo,int32_t p_len); + virtual CPSample_ID create(bool p_16bits, bool p_stereo, int32_t p_len); + virtual void recreate(CPSample_ID p_id, bool p_16bits, bool p_stereo, int32_t p_len); virtual void destroy(CPSample_ID p_id); virtual bool check(CPSample_ID p_id); // return false if invalid - virtual void set_c5_freq(CPSample_ID p_id,int32_t p_freq); - virtual void set_loop_begin(CPSample_ID p_id,int32_t p_begin); - virtual void set_loop_end(CPSample_ID p_id,int32_t p_end); - virtual void set_loop_type(CPSample_ID p_id,CPSample_Loop_Type p_type); - virtual void set_chunk(CPSample_ID p_id,int32_t p_index,void *p_data,int p_data_len); - + virtual void set_c5_freq(CPSample_ID p_id, int32_t p_freq); + virtual void set_loop_begin(CPSample_ID p_id, int32_t p_begin); + virtual void set_loop_end(CPSample_ID p_id, int32_t p_end); + virtual void set_loop_type(CPSample_ID p_id, CPSample_Loop_Type p_type); + virtual void set_chunk(CPSample_ID p_id, int32_t p_index, void *p_data, int p_data_len); virtual int32_t get_loop_begin(CPSample_ID p_id); virtual int32_t get_loop_end(CPSample_ID p_id); @@ -91,21 +88,19 @@ public: virtual bool lock_data(CPSample_ID p_id); virtual void *get_data(CPSample_ID p_id); /* WARNING: Not all sample managers may be able to implement this, it depends on the mixer in use! */ - virtual int16_t get_data(CPSample_ID p_id, int p_sample, int p_channel=0); /// Does not need locking - virtual void set_data(CPSample_ID p_id, int p_sample, int16_t p_data,int p_channel=0); /// Does not need locking + virtual int16_t get_data(CPSample_ID p_id, int p_sample, int p_channel = 0); /// Does not need locking + virtual void set_data(CPSample_ID p_id, int p_sample, int16_t p_data, int p_channel = 0); /// Does not need locking virtual void unlock_data(CPSample_ID p_id); - virtual void get_chunk(CPSample_ID p_id,int32_t p_index,void *p_data,int p_data_len); - + virtual void get_chunk(CPSample_ID p_id, int32_t p_index, void *p_data, int p_data_len); }; - /** MIXER **/ class CPMixerImpl : public CPMixer { enum { - MAX_VOICES=64 + MAX_VOICES = 64 }; struct Voice { @@ -114,64 +109,61 @@ class CPMixerImpl : public CPMixer { CPSample_ID sample; float freq_mult; float reverb; - Voice() { reverb=0.0; } + Voice() { reverb = 0.0; } }; Voice voices[MAX_VOICES]; - int callback_interval; int callback_timeout; - void (*callback)(void*); + void (*callback)(void *); void *userdata; float voice_scale; float tempo_scale; float pitch_scale; AudioMixer::ReverbRoomType reverb_type; AudioMixer *mixer; -public: - void process_usecs(int p_usec,float p_volume,float p_pitch_scale,float p_tempo_scale); +public: + void process_usecs(int p_usec, float p_volume, float p_pitch_scale, float p_tempo_scale); /* Callback */ virtual void set_callback_interval(int p_interval_us); //in usecs, for tracker it's 2500000/tempo - virtual void set_callback(void (*p_callback)(void*),void *p_userdata); + virtual void set_callback(void (*p_callback)(void *), void *p_userdata); /* Voice Control */ - virtual void setup_voice(int p_voice_index,CPSample_ID p_sample_id,int32_t p_start_index) ; - virtual void stop_voice(int p_voice_index) ; - virtual void set_voice_frequency(int p_voice_index,int32_t p_freq) ; //in freq*FREQUENCY_BITS - virtual void set_voice_panning(int p_voice_index,int p_pan) ; - virtual void set_voice_volume(int p_voice_index,int p_vol) ; - virtual void set_voice_filter(int p_filter,bool p_enabled,uint8_t p_cutoff, uint8_t p_resonance ); - virtual void set_voice_reverb_send(int p_voice_index,int p_reverb); - virtual void set_voice_chorus_send(int p_voice_index,int p_chorus); /* 0 - 255 */ + virtual void setup_voice(int p_voice_index, CPSample_ID p_sample_id, int32_t p_start_index); + virtual void stop_voice(int p_voice_index); + virtual void set_voice_frequency(int p_voice_index, int32_t p_freq); //in freq*FREQUENCY_BITS + virtual void set_voice_panning(int p_voice_index, int p_pan); + virtual void set_voice_volume(int p_voice_index, int p_vol); + virtual void set_voice_filter(int p_filter, bool p_enabled, uint8_t p_cutoff, uint8_t p_resonance); + virtual void set_voice_reverb_send(int p_voice_index, int p_reverb); + virtual void set_voice_chorus_send(int p_voice_index, int p_chorus); /* 0 - 255 */ virtual void set_reverb_mode(ReverbMode p_mode); - virtual void set_chorus_params(unsigned int p_delay_ms,unsigned int p_separation_ms,unsigned int p_depth_ms10,unsigned int p_speed_hz10); - + virtual void set_chorus_params(unsigned int p_delay_ms, unsigned int p_separation_ms, unsigned int p_depth_ms10, unsigned int p_speed_hz10); /* Info retrieving */ - virtual int32_t get_voice_sample_pos_index(int p_voice_index) ; - virtual int get_voice_panning(int p_voice_index) ; - virtual int get_voice_volume(int p_voice_index) ; - virtual CPSample_ID get_voice_sample_id(int p_voice_index) ; + virtual int32_t get_voice_sample_pos_index(int p_voice_index); + virtual int get_voice_panning(int p_voice_index); + virtual int get_voice_volume(int p_voice_index); + virtual CPSample_ID get_voice_sample_id(int p_voice_index); virtual bool is_voice_active(int p_voice_index); virtual int get_active_voice_count() { return 0; } virtual int get_total_voice_count() { return MAX_VOICES; } - virtual uint32_t get_mix_frequency() { return 0; } /* Methods below only work with software mixers, meant for software-based sound drivers, hardware mixers ignore them */ virtual int32_t process(int32_t p_frames) { return 0; } virtual int32_t *get_mixdown_buffer_ptr() { return NULL; } - virtual void set_mix_frequency(int32_t p_mix_frequency) {}; + virtual void set_mix_frequency(int32_t p_mix_frequency){}; - CPMixerImpl(AudioMixer *p_mixer=NULL); + CPMixerImpl(AudioMixer *p_mixer = NULL); virtual ~CPMixerImpl() {} }; @@ -180,9 +172,8 @@ public: class CPFileAccessWrapperImpl : public CPFileAccessWrapper { FileAccess *f; -public: - +public: virtual Error open(const char *p_filename, int p_mode_flags); virtual void close(); @@ -193,8 +184,8 @@ public: virtual bool eof_reached(); virtual uint8_t get_byte(); - virtual void get_byte_array(uint8_t *p_dest,int p_elements); - virtual void get_word_array(uint16_t *p_dest,int p_elements); + virtual void get_byte_array(uint8_t *p_dest, int p_elements); + virtual void get_word_array(uint16_t *p_dest, int p_elements); virtual uint16_t get_word(); virtual uint32_t get_dword(); @@ -205,25 +196,24 @@ public: virtual Error get_error(); virtual void store_byte(uint8_t p_dest); - virtual void store_byte_array(const uint8_t *p_dest,int p_elements); + virtual void store_byte_array(const uint8_t *p_dest, int p_elements); virtual void store_word(uint16_t p_dest); virtual void store_dword(uint32_t p_dest); - CPFileAccessWrapperImpl() { f=NULL; } - virtual ~CPFileAccessWrapperImpl(){ if (f) memdelete(f); } - + CPFileAccessWrapperImpl() { f = NULL; } + virtual ~CPFileAccessWrapperImpl() { + if (f) memdelete(f); + } }; - - ///////////////////// class EventStreamChibi; class EventStreamPlaybackChibi : public EventStreamPlayback { - OBJ_TYPE(EventStreamPlaybackChibi,EventStreamPlayback); + OBJ_TYPE(EventStreamPlaybackChibi, EventStreamPlayback); CPMixerImpl mixer; uint64_t total_usec; @@ -233,16 +223,13 @@ class EventStreamPlaybackChibi : public EventStreamPlayback { int last_order; int loops; virtual Error _play(); - virtual bool _update(AudioMixer* p_mixer, uint64_t p_usec); + virtual bool _update(AudioMixer *p_mixer, uint64_t p_usec); virtual void _stop(); float volume; float tempo_scale; float pitch_scale; - public: - - virtual void set_paused(bool p_paused); virtual bool is_paused() const; @@ -263,29 +250,26 @@ public: virtual void set_tempo_scale(float p_tempo_scale); virtual float get_tempo_scale() const; - virtual void set_channel_volume(int p_channel,float p_volume); + virtual void set_channel_volume(int p_channel, float p_volume); virtual float get_channel_volume(int p_channel) const; virtual float get_last_note_time(int p_channel) const; - EventStreamPlaybackChibi(Ref<EventStreamChibi> p_stream=Ref<EventStreamChibi>()); + EventStreamPlaybackChibi(Ref<EventStreamChibi> p_stream = Ref<EventStreamChibi>()); ~EventStreamPlaybackChibi(); }; - class EventStreamChibi : public EventStream { - OBJ_TYPE(EventStreamChibi,EventStream); + OBJ_TYPE(EventStreamChibi, EventStream); -friend class ResourceFormatLoaderChibi; -friend class EventStreamPlaybackChibi; + friend class ResourceFormatLoaderChibi; + friend class EventStreamPlaybackChibi; //I think i didn't know what const was when i wrote this more than a decade ago //so it goes mutable :( mutable CPSong song; - public: - virtual Ref<EventStreamPlayback> instance_playback(); virtual String get_stream_name() const; @@ -297,15 +281,13 @@ public: EventStreamChibi(); }; - class ResourceFormatLoaderChibi : public ResourceFormatLoader { public: - virtual RES load(const String &p_path,const String& p_original_path="",Error *r_error=NULL); + virtual RES load(const String &p_path, const String &p_original_path = "", Error *r_error = NULL); virtual void get_recognized_extensions(List<String> *p_extensions) const; - virtual bool handles_type(const String& p_type) const; + virtual bool handles_type(const String &p_type) const; virtual String get_resource_type(const String &p_path) const; - }; void initialize_chibi(); |
