Implement BPM support
Based on #62896, only implements the BPM support part. * Implements BPM support in the AudioStreamOGG/MP3 importers. * Can select BPM/Bar Size and total beats in a song file, as well as edit looping points. * Looping is now BPM aware * Added a special importer UI for configuring this. * Added a special preview showing the audio waveform as well as the playback position in the resource picker. * Renamed `AudioStream::instance` to `instantiate` for correctness.
This commit is contained in:
parent
976cb7ea9f
commit
d1ddee2258
41 changed files with 1548 additions and 438 deletions
|
|
@ -46,7 +46,7 @@ float AudioStreamGenerator::get_buffer_length() const {
|
|||
return buffer_len;
|
||||
}
|
||||
|
||||
Ref<AudioStreamPlayback> AudioStreamGenerator::instance_playback() {
|
||||
Ref<AudioStreamPlayback> AudioStreamGenerator::instantiate_playback() {
|
||||
Ref<AudioStreamGeneratorPlayback> playback;
|
||||
playback.instantiate();
|
||||
playback->generator = this;
|
||||
|
|
@ -196,6 +196,10 @@ void AudioStreamGeneratorPlayback::seek(float p_time) {
|
|||
//no seek possible
|
||||
}
|
||||
|
||||
void AudioStreamGeneratorPlayback::tag_used_streams() {
|
||||
generator->tag_used(0);
|
||||
}
|
||||
|
||||
void AudioStreamGeneratorPlayback::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("push_frame", "frame"), &AudioStreamGeneratorPlayback::push_frame);
|
||||
ClassDB::bind_method(D_METHOD("can_push_buffer", "amount"), &AudioStreamGeneratorPlayback::can_push_buffer);
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ public:
|
|||
void set_buffer_length(float p_seconds);
|
||||
float get_buffer_length() const;
|
||||
|
||||
virtual Ref<AudioStreamPlayback> instance_playback() override;
|
||||
virtual Ref<AudioStreamPlayback> instantiate_playback() override;
|
||||
virtual String get_stream_name() const override;
|
||||
|
||||
virtual float get_length() const override;
|
||||
|
|
@ -89,6 +89,8 @@ public:
|
|||
int get_frames_available() const;
|
||||
int get_skips() const;
|
||||
|
||||
virtual void tag_used_streams() override;
|
||||
|
||||
void clear_buffer();
|
||||
|
||||
AudioStreamGeneratorPlayback();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue