Apologies in advance if this has been fixed in more recent versions of Squeak; I'm developing at the moment under Squeak 4.3.
I have a project in which I'm adding sound to a longstanding body of artistic work implemented in Squeak. I'm going to need several sounds playing at once; typically there will be one or more instances of RepeatingSound and probably just one (or zero) MixedSound. When the MixedSound comes on I want to turn down the volume on the other sounds. How to do this. It has been driving me crazy. I was getting absolutely nothing to work to actually change the volume.
There seems to be the right method in AbstractSound -- adjustVolumeTo:overMSecs: -- but in Squeak 4.3 this seems to not be properly overridden in MixedSound or RepeatingSound. I was getting absolutely nothing to work until I stumbled onto changing leftVols and rightVols by brute force at an explorer. This DOES WORK.
leftVols and rightVols are instance variables in MixedSound, so it seems to me they should be changed by MixedSound's own implementation of adjustVolumeTo:overMSecs:. RepeatingSound should have its own implementation which just passes on to its sound.
Maybe there's a better way to do this, but given that AbstractSound does have the right method, it seems like overriding here is the right thing to do.
Comments?
-Thanks, Jim