### Godot version

4.0-dev (master)

### System information

Win 11

### Issue description

Reported by @ExquisiterEmil on Discord

I analyzed an issue regarding the animation player - it keeps behaving weirdly when using an AudioStreamPlayer and using the AnimationPlayer. After adding a couple of debug messages and following various weird calls (up to 5 calls to animation process during _stop_internal) I narrowed the issue down to the following use-case:
- You have an AnimationPlayer
- You have an AudioStreamPlayer within the AnimationPlayer
- You position yourself somewhere "non position 0" in the timeline of the animation player (i.e. 'seek')
- You try to stop the animation player by pressing the "Stop" symbol (+ it shouldnt be playing in the first place because you haven't pressed 'Play' yet)
- The audio keeps playing but the bar resets to 0
- You press "Stop" again and it stops the audio.

From what I was able to analyze, the following process happens:
- When you click within the animation player, you trigger a _timeline_changed signal, this is being consumed by the AnimationPlayerEditor's "Seek Value changed" function, which in turn "stops" the player, seeks the position, and "starts" the player again. (See animation_player_editor_plugin.cpp:1169 -> animation_player.cpp:1984) -> Assumtion Nr. 1
![image](https://user-images.githubusercontent.com/761911/213870376-dd12d973-4e1e-483e-a24a-09e19c01a390.png)
- During the press of "Stop" you basically setting the seek value back to "0", and since this is another change of the seek valuje, it triggers another round-trip of seeking and pausing and unpausing the audioplayer.
![image](https://user-images.githubusercontent.com/761911/213870551-95d79a05-5bc3-4597-886a-ada6cca3c0c8.png)
- If you press once again, since the seek position is now "0", the round trip isn't triggered, and the animation processing isn't started, hence the audio doesn't start playing again. -> Assumtion Nr. 2

Assumtion Nr. 1:
- animation_player.cpp _stop_internal doesn't reset "is_stopping" to the proper previous state and just overrides it with "false" upon finish seeking (albeit setting "playing" to false)

Assumtion Nr. 2:
- I assume this behaviour like this, due to observing the stack trace of the calls, which only tripped my breakpoint once, here over at _stop_internal
![image](https://user-images.githubusercontent.com/761911/213870612-dfcfbe2c-c64d-41d4-ad4f-fe1e5ef6e927.png)
This, in turn, means that `frame->set_value(0);` does not trigger a seek again, which makes the audio player shut up.

Sadly, I have no idea how we could fix this, maybe instead of checking against the `if (!nc->node || is_stopping) {` block, we may also add a `|| !playing`? But maybe we are too early for this to trigger - someone with more experience in the animationplayer may be able to help out here.

If I should add anything to my analysis, let me know and I'll try to give more insight!


### Steps to reproduce

Listed above, download example project, open, click AnimationPlayer, seek somewhere, try to stop, ...

### Minimal reproduction project

[AudioPlaybackTrackIssue.zip](https://github.com/godotengine/godot/files/10472323/AudioPlaybackTrackIssue.zip)

ClassDB::bind_method(D_METHOD("set_advance_expression_base_node", "node"), &AnimationTree::set_advance_expression_base_node);
	ClassDB::bind_method(D_METHOD("get_advance_expression_base_node"), &AnimationTree::get_advance_expression_base_node);
	ClassDB::bind_method(D_METHOD("set_root_motion_track", "path"), &AnimationTree::set_root_motion_track);
	ClassDB::bind_method(D_METHOD("get_root_motion_track"), &AnimationTree::get_root_motion_track);
	ClassDB::bind_method(D_METHOD("get_root_motion_position"), &AnimationTree::get_root_motion_position);
	ClassDB::bind_method(D_METHOD("get_root_motion_rotation"), &AnimationTree::get_root_motion_rotation);
	ClassDB::bind_method(D_METHOD("get_root_motion_scale"), &AnimationTree::get_root_motion_scale);
	ClassDB::bind_method(D_METHOD("_update_properties"), &AnimationTree::_update_properties);
	ClassDB::bind_method(D_METHOD("rename_parameter", "old_name", "new_name"), &AnimationTree::rename_parameter);
	ClassDB::bind_method(D_METHOD("advance", "delta"), &AnimationTree::advance);
	ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "tree_root", PROPERTY_HINT_RESOURCE_TYPE, "AnimationRootNode"), "set_tree_root", "get_tree_root");
	ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "anim_player", PROPERTY_HINT_NODE_PATH_VALID_TYPES, "AnimationPlayer"), "set_animation_player", "get_animation_player");
	ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "advance_expression_base_node", PROPERTY_HINT_NODE_PATH_VALID_TYPES, "Node"), "set_advance_expression_base_node", "get_advance_expression_base_node");
	ADD_PROPERTY(PropertyInfo(Variant::BOOL, "active"), "set_active", "is_active");
	ADD_PROPERTY(PropertyInfo(Variant::INT, "_callback", PROPERTY_HINT_ENUM, "Physics,Idle,Manual"), "set__callback", "get__callback");
	ADD_GROUP("Root Motion", "root_motion_");
	ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "root_motion_track"), "set_root_motion_track", "get_root_motion_track");
	BIND_ENUM_CONSTANT(ANIMATION_PROCESS_PHYSICS);
	BIND_ENUM_CONSTANT(ANIMATION_PROCESS_IDLE);
	BIND_ENUM_CONSTANT(ANIMATION_PROCESS_MANUAL);
	ADD_SIGNAL(MethodInfo("animation_player_changed"));
	// 
	ADD_SIGNAL(MethodInfo("animation_started", PropertyInfo(Variant::STRING_NAME, "anim_name")));
	ADD_SIGNAL(MethodInfo("animation_finished", PropertyInfo(Variant::STRING_NAME, "anim_name")));
}
AnimationTree::AnimationTree() {
}
AnimationTree::~AnimationTree() {
}