• Which the release of FS2020 we see an explosition of activity on the forun and of course we are very happy to see this. But having all questions about FS2020 in one forum becomes a bit messy. So therefore we would like to ask you all to use the following guidelines when posting your questions:

    • Tag FS2020 specific questions with the MSFS2020 tag.
    • Questions about making 3D assets can be posted in the 3D asset design forum. Either post them in the subforum of the modelling tool you use or in the general forum if they are general.
    • Questions about aircraft design can be posted in the Aircraft design forum
    • Questions about airport design can be posted in the FS2020 airport design forum. Once airport development tools have been updated for FS2020 you can post tool speciifc questions in the subforums of those tools as well of course.
    • Questions about terrain design can be posted in the FS2020 terrain design forum.
    • Questions about SimConnect can be posted in the SimConnect forum.

    Any other question that is not specific to an aspect of development or tool can be posted in the General chat forum.

    By following these guidelines we make sure that the forums remain easy to read for everybody and also that the right people can find your post to answer it.

FS2004 Shortwave Radio Volume Control

Messages
54
Country
us-florida
Good morning, everyone.

I'm wondering if someone would be willing to let me know where I may be going wrong. I'm trying to get volume control using Mr. Dawson's "dsd_fsx_xml_sound.gau" gauge. I've been able to program the ability to control volume as a whole, but you have to switch the audio off first and then turn it back on for the new volume setting to "kick-in" with the file.

What I'm trying to do is change the volume "on the fly" or "as you click" on the volume control area.

Also, I'm not able to use the value "13" so that the file doesn't go back to the beginning. I'm successfully using "8" and "0" to set the volume and play as well as to stop the sounds, but I can't get them to work with "13" which, if I understand correctly, picks up where the sound left off when you shut the thing off.

I'm also messing up the whole "3" use as well, which is why I went with "8" since it sets the volume as well. Or am I missing something?

The files are HUGE since it involves several wave files (mostly one per station, per callsign), so I'm wondering if my mistake is to think I can control ALL of them with only one set of code?

Here is a link to what it looks like: JRN-3 Shortwave Radio Just follow the link therein, but the post there also explains what I'm trying to do.

Here is part of the code for the mouse which I have for volume. This is part of the "main" gauge xml file with all the bmp files and such:

XML:
<!--  Volume Control  -->
    <Area Left="139" Top="375" Width="63" Height="62">
        <Tooltip>Volume: %((L:SW_Volume_Set, enum))%!6.2f!; %((L:SW_Volume, enum))%!6.2f!</Tooltip>
        <Cursor Type="Hand"/>
        <Click Kind="LeftSingle+RightSingle+WheelUp+WheelDown" Repeat="Yes">
            (M:Event) 'WheelDown' scmp 0 ==
            (M:Event) 'LeftSingle' scmp 0 == ||
            if{
                (L:SW_Volume_Set, enum) 3.33 - 0 max (&gt; L:SW_Volume_Set, enum)
                (L:SW_Volume, enum) -3000 &gt;
                    if{
                        (L:SW_Volume, enum) 100 - (&gt; L:SW_Volume, enum)
                        <!-- Make the knob rotate through 360 degrees -->
                        (L:SW_Volume_Knob, number) 1 - dnor (&gt;L:SW_Volume_Knob, number)
                    }
            }

            (M:Event) 'WheelUp' scmp 0 ==
            (M:Event) 'RightSingle' scmp 0 == ||
            if{
                (L:SW_Volume_Set, enum) 3.33 + 100 min (&gt; L:SW_Volume_Set, enum)
                (L:SW_Volume, enum) -1 &lt;
                    if{
                        (L:SW_Volume,enum) 100 + (&gt; L:SW_Volume,enum)
                        <!-- Make the knob rotate through 360 degrees -->
                        (L:SW_Volume_Knob, number) 1 + dnor (&gt;L:SW_Volume_Knob, number)
                    }
            }
        </Click>
    </Area>

Here is a snippet of the BBC and Cairo files. These are part of the "update" gauge, or "system" gauge:

XML:
<Gauge>
<Update>

<!-- There is code here which works. -->
<!-- It's too much to include, so I'm only puting in the sound section below -->

<!-- Play In Range Sounds, otherwise play static. -->
    1 (L:SW_Station_sound, bool) == <!-- If the audio switch is ON ... -->
    if{
        1 (L:Tx_Rng, bool) == <!-- ... and the aircraft is in range of the station ... -->
        if{ <!-- ... if BBC is tuned ... -->
            (L:SW_Freq_Set, number) (L:GSA_Freq_Set, number) ==
            (L:SW_Callsign, number) (L:GSA_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:GSB_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:GSB_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:GSC_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:GSC_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:GSD_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:GSD_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:GSE_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:GSE_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:GSF_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:GSF_Callsign, number) == ||
            if{ <!-- ... play the BBC sound ... -->
                0 (&gt; L:radio_static, number)
                8 (&gt; L:bbc_bigben_london, number)
                0 (&gt; L:reichssender_berlin_01, number)
                0 (&gt; L:radio_b_sw, number)
                0 (&gt; L:radio_c_sw, number)
                0 (&gt; L:radio_d_sw, number)
                0 (&gt; L:radio_e_sw, number)
                0 (&gt; L:radio_f_sw, number)
                0 (&gt; L:radio_g_sw, number)
                0 (&gt; L:radio_h_sw, number)
                0 (&gt; L:radio_i_sw, number)
                0 (&gt; L:radio_j_sw, number)
                0 (&gt; L:radio_cairo_01, number)
                0 (&gt; L:radio_cairo_02, number)
                0 (&gt; L:radio_rabat_01, number)
            } <!-- ... if Radio Cairo is tuned ... -->
            (L:SW_Freq_Set, number) (L:SUV_Freq_Set, number) ==
            (L:SW_Callsign, number) (L:SUV_Callsign, number) == ||
            if{ <!-- ... play the Cairo sound ... -->
                0 (&gt; L:radio_static, number)
                0 (&gt; L:bbc_bigben_london, number)
                0 (&gt; L:reichssender_berlin_01, number)
                0 (&gt; L:radio_b_sw, number)
                0 (&gt; L:radio_c_sw, number)
                0 (&gt; L:radio_d_sw, number)
                0 (&gt; L:radio_e_sw, number)
                0 (&gt; L:radio_f_sw, number)
                0 (&gt; L:radio_g_sw, number)
                0 (&gt; L:radio_h_sw, number)
                0 (&gt; L:radio_i_sw, number)
                0 (&gt; L:radio_j_sw, number)
                8 (&gt; L:radio_cairo_01, number)
                0 (&gt; L:radio_cairo_02, number)
                0 (&gt; L:radio_rabat_01, number)
            }<!-- ... if other Radio Cairo is tuned ... -->
            (L:SW_Freq_Set, number) (L:SUZ_Freq_Set, number) ==
            (L:SW_Callsign, number) (L:SUZ_Callsign, number) == ||
            if{ <!-- ... play the other Cairo sound ... -->
                0 (&gt; L:radio_static, number)
                0 (&gt; L:bbc_bigben_london, number)
                0 (&gt; L:reichssender_berlin_01, number)
                0 (&gt; L:radio_b_sw, number)
                0 (&gt; L:radio_c_sw, number)
                0 (&gt; L:radio_d_sw, number)
                0 (&gt; L:radio_e_sw, number)
                0 (&gt; L:radio_f_sw, number)
                0 (&gt; L:radio_g_sw, number)
                0 (&gt; L:radio_h_sw, number)
                0 (&gt; L:radio_i_sw, number)
                0 (&gt; L:radio_j_sw, number)
                0 (&gt; L:radio_cairo_01, number)
                8 (&gt; L:radio_cairo_02, number)
                0 (&gt; L:radio_rabat_01, number)
            }
        }

<!-- Here are other stations not included for space purposes. -->
<!-- The rest, however, is the rest of the update gauge code. -->

        1 (L:Tx_Rng, bool) != <!-- If not in range. -->
        if{ <!-- ... and if any of these are tuned ... -->
            (L:SW_Freq_Set, number) (L:GSA_Freq_Set, number) ==
            (L:SW_Callsign, number) (L:GSA_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:GSB_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:GSB_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:GSC_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:GSC_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:DJA_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:DJA_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:DJB_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:DJB_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:DJC_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:DJC_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:DJD_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:DJD_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:SUV_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:SUV_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:SUZ_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:SUZ_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:OER2_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:OER2_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:GSD_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:GSD_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:GSE_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:GSE_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:GSF_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:GSF_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:ORK_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:ORK_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:OXY_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:OXY_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:FYA1_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:FYA1_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:FYA2_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:FYA2_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:FYA3_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:FYA3_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:HAS_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:HAS_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:I2RO_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:I2RO_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:HVJ1_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:HVJ1_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:HVJ2_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:HVJ2_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:CNR2_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:CNR2_Callsign, number) == ||
            (L:SW_Freq_Set, number) (L:CNR1_Freq_Set, number) == ||
            (L:SW_Callsign, number) (L:CNR1_Callsign, number) == ||
            if{ <!-- ... give static sound ... -->
                8 (&gt; L:radio_static, number)
                0 (&gt; L:bbc_bigben_london, number)
                0 (&gt; L:reichssender_berlin_01, number)
                0 (&gt; L:radio_b_sw, number)
                0 (&gt; L:radio_c_sw, number)
                0 (&gt; L:radio_d_sw, number)
                0 (&gt; L:radio_e_sw, number)
                0 (&gt; L:radio_f_sw, number)
                0 (&gt; L:radio_g_sw, number)
                0 (&gt; L:radio_h_sw, number)
                0 (&gt; L:radio_i_sw, number)
                0 (&gt; L:radio_j_sw, number)
                0 (&gt; L:radio_cairo_01, number)
                0 (&gt; L:radio_cairo_02, number)
                0 (&gt; L:radio_rabat_01, number)
            } <!-- ... and if any of these are NOT tuned ... -->
            (L:SW_Freq_Set, number) (L:GSA_Freq_Set, number) !=
            (L:SW_Callsign, number) (L:GSA_Callsign, number) != ||
            (L:SW_Freq_Set, number) (L:GSB_Freq_Set, number) != ||
            (L:SW_Callsign, number) (L:GSB_Callsign, number) != ||
            (L:SW_Freq_Set, number) (L:GSC_Freq_Set, number) != ||
            (L:SW_Callsign, number) (L:GSC_Callsign, number) != ||
            (L:SW_Freq_Set, number) (L:DJA_Freq_Set, number) != ||
            (L:SW_Callsign, number) (L:DJA_Callsign, number) != ||
            (L:SW_Freq_Set, number) (L:DJB_Freq_Set, number) != ||
            (L:SW_Callsign, number) (L:DJB_Callsign, number) != ||
            (L:SW_Freq_Set, number) (L:DJC_Freq_Set, number) != ||
            (L:SW_Callsign, number) (L:DJC_Callsign, number) != ||
            (L:SW_Freq_Set, number) (L:DJD_Freq_Set, number) != ||
            (L:SW_Callsign, number) (L:DJD_Callsign, number) != ||
            (L:SW_Freq_Set, number) (L:SUV_Freq_Set, number) != ||
            (L:SW_Callsign, number) (L:SUV_Callsign, number) != ||
            (L:SW_Freq_Set, number) (L:SUZ_Freq_Set, number) != ||
            (L:SW_Callsign, number) (L:SUZ_Callsign, number) != ||
            (L:SW_Freq_Set, number) (L:OER2_Freq_Set, number) != ||
            (L:SW_Callsign, number) (L:OER2_Callsign, number) != ||
            (L:SW_Freq_Set, number) (L:GSD_Freq_Set, number) != ||
            (L:SW_Callsign, number) (L:GSD_Callsign, number) != ||
            (L:SW_Freq_Set, number) (L:GSE_Freq_Set, number) != ||
            (L:SW_Callsign, number) (L:GSE_Callsign, number) != ||
            (L:SW_Freq_Set, number) (L:GSF_Freq_Set, number) != ||
            (L:SW_Callsign, number) (L:GSF_Callsign, number) != ||
            (L:SW_Freq_Set, number) (L:ORK_Freq_Set, number) != ||
            (L:SW_Callsign, number) (L:ORK_Callsign, number) != ||
            (L:SW_Freq_Set, number) (L:OXY_Freq_Set, number) != ||
            (L:SW_Callsign, number) (L:OXY_Callsign, number) != ||
            (L:SW_Freq_Set, number) (L:FYA1_Freq_Set, number) != ||
            (L:SW_Callsign, number) (L:FYA1_Callsign, number) != ||
            (L:SW_Freq_Set, number) (L:FYA2_Freq_Set, number) != ||
            (L:SW_Callsign, number) (L:FYA2_Callsign, number) != ||
            (L:SW_Freq_Set, number) (L:FYA3_Freq_Set, number) != ||
            (L:SW_Callsign, number) (L:FYA3_Callsign, number) != ||
            (L:SW_Freq_Set, number) (L:HAS_Freq_Set, number) != ||
            (L:SW_Callsign, number) (L:HAS_Callsign, number) != ||
            (L:SW_Freq_Set, number) (L:I2RO_Freq_Set, number) != ||
            (L:SW_Callsign, number) (L:I2RO_Callsign, number) != ||
            (L:SW_Freq_Set, number) (L:HVJ1_Freq_Set, number) != ||
            (L:SW_Callsign, number) (L:HVJ1_Callsign, number) != ||
            (L:SW_Freq_Set, number) (L:HVJ2_Freq_Set, number) != ||
            (L:SW_Callsign, number) (L:HVJ2_Callsign, number) != ||
            (L:SW_Freq_Set, number) (L:CNR2_Freq_Set, number) != ||
            (L:SW_Callsign, number) (L:CNR2_Callsign, number) != ||
            (L:SW_Freq_Set, number) (L:CNR1_Freq_Set, number) != ||
            (L:SW_Callsign, number) (L:CNR1_Callsign, number) != ||
            if{ <!-- ... give static sound ... -->
                8 (&gt; L:radio_static, number)
                0 (&gt; L:bbc_bigben_london, number)
                0 (&gt; L:reichssender_berlin_01, number)
                0 (&gt; L:radio_b_sw, number)
                0 (&gt; L:radio_c_sw, number)
                0 (&gt; L:radio_d_sw, number)
                0 (&gt; L:radio_e_sw, number)
                0 (&gt; L:radio_f_sw, number)
                0 (&gt; L:radio_g_sw, number)
                0 (&gt; L:radio_h_sw, number)
                0 (&gt; L:radio_i_sw, number)
                0 (&gt; L:radio_j_sw, number)
                0 (&gt; L:radio_cairo_01, number)
                0 (&gt; L:radio_cairo_02, number)
                0 (&gt; L:radio_rabat_01, number)
            }
        }
    }
    els{ <!-- Otherwise the audio is off. -->
        0 (&gt; L:radio_static, number)
        0 (&gt; L:bbc_bigben_london, number)
        0 (&gt; L:reichssender_berlin_01, number)
        0 (&gt; L:radio_b_sw, number)
        0 (&gt; L:radio_c_sw, number)
        0 (&gt; L:radio_d_sw, number)
        0 (&gt; L:radio_e_sw, number)
        0 (&gt; L:radio_f_sw, number)
        0 (&gt; L:radio_g_sw, number)
        0 (&gt; L:radio_h_sw, number)
        0 (&gt; L:radio_i_sw, number)
        0 (&gt; L:radio_j_sw, number)
        0 (&gt; L:radio_cairo_01, number)
        0 (&gt; L:radio_cairo_02, number)
        0 (&gt; L:radio_rabat_01, number)
    }
<!-- Update Section Ends -->
</Update>
<!-- Close out the gauge. -->
</Gauge>

Sorry if the comments seem obvious. I'm not a programmer and I still find things easier if I "tell myself" things. Either that or my age!
;)

Thanks for any help or comments!

Saludos,

Jorge
Miami, FL
 
Nice project!

Did you solve the problem?

I wrote for an APU sound a similar gauge using the DSD - gauge.

Maybe you can post the DSD ini file.
 
Back
Top