Sound on servo movement

  • Is it possible to add sound to the movement of a servo to add realism in the TMD file ?
    I'm thinking of the retracted landing gear or the canopy.
    With the "soundlinear" object, I can apply a sound to the movement of a servo but it is not symmetrical.

    SIMU : EasyFly 4 | AeroFLy 5.7 | RC7 | RC8 | RC9| RC10 | FS2
    RADIO : Graupner MC-18 | Easy Commander | Jeti DC14 | Flysky i6S FS-i6 | Flysky FS SM001
    SYSTEM : Windows 10 64bits | Intel Core i9-10900KF, 10x 3.70GHz |MSI MPG Z490 Gaming Plus |NVIDIA GeForce RTX 3060 MSI Gaming X Trio 12Go | 32 Go DDR4-3200 G.Skill RipJaws V | 2 *1To Crucial P1 (SSD M2) | 1*2To USB

    Jaria-simulator | 360 ° panoramas of RC airfields
    Youtube channel | TMD genrerator Jaria

  • Yes but not out of the box if I remember correctly. Please try if the servo .OutputSpeed is possible or not, it might not be implemented but worth a check.

    Manual way:
    For each servo that you want to add a sound to you need a second servo with somewhat high speed that uses the first servo as an input. You then need to subtract the output of the first and second servo and are left with a small deviation when ever the first servo is currently moving. You then have to scale this small deviation with soundmappings to get the volume and pitch and feed that to your soundloop.

  • thank you Jet-Pack

    I tried OutputSpeed on inputId and VolumeID, but nothing works.
    Only this example works, and it's not symmetrical. (Volume off in the center)

    <[int32][sound][1]
          <[string8][object][soundlinear]
               <[uint32][PositionID][Fuselage.R]>
               <[uint32][VelocityID][Fuselage.V]>
               <[uint32][InputID][ServoLinearTest.Output]>
               //<[uint32][VolumeID][ServoLinearTest.Output]>
               <[string8][SoundFile][electric02.wav]>
               <[float32][InputMin][0.0]>
               <[float32][InputMax][1.0]>
               <[float32][VolumeMin][0.0]>
               <[float32][VolumeMax][1.0]>
               <[float64][FrequencyMin][0.5]>
               <[float64][FrequencyMax][1.5]>
               <[float64][VolumeOffset][0.0]>
               <[float64][VolumeModulation][1.0]>
           >       
       >

    SIMU : EasyFly 4 | AeroFLy 5.7 | RC7 | RC8 | RC9| RC10 | FS2
    RADIO : Graupner MC-18 | Easy Commander | Jeti DC14 | Flysky i6S FS-i6 | Flysky FS SM001
    SYSTEM : Windows 10 64bits | Intel Core i9-10900KF, 10x 3.70GHz |MSI MPG Z490 Gaming Plus |NVIDIA GeForce RTX 3060 MSI Gaming X Trio 12Go | 32 Go DDR4-3200 G.Skill RipJaws V | 2 *1To Crucial P1 (SSD M2) | 1*2To USB

    Jaria-simulator | 360 ° panoramas of RC airfields
    Youtube channel | TMD genrerator Jaria

    Edited 2 times, last by jparia (March 11, 2026 at 12:42 PM).

  • I also read that it's possible to add a sound to the wheels rolling.

    Skidding and high-speed wheel rotation sounds for the A350 in Aerofly FS.

    Is it possible to implement this in Aerofly RC?

    SIMU : EasyFly 4 | AeroFLy 5.7 | RC7 | RC8 | RC9| RC10 | FS2
    RADIO : Graupner MC-18 | Easy Commander | Jeti DC14 | Flysky i6S FS-i6 | Flysky FS SM001
    SYSTEM : Windows 10 64bits | Intel Core i9-10900KF, 10x 3.70GHz |MSI MPG Z490 Gaming Plus |NVIDIA GeForce RTX 3060 MSI Gaming X Trio 12Go | 32 Go DDR4-3200 G.Skill RipJaws V | 2 *1To Crucial P1 (SSD M2) | 1*2To USB

    Jaria-simulator | 360 ° panoramas of RC airfields
    Youtube channel | TMD genrerator Jaria

  • Try using the mixlinear instead

    Pseudo code:

    Dynamics
    Servo1
    Servo2 with Input Servo1.Output
    mixlinear DifferenceServo1And2
    output DifferenceServo1And2

    Sound
    input DifferenceServo1And2
    soundmapping VolumeServo1
    sound_loop...

    If the wheel rotation speed is available then you can use that as a sound. Check if any graphics part actually uses the wheel rotation speed but I don't think that is used in Aerofly RC, only in Aerofly FS.

  • Sorry, i can't find any information on how to implement "soundmapping" and "sound_loop" in the wiki.


    Code
    <[int32][sound][1]
          <[string8][object][soundlinear]
               <[uint32][PositionID][Fuselage.R]>
               <[uint32][VelocityID][Fuselage.V]>
               <[uint32][InputID][MixServoRudderSound.Output]>
               <[uint32][VolumeID][MixServoRudderSound.Output]>
               <[string8][SoundFile][electric02.wav]>
           >       
       >

    SIMU : EasyFly 4 | AeroFLy 5.7 | RC7 | RC8 | RC9| RC10 | FS2
    RADIO : Graupner MC-18 | Easy Commander | Jeti DC14 | Flysky i6S FS-i6 | Flysky FS SM001
    SYSTEM : Windows 10 64bits | Intel Core i9-10900KF, 10x 3.70GHz |MSI MPG Z490 Gaming Plus |NVIDIA GeForce RTX 3060 MSI Gaming X Trio 12Go | 32 Go DDR4-3200 G.Skill RipJaws V | 2 *1To Crucial P1 (SSD M2) | 1*2To USB

    Jaria-simulator | 360 ° panoramas of RC airfields
    Youtube channel | TMD genrerator Jaria

  • To make your mixlinear output value available in the sound you need to add an output object:

    Code
            <[string8][object][output]
                <[string8][Name][MixServoRudderSoundOutput]>
                <[string8][Input][MixServoRudderSound.Output]>
            >

    In the sound section you can read in that value with the soundinput object:

    Code
            <[string8][object][soundinput]
                <[string8][Name][MixServoRudderSound]>
                <[uint32][InputID][MixServoRudderSoundOutput.Output]>
            >


    The soundloop isn't used all that much in Aerofly RC but here are a couple of aircraft/helicopters that do use it:

    blade700x, dr1micro, goblin700, soxos600, 700 and 800.

    Here is an example code snippet from the goblin700

    The soundinput reads the value from the physics and makes it available in the sound secion

    The soundmapping is a list of value pairs:
    The x component is the input,
    The y component is the output at that input value

    So for the RPMVolume in the example above the volume is zero when the rotation speed is 0.0 or below. When the rotation speed reaches 1400 rad/s then the output volume is 0.2 or 20%. Values in between are interpolated linearly.

    The RPMPitch in the example rises up with increasing RPM, where the pitch is the playback speed, 1.0 or 100% would play the sound file at original speed. 0.2 plays it at 20% or very slowly at low pitch. 2.0 or 2x speed is reached when the rotation speed reaches 4000 rad/s.

    Note: 1.0 RPM = 0.10471975512 rad/s <=> 1.0 rad/s = 9.549296585514 RPM

    You can also use a soundmultiply object to multiply two mappings together in the sound section. This is good to combine two conditions that have to be met at the same time, for example in a sideslip AND at high speed or in this case when blade angle of attack is high AND rotation speed is high.

    Code
            <[string8][object][soundmultiply]
                <[string8][Name][BladeVolumeMult]>
                <[string8][Input0][BladeVolume.Output]>
                <[string8][Input1][BladePitchVolume.Output]>
            >