- {
- SCM proc = get_property ("dynamicAbsoluteVolumeFunction");
-
- SCM svolume = SCM_EOL;
- if (ly_is_procedure (proc))
- {
- // urg
- svolume = scm_call_1 (proc, script_event_->get_property ("text"));
- }
-
- Real volume = robust_scm2double (svolume, 0.5);
-
- last_volume_
- = absolute_->volume_ = equalize_volume (volume);
- }
-
+ {
+ // Explicit dynamic script event: determine the volume.
+ SCM proc = get_property ("dynamicAbsoluteVolumeFunction");
+
+ SCM svolume = SCM_EOL;
+ if (ly_is_procedure (proc))
+ {
+ // urg
+ svolume = scm_call_1 (proc, script_event_->get_property ("text"));
+ }
+
+ Real volume = robust_scm2double (svolume, 0.5);
+
+ last_volume_
+ = absolute_->volume_ = equalize_volume (volume);
+ last_volume_initialized_ = true;
+ }
+
+ Audio_element_info info (absolute_, script_event_);
+ announce_element (info);
+ }
+
+ if (!last_volume_initialized_)
+ {
+ absolute_ = new Audio_dynamic ();
+
+ last_volume_
+ = absolute_->volume_ = equalize_volume (0.71); // Backward compatible
+ last_volume_initialized_ = true;
+