Howto:Reload sound configuration without restarting: Difference between revisions

From FlightGear wiki
Jump to navigation Jump to search
(I encountered this problem on the concatenation of paths, "~" it is not enough you need to insert the character "/" then I replaced "~" with the string ~ '/' ~)
Line 12: Line 12:
   if(sf == nil)
   if(sf == nil)
   {
   {
     sf = getprop('/sim/fg-root') ~ getprop('/sim/sound/path');
     sf = getprop('/sim/fg-root') ~ '/' ~ getprop('/sim/sound/path');
     setprop('/tmp/sound-xml/path', sf);
     setprop('/tmp/sound-xml/path', sf);
   }
   }

Revision as of 16:30, 11 September 2015

As a massive timesaver for those working on sound configuration files, the following piece of nasal code can be entered in the nasal console (found on the Debug menu.)

fgcommand("reinit", props.Node.new({ subsystem: "fx" }))

Every time that line is executed, the sound subsystem ("fx") is restarted and the config file reloaded, enabling you to test your changes instantly. Just remember to actually save your sound config file each time you want to test so that FG sees the most recent changes.

Here is a Nasal function which will automatically reload the sound xml file when you make a change...

 var reload_sound = func {
  var sf = getprop('/tmp/sound-xml/path');
  if(sf == nil)
  {
    sf = getprop('/sim/fg-root') ~ '/' ~ getprop('/sim/sound/path');
    setprop('/tmp/sound-xml/path', sf);
  }
  var st = io.stat(sf);
  var lm = getprop('/tmp/sound-xml/modified');
  if(lm == nil)
  {
    lm = st[9];
    setprop('/tmp/sound-xml/modified', lm);
  }
  elsif(lm < st[9])
  {
    setprop('/tmp/sound-xml/modified', st[9]);
    fgcommand('reinit', props.Node.new({ subsystem: "fx" }));
  }
  settimer(reload_sound, 2);
 }
 reload_sound();