utopia-rise / fmod-gdextension

FMOD Studio GDExtension bindings for the Godot game engine
MIT License
439 stars 48 forks source link

Some way to access individual track properties #102

Closed Vertiverti closed 2 years ago

Vertiverti commented 2 years ago

(This might already exist, but I can't find it due to lack of proper docs)

It surprised me that there is no way to access data about tracks themselves inside of an event - only the event itself User parameters can be used to work around but it's super tedious to create a new parameter for every single parameter you want to edit. Also, it requires you to hard-code each track parameter as there's no "get list of tracks in event" function (or in general a method way to get that list) either (afaik) -i.e. useful for the case where you want to reset volumes of all tracks "for track in get_tracks_in_event: track.volume = 1.0"

Fading in & out tracks as per the image below is one example of a very common feature that this would be useful for image

CedNaru commented 2 years ago

I don't think what you want is possible. We can only get as far as the official FMOD API allows. Most of the functions available in our plugin are direct calls to the FMOD API. Regarding data related to events, you have the whole list here: https://www.fmod.com/resources/documentation-api?version=2.02&page=studio-api-eventdescription.html

Like you've already explained, you can retrieve parameters in an event ( cumbersome to do but possible at least) but I don't see anything that would allows us to access the "internal structure" of an event (aka tracks).

CedNaru commented 2 years ago

Do you happen to know if what you want is possible with the Unity or UE version of the FMOD plugin ? If yes, there might be a way I didn't think about. They use the same API after all.

Vertiverti commented 2 years ago

Fair enough. I've had a sleep and another look through the docs and I think I was confused last night between fmod's "channels" and "tracks" (I use Ableton for my music, and that program uses those terms interchangeably). Specifically, I found these image thinking they were exactly what I needed. But really I think you're right and what I want isn't even supported by the official integration.

Appreciate it nonetheless! This integration is incredible!