buzztrax
buzztrax copied to clipboard
GstElement "notify::*" calls not working?
While working on the tests I was having some trouble with "test_bt_sequence_ticks". That test creates a song with a simsyn, and a simple pattern that modifies its "wave" parameter. The test then attaches a signal to the element's "notify::wave" and plays the song to test whether the element's properties are updated properly by the playing song. The test fails currently because no updates happen.
I have not been able to get callbacks by manually attaching to "notify::wave", i.e. just in gstbt_sim_syn_init, and I noticed that the Machine Properties Dialog isn't updating when machine parameters change from song patterns. Has something changed/broken in GStreamer to do with notify::* callbacks recently that stops them firing?
I'll create a small GStreamer test program to find out more, but just putting this bug here in the meantime in case someone knows more.
Here's the song I've been using to test: test_bt_sequence_ticks.txt
This test is indeed not working for me either. I've should have disabled it with a comment. I worked at some point, but so far I was not able to figure out whats wrong.
I have a hunch though. A while ago I extracted common 'components' from plugins. The actual simsyn is just a container that 'proxies' certain properties from the components: https://github.com/Buzztrax/buzztrax/blob/master/src/gst/audio/simsyn.c#L252
For that I created this helper: https://github.com/Buzztrax/buzztrax/blob/69288014de74ba0831761bfa0f49745778b561b8/src/gst/audio/plugin.c#L50 I probably missed some details.
To check:
- add some debug prints to https://github.com/Buzztrax/buzztrax/blob/master/src/gst/audio/simsyn.c#L145 and https://github.com/Buzztrax/buzztrax/blob/master/src/gst/audio/simsyn.c#L176
- verify that the automation is changing the simsyn:wave property and not the proxied osc:wave property (this would explain why it works, but we don't see the UI changing)
Thanks heaps for the pointers -- I'll look into this