@@ -169,30 +169,33 @@ TrackImpl::midi_channel (int32 midichannel) // TODO: implement
169
169
emit_notify (" midi_channel" );
170
170
}
171
171
172
- void
172
+ bool
173
173
TrackImpl::mute (bool new_mute)
174
174
{
175
175
mute_ = new_mute;
176
176
set_chain_volumes ();
177
177
emit_notify (" mute" );
178
+ return true ;
178
179
}
179
180
180
- void
181
+ bool
181
182
TrackImpl::solo (bool new_solo)
182
183
{
183
184
solo_ = new_solo;
184
185
set_chain_volumes ();
185
186
emit_notify (" solo" );
187
+ return true ;
186
188
}
187
189
188
- void
190
+ bool
189
191
TrackImpl::volume (double new_volume)
190
192
{
191
193
volume_ = new_volume;
192
194
// TODO: display this value if track volume is changed in the UI
193
195
// printf ("Track '%s' -> set volume to %f dB\n", name().c_str(), AudioChain::volume_db (new_volume));
194
196
set_chain_volumes ();
195
197
emit_notify (" volume" );
198
+ return true ;
196
199
}
197
200
198
201
void
@@ -211,7 +214,10 @@ TrackImpl::set_chain_volumes()
211
214
212
215
bool have_solo_tracks = false ;
213
216
for (const auto & track : all_tracks)
214
- have_solo_tracks = have_solo_tracks || track->solo ();
217
+ {
218
+ auto track_impl = dynamic_cast <Ase::TrackImpl*> (track.get ());
219
+ have_solo_tracks = have_solo_tracks || track_impl->solo ();
220
+ }
215
221
216
222
for (const auto & track : all_tracks)
217
223
{
@@ -233,6 +239,25 @@ TrackImpl::set_chain_volumes()
233
239
}
234
240
}
235
241
242
+ void
243
+ TrackImpl::create_properties ()
244
+ {
245
+ // chain to base class
246
+ DeviceImpl::create_properties ();
247
+ // create own properties
248
+ auto getvolume = [this ] (Value &val) { val = volume (); };
249
+ auto setvolume = [this ] (const Value &val) { return volume (val.as_double ()); };
250
+ auto getsolo = [this ] (Value &val) { val = solo (); };
251
+ auto setsolo = [this ] (const Value &val) { return solo (val.as_double ()); };
252
+ auto getmute = [this ] (Value &val) { val = mute (); };
253
+ auto setmute = [this ] (const Value &val) { return mute (val.as_double ()); };
254
+ PropertyBag bag = property_bag ();
255
+ bag.group = _ (" Mix" );
256
+ bag += Prop (getvolume, setvolume, { " volume" , _ (" Volume" ), _ (" Volume" ), 1 ., " " , { 0 ., 2 }, STANDARD });
257
+ bag += Prop (getsolo, setsolo, { " solo" , _ (" Solo" ), _ (" Solo" ), false , " " , {}, STANDARD + String (" :toggle" ) });
258
+ bag += Prop (getmute, setmute, { " mute" , _ (" Mute" ), _ (" Mute" ), false , " " , {}, STANDARD + String (" :toggle" ) });
259
+ }
260
+
236
261
static constexpr const uint MAX_LAUNCHER_CLIPS = 8 ;
237
262
238
263
ClipS
0 commit comments