New Solo Requirements?

I am now noticing that my “Solo” button no longer works. The “Mute” button, however, still works as before. I control both as shown below.

muteButton.onClick = [this, currentAudioTrack] { currentAudioTrack->setMute(! currentAudioTrack->isMuted(false)); };
soloButton.onClick = [this, currentAudioTrack] { currentAudioTrack->setSolo(! currentAudioTrack->isSolo(false)); };

Are there any new requirements for getting “Solo” to function?

It looks like a default may have changed. I am able to get “Solo” working by setting trackPtr->setSoloIsolate(false);. I was not doing anything with this before, so it must have been defaulting to false, and now it must default to true?

Anyway, the line above fixes it.

I don’t think anything like that has changed, I also think we’d have seen it in Waveform if it had because all the tracks would be solo-isolate if you create a new Edit.

Are you sure that if you create a new, empty, Edit now that isSoloIsolate is returning true?

It is a mystery because isSoloIsolate returns false on a new edit!?

All I am doing is shown below, I toggle the solo on and off with a button.

soloButton.onClick = [this, currentAudioTrack] { currentAudioTrack->setSolo(! currentAudioTrack->isSolo(false)); };

I do not use the solo isolate functionality anywhere in my code. And, I just did a global search of my entire DAW code base to verify that.

However, the past few days I noticed that the solo button has no effect. Adding the line setSoloIsolate(false) fixes it. It is simple enough. I just put that in my trackComponent constructor, and everything works as expected.

Perhaps Waveform loads defaults at startup or otherwise sets the value explicitly, so any change would go unnoticed?

I am good with the setSoloIsolate(false) fix. If I get time I will scan the tracktion_engine code base and see if I see anything there.

I think I came across something that partially explains what is going on.

I was looking at one of my edit data files and noticed that there is an soloIsolate=0 entry in the data file. I also noticed that in some cases this was soloIsolate=1!

 <TRACK id="1012" midiVProp="0.28125" midiVOffset="0.359375" colour="b2ff0000"
     mute="0" soloIsolate="1" solo="0" currentAutoParamPluginID="0"
     currentAutoParamTag="" name="Track1">```

So, the question now is where did that come from? I do not use solo isolate anywhere in my code.

Below is my code to save an edit.

if (te::EditFileOperations(*edit).getEditFile().existsAsFile())
	te::EditFileOperations(*edit).save(true, false, false);

My problem is already solved by setting setSoloIsolate(false) in my track’s constructor. But, it would be nice to know where these rogue soloIsolate=1 entries are coming from? Maybe there is some initialization that I am failing to do?

Well that is initialised to 0 by the CachedValue setSoloIsolated constructor and only settable via Audio/FolderTrack::setSoloIsolate so I’m not sure where your true values are coming from.

Are you sure they randomly show up? If so, perhaps put a breakpoint in Edit::TreeWatcher with the check to i == IDs::soloIsolate to see when it changes?

But again, it’s not something seen and I don’t think anything has changed for years in this area…