d1ddee2258
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.
51 lines
2.1 KiB
XML
51 lines
2.1 KiB
XML
<?xml version="1.0" encoding="UTF-8" ?>
|
|
<class name="AudioStreamMP3" inherits="AudioStream" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd">
|
|
<brief_description>
|
|
MP3 audio stream driver.
|
|
</brief_description>
|
|
<description>
|
|
MP3 audio stream driver. See [member data] if you want to load an MP3 file at run-time.
|
|
</description>
|
|
<tutorials>
|
|
</tutorials>
|
|
<members>
|
|
<member name="bar_beats" type="int" setter="set_bar_beats" getter="get_bar_beats" default="4">
|
|
</member>
|
|
<member name="beat_count" type="int" setter="set_beat_count" getter="get_beat_count" default="0">
|
|
</member>
|
|
<member name="bpm" type="float" setter="set_bpm" getter="get_bpm" default="0.0">
|
|
</member>
|
|
<member name="data" type="PackedByteArray" setter="set_data" getter="get_data" default="PackedByteArray()">
|
|
Contains the audio data in bytes.
|
|
You can load a file without having to import it beforehand using the code snippet below. Keep in mind that this snippet loads the whole file into memory and may not be ideal for huge files (hundreds of megabytes or more).
|
|
[codeblocks]
|
|
[gdscript]
|
|
func load_mp3(path):
|
|
var file = File.new()
|
|
file.open(path, File.READ)
|
|
var sound = AudioStreamMP3.new()
|
|
sound.data = file.get_buffer(file.get_length())
|
|
file.close()
|
|
return sound
|
|
[/gdscript]
|
|
[csharp]
|
|
public AudioStreamMP3 LoadMP3(string path)
|
|
{
|
|
var file = new File();
|
|
file.Open(path, File.READ);
|
|
var sound = new AudioStreamMP3();
|
|
sound.Data = file.GetBuffer(file.GetLength());
|
|
file.Close();
|
|
return sound;
|
|
}
|
|
[/csharp]
|
|
[/codeblocks]
|
|
</member>
|
|
<member name="loop" type="bool" setter="set_loop" getter="has_loop" default="false">
|
|
If [code]true[/code], the stream will automatically loop when it reaches the end.
|
|
</member>
|
|
<member name="loop_offset" type="float" setter="set_loop_offset" getter="get_loop_offset" default="0.0">
|
|
Time in seconds at which the stream starts after being looped.
|
|
</member>
|
|
</members>
|
|
</class>
|