[squeak-dev] Adjusting the volume of a sound as it's playing

Stéphane Rollandin lecteur at zogotounga.net
Sun Aug 18 09:44:43 UTC 2019


> 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.

For the volume control to work in MixedSound, it seems you would have to 
replace the lines

	left := (leftVol * (leftVols at: i)) // ScaleFactor.
	right := (rightVol * (rightVols at: i)) // ScaleFactor.

with

	left := (leftVol * (leftVols at: i) * scaledVol) // ScaleFactor.
	right := (rightVol * (rightVols at: i) * scaledVol) // ScaleFactor.

in MixedSound>>#mixSampleCount:into:startingAt:leftVol:rightVol:

Does that work?

Stef


More information about the Squeak-dev mailing list