@@ -568,6 +568,14 @@ float AudioStreamRandomizer::get_random_pitch() const {
568568 return random_pitch_scale;
569569}
570570
571+ void AudioStreamRandomizer::set_random_pitch_semitones (float p_semitones) {
572+ random_pitch_scale = powf (2 , p_semitones * 0 .08333333f );
573+ }
574+
575+ float AudioStreamRandomizer::get_random_pitch_semitones () const {
576+ return 12 .0f * log2f (MAX (1 .0f , random_pitch_scale));
577+ }
578+
571579void AudioStreamRandomizer::set_random_volume_offset_db (float p_volume_offset_db) {
572580 if (p_volume_offset_db < 0 ) {
573581 p_volume_offset_db = 0 ;
@@ -752,14 +760,18 @@ void AudioStreamRandomizer::_bind_methods() {
752760 ClassDB::bind_method (D_METHOD (" set_random_pitch" , " scale" ), &AudioStreamRandomizer::set_random_pitch);
753761 ClassDB::bind_method (D_METHOD (" get_random_pitch" ), &AudioStreamRandomizer::get_random_pitch);
754762
763+ ClassDB::bind_method (D_METHOD (" set_random_pitch_semitones" , " semitones" ), &AudioStreamRandomizer::set_random_pitch_semitones);
764+ ClassDB::bind_method (D_METHOD (" get_random_pitch_semitones" ), &AudioStreamRandomizer::get_random_pitch_semitones);
765+
755766 ClassDB::bind_method (D_METHOD (" set_random_volume_offset_db" , " db_offset" ), &AudioStreamRandomizer::set_random_volume_offset_db);
756767 ClassDB::bind_method (D_METHOD (" get_random_volume_offset_db" ), &AudioStreamRandomizer::get_random_volume_offset_db);
757768
758769 ClassDB::bind_method (D_METHOD (" set_playback_mode" , " mode" ), &AudioStreamRandomizer::set_playback_mode);
759770 ClassDB::bind_method (D_METHOD (" get_playback_mode" ), &AudioStreamRandomizer::get_playback_mode);
760771
761772 ADD_PROPERTY (PropertyInfo (Variant::INT, " playback_mode" , PROPERTY_HINT_ENUM, " Random (Avoid Repeats),Random,Sequential" ), " set_playback_mode" , " get_playback_mode" );
762- ADD_PROPERTY (PropertyInfo (Variant::FLOAT, " random_pitch" , PROPERTY_HINT_RANGE, " 1,16,0.01" ), " set_random_pitch" , " get_random_pitch" );
773+ ADD_PROPERTY (PropertyInfo (Variant::FLOAT, " random_pitch" , PROPERTY_HINT_NONE, " " , PROPERTY_USAGE_NO_EDITOR), " set_random_pitch" , " get_random_pitch" );
774+ ADD_PROPERTY (PropertyInfo (Variant::FLOAT, " random_pitch_semitones" , PROPERTY_HINT_RANGE, " 0,24,0.001,or_greater,suffix:Semitones" , PROPERTY_USAGE_EDITOR), " set_random_pitch_semitones" , " get_random_pitch_semitones" );
763775 ADD_PROPERTY (PropertyInfo (Variant::FLOAT, " random_volume_offset_db" , PROPERTY_HINT_RANGE, " 0,40,0.01,suffix:dB" ), " set_random_volume_offset_db" , " get_random_volume_offset_db" );
764776 ADD_ARRAY (" streams" , " stream_" );
765777 ADD_PROPERTY (PropertyInfo (Variant::INT, " streams_count" , PROPERTY_HINT_NONE, " " , PROPERTY_USAGE_NO_EDITOR), " set_streams_count" , " get_streams_count" );
0 commit comments