diff --git a/binding-mri/audioplayback-binding.cpp b/binding-mri/audioplayback-binding.cpp index 2f10af3..e403ebc 100644 --- a/binding-mri/audioplayback-binding.cpp +++ b/binding-mri/audioplayback-binding.cpp @@ -130,6 +130,28 @@ static VALUE rb_playbackGetPitch(VALUE self){ return DBL2NUM(pb->getPitch()); } +static VALUE rb_playbackSetStartSample(VALUE self, VALUE sample) { + PLAYBACK + pb->startSample = sample; + return Qnil; +} + +static VALUE rb_playbackGetStartSample(VALUE self) { + PLAYBACK + return INT2FIX(pb->startSample); +} + +static VALUE rb_playbackSetMaxSamples(VALUE self, VALUE samples) { + PLAYBACK + pb->maxSamples = samples; + return Qnil; +} + +static VALUE rb_playbackGetMaxSamples(VALUE self) { + PLAYBACK + return INT2FIX(pb->maxSamples); +} + static VALUE rb_playbackSetPosition(VALUE self, VALUE position){ PLAYBACK pb->setPlaybackPosition(NUM2DBL(position)); @@ -205,6 +227,11 @@ void audioPlaybackBindingInit(){ rb_define_method(audioplayback_klass, "pitch=", RUBY_METHOD_FUNC(rb_playbackSetPitch), 1); rb_define_method(audioplayback_klass, "pitch", RUBY_METHOD_FUNC(rb_playbackGetPitch), 0); + rb_define_method(audioplayback_klass, "start_sample=", RUBY_METHOD_FUNC(rb_playbackSetStartSample), 1); + rb_define_method(audioplayback_klass, "start_sample", RUBY_METHOD_FUNC(rb_playbackGetStartSample), 0); + rb_define_method(audioplayback_klass, "max_samples=", RUBY_METHOD_FUNC(rb_playbackSetMaxSamples), 1); + rb_define_method(audioplayback_klass, "max_samples", RUBY_METHOD_FUNC(rb_playbackGetMaxSamples), 0); + rb_define_method(audioplayback_klass, "position=", RUBY_METHOD_FUNC(rb_playbackSetPosition), 1); rb_define_method(audioplayback_klass, "position", RUBY_METHOD_FUNC(rb_playbackGetPosition), 0); diff --git a/libraries.rb b/libraries.rb index 4a20031..4f879a1 100755 --- a/libraries.rb +++ b/libraries.rb @@ -26,6 +26,8 @@ BLACKLIST = [ "win32u.dll", "GDI32.dll", "gdi32full.dll", + "WINMM.dll", + "DWrite.dll" ] files = [] diff --git a/scripts/Scene_OF.rb b/scripts/Scene_OF.rb index 42b5b00..defc821 100644 --- a/scripts/Scene_OF.rb +++ b/scripts/Scene_OF.rb @@ -99,7 +99,7 @@ class Scene_OF end def update - + @viewport.scale_x -= 0.001 end def map_input(input) diff --git a/src/sound/audioplayback.cpp b/src/sound/audioplayback.cpp index 60635ff..4d3e66b 100644 --- a/src/sound/audioplayback.cpp +++ b/src/sound/audioplayback.cpp @@ -252,6 +252,8 @@ bool AudioPlayback::fadeIn(double time) { SDL_PropertiesID props = SDL_CreateProperties(); SDL_SetNumberProperty(props, MIX_PROP_PLAY_FADE_IN_MILLISECONDS_NUMBER, time * 1000.0); + SDL_SetNumberProperty(props, MIX_PROP_PLAY_START_FRAME_NUMBER, startSample); + SDL_SetNumberProperty(props, MIX_PROP_PLAY_MAX_FRAME_NUMBER, maxSamples); if (result) { result = MIX_PlayTrack(p_track, props); diff --git a/src/sound/audioplayback.h b/src/sound/audioplayback.h index e09583e..46e0700 100644 --- a/src/sound/audioplayback.h +++ b/src/sound/audioplayback.h @@ -15,6 +15,9 @@ public: AudioPlayback(MIX_Mixer* mixer, MIX_Audio* audio, AudioGroup* group); ~AudioPlayback(); + int startSample = 0; + int maxSamples = -1; + bool initialize(MIX_Mixer* mixer, AudioSource* source, AudioGroup* group); bool initialize(MIX_Mixer* mixer, MIX_Audio* audio, AudioGroup* group); void deinitilize(); @@ -58,6 +61,6 @@ private: AudioSource* p_source = nullptr; AudioGroup* p_group = nullptr; - float p_volume; - float p_pitch; + float p_volume = 1.0f; + float p_pitch = 1.0f; }; \ No newline at end of file