]> git.sesse.net Git - ultimatescore/blobdiff - nageru/ultimate.lua
Some preliminary work on Sound Shark theming.
[ultimatescore] / nageru / ultimate.lua
index 0c2fe3210a4d0410718bf98857341734c0b0e968..4fff536b3973037e5979aa91b28f34c90431800e 100644 (file)
@@ -61,6 +61,7 @@ local iptv_video = VideoInput.new(futatabi_server, Nageru.VIDEO_FORMAT_YCBCR)
 iptv_video:change_rate(10.0)
 
 local static_image = ImageInput.new(cef_path .. "/nageru/dsn-bg.png")
+local first_frame = true
 
 function reload_cef()
        cef_input:reload()
@@ -689,6 +690,25 @@ function fetch_input_resolution(signals, signal_num)
        return res
 end
 
+function update_volume()
+       if Nageru.get_num_audio_buses() < 3 or
+          Nageru.get_audio_bus_name(2) ~= 'Sound Shark' then
+               -- We haven't loaded the right audio mapping.
+               return
+       end
+
+       if first_frame then
+               Nageru.set_audio_bus_fader_level_db(2, -math.huge)
+               first_frame = false
+       end
+
+       local volume_db = Nageru.get_audio_bus_fader_level_db(2)
+       if Nageru.get_audio_bus_mute(2) or volume_db < -100.0 then
+               volume_db = -100.0
+       end
+       cef_input:execute_javascript_async("set_sound_shark_volume_db(" .. volume_db .. ")")
+end
+
 local last_rate = 0.0
 
 -- API ENTRY POINT
@@ -708,6 +728,10 @@ local last_rate = 0.0
 -- want to set (through set_int() etc.). The parameters will be snapshot
 -- at return time and used during rendering.
 function get_scene(num, t, width, height, signals)
+       if num == 0 then
+               update_volume()
+       end
+
        local input_resolution = {}
        for signal_num=0,(NUM_CAMERAS-1) do
                input_resolution[signal_num] = fetch_input_resolution(signals, signal_num)