• 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.

North American V-Scale: PW Turbo Wasp JT8D Phase I

Messages
230
Country
unitedstates
Short, bullet points for now because typing sucks:

  • This is largely an academic exercise I am working on between my main projects for Open Rails.
  • This is probably the third or or fourth iteration of this project to use some recordings I made of a PW JT8D-17A on a Delta (ex-NCA) DC-9-51 in 2013 (October? I think it was October). My brother and I booked a flight to Hunstville, AL to visit the rocket museum as an excuse to fly on a DC-9 before retirement, basically. MSP=>ATL=>HSV, HSV=>ATL=>MSP. It's a laughable 27-minute flight, which is awesome for recording audio data (almost as cool as the E175/CRJ flights I book into and out of RST when I'm visiting friends these days and connecting in MSP). Basically, all previous attempts were falling short, and all my other JT8D sounds sucked anyway.
  • This isn't a "realistic sounds" project for the average simmer who watches too many movies and crappy YouTube cell phone videos. This is an "accurate sounds" project for people who know what these things are supposed to sound like.
  • Papers. Oh good lord. Too many papers. Blade passing frequency. Studies of sources and frequency bands of noise. What makes buzzsaw noise? Which harmonics matter? Which ones don't? Thanks, NASA! And I finally solved the mystery of why the JT8D-1/5/7 sound different (TL;DR, 30/42 vs 27/40 fan blades).
  • This project is being divided into three phases:
    • Phase I is being done with the FS9 sound engine for the sake of simplicity, and because FS9 runs like a violated rabbit on this computer. No directionality, no sound cones, just make it work.
    • Phase II will be done in P3D because MS screwed me on activation on my copy of FSXA gold many years ago and I'm not going to deal with FSX:SE's "let's bury the program folder 3,000 subfolders in" crap. Besides, the back-compatible code works in FSX anyway. It will be an adaptation of Phase II with added directional and distance scaling inside and outside the cabin plus the addition of turbine noise in the appropriate areas.
    • Phase III will be a more complete simulation in terms of figuring out how to program gauges to emulate certain sounds and possibly buy MSFS and figure out that whole... thing... I read the SDK and it sounds like they realized that MSTS had a better sound system and pretty much made the new XML-based system more or less like MSTS SMS code.
Old JT8D-17 project

I had started work on a sound package using my recordings ages ago, but it stalled due to a number of technical issues. The first was that people wouldn't shut up during startup and shutdown. I don't care about football; football sucks. The second issue was that, when running the audio through a parametric EQ and analyzing the data, it became readily apparent to me that the main reason I always had issues getting high-quality JT8D clips (read: recorded on devices that could capture, you know, bass) to blend together was that the JT8D emits a whole lot of bass frequencies... all the way down to idle... from both rotors. So, when you try to blend clips together, you're trying to mesh these vibration frequencies together, but the interval between them is different at every power setting. Constructive and destructive interference ensue. So I did some audio processing to stratify my clips into several categories:
  1. Low-frequency non-vibration content (which I earmarked for combustion)
  2. Vibration content linked to the N2 rotor
  3. Everything else, which I linked to the N1 rotor
This sounded decent, and, to solve the startup problem, I made the decision to not use conventional startup sounds, but instead to simulate both shafts down to near-zero RPM. Because MSFS sound code is stupid (see above), it means your only way of using N2 RPM on a turbine as a variable is to use combustion, which means the loop is deactivated when the engine is not running (contrary to the SDK, non-combustion does not work on turbine engines). This meant I had to compromise for the N2 rotor by using the N1 rotor ("jet_whine") and finding a crossover point that I would consider "normal-ish idle" on the N2 rotor, convert it to an N1 value, and then run the math below that value one way, and above it anther way (see "math" below). Any N2-related sounds crossing this point would need two entries, with a hidden crossfade to obscure the two different frequency curves above and below this "idle" value (which I set at around the CN2 idle value, assuming I'm interpreting what MSFS expects for idle CN2, which is the idle N2 value at ISA - around 7,000 RPM for the JT8D-17A).

I did some EQ work and did my best to extract the N2 rotor compressor noises from my recordings of the engines starting up and shutting down. I did some work with Goldwave's Doppler effect to make them more or less contant-pitch, and blended them as best I could. It sounded okay, actually it sounded better than I expected, and the sound from ignition to idle was almost a perfect match (so long as the N1/N2 tables were right and Table 1505 was more or less correct - physics friends, if you didn't adjust table 1505 - your time to RPM is off and this causes us sound developers all kinds of grief. You can't have good sounds without correct engines. From idle to max RPM sounded pretty close (again, physics friends, please adjust table 1505 empirically, the default one is upside down and causes the engines to behave the exact opposite of reality in terms of inertia/time to RPM), but therein was the perpetual bane of my existence... those stupid whooshing sounds.

A bit about Fletcher-Munson Curves

I'm not gonna get into this too much, but the basic gist is that human hearing sucks. Our hearing response gets flatter as volume increases, but in general, we are more sensitive to midrange frequencies than treble or bass. And here lies the rub... jet engines make lots of noise in the so-called "presence range." Broad-spectrum midrange noise transposing up or down sounds awful and is a dead giveaway that you're riding a train right through the uncanny valley. I did some parametric EQ work to lower the volume of the broad-spectrum noise and increase the volume of the frequency peaks, and it helped a bit, but... eh.

Dynamic Range

One of the many things that flight simmers don't understand (e.g., how many 737-200 airplanes in MSFS have JT8D-17R engines when almost all of the real ones had -7B or -9A engines and only 325 -17R/17AR engines were ever made... weird...) is dynamic range. Most MSFS sounds are way too loud because the instinct is to just maximize the volume of everything. This is one of the reasons why wind and reverse thrust sounds tend to sound a little anemic. Digital audio has a fixed maximum volume of 0dBFS. Everything must be mixed relative to this. You can certainly push audio sources above this limit if you want them to sound like a classic YouTube poop (that is, if you want them to clip and distort).

When I take the loudest recordings from the ATL-HSV leg, that is, takeoff and landing, and maximize them, the single loudest event that sets the overall maximum is the exhaust noise from reverse thrust. The average volume level of this section of audio was around -11dB. The sound of the engines on approach, by contrast, was a peak volume of -10dB and an average of -21dB. A 10dB reduction in volume (in this context, dB is one of those units that means 5,000 different things) means the volume on approach was 30% of the volume in reverse thrust. Peak takeoff volume was -4.84db, average was -15.22. 4dB lower, 63%. Idle peak, -17dB, average -28dB. -17dB, 14%. These are big volume swings. Big enough that I wouldn't dare leave an email address in the readme for fear of the "y U no volume idling?" emails from people who can't read (AKA flight simmers).

Eventually, real life got in the way. I went back to school, then a certain condiment-named hospital in Southeast Minnesota came calling, and I spent four years, you know, being a clinician and working on Open Rails projects. I also wasn't satisfied with the number of samples (I thought it was too many), the combustion sounds, the lingering midrange broad-spectrum noise problem, and the sounds below idle.

Here is a recording of the original project. I think I was using the TinMouse panel and testing with a 737: https://www.dropbox.com/scl/fi/0xhm...Test.mp3?rlkey=90tnudttruekbb9ehchry0bgk&dl=0

The Samples, Described

The audio samples were recorded on a pair of McDonnell Douglas DC-9-51 aircraft originally purchased by North Central Airlines before bouncing along, as most mutts do, through merger upon merger, into Delta's fleet. Handsomely decorated in the current (as of 2025) Delta livery, which can best be described as "hahaha Delta, you're wearing the 1980s bowling shoe livery and you don't even realize it, get bent Atlanta," the first DC-9, N766MC, had an engine cover that was misfit. I felt at home. The second DC-9 was of unknown number, because I didn't take any photos of it from outside, but in Atlanta we did see this:

Papers.JPG


All samples were recorded with a Zoom H2, set to medium gain, using the forward (90°) stereo capsules, mounted in my shirt pocket. I maintained a forward seating position during most phases of flight that were of interest for consistency (and my own comfort). Seating positions were purposely chosen ahead of time to get data on the decay of different frequency ranges with distance. Delta practice is reversed from typical as they start the left engines first, and neither my brother or I were interested in being on the aisle with a center seat, so we booked on the left side. I had the window seat outbound and the aisle seat inbound. Aircraft taxied out on one engine and we were fortunate to get good, clear, recordings of constant-RPM across most of the mid and higher RPM range (to around 60-odd percent on the N1 rotor) with a single engine, including the "meat grinder" noise the JT8D likes to make in the middle RPM ranges. The outbound flight was the more critical flight as it was the one where we were seated in row 25 and I was gathering close-proximity data with the inlet more or less in my ear. Inbound recordings were recorded overwing. I did some analysis with a parametric EQ in Goldwave to identify major harmonics and then N1 and N2 values were cross-referenced with cockpit clips on YouTube where engine gauges were visible to set the frequency curves. Again, see "math" below.

While we were in Huntsville, we also got this great photo of a light fixture mounted upside-down:

This side up.JPG


Note that the H2 settings noted above are what I always use when recording audio samples in the field unless I am recording something extremely loud or quiet. This allows for direct comparisons of volume levels.
 
Last edited:
Math

The following math will apply to all sections.

You need to understand something very important. There is a direct, linear relationship between RPM and pitch. This applies to both reciprocal engines and jet engines. The frequency of an engine running at twice the current RPM will, by necessity, be 200%. You'd think that we can just take a single sample, set up a frequency curve, and be done with it, but the harmonic content doesn't necessarily stay the same at different RPM levels. I am going to give you some not quite secrets here that I typically hide in the comments of my SMS code, but that hasn't really percolated to the MSFS sphere since I don't spend much time in it.

Reciprocating Engines

You need to get over and accept two facts. Don't whine about them, don't argue them (I have written the same stupid proof and posted the same stupid example videos a billion times, and I'm kind of sick of it), just accept them and move on:
  • Fact one: Because of resonances that develop in the exhaust pipe (my best guess is due to scavenging or the way that the total pressure wave propagates), you can calculate the exact RPM of an engine by the exhaust pulses so long as you know what cycle it is running on.
  • Fact two: For a two-stroke engine, this resonance creates a pulse wave every full cycle, that is, every revolution of the crankshaft. For a four-stroke engine, this happens every other cycle.
The way I do it is to pretend every lump I see in my audio editor is a snare drum hit. I take my audio sample, find the first peak, then backtrack just a bit to where the waveform crosses the zero point. I chop everything before that point. Then I count the total number of pulses, typically to a multiple of 8, usually 32 or 64, and I find the same zero-crossing spot after that last pulse. I chop everything after that. I fade out the last microsecond of the tails at both ends - just to ensure that last minuscule bazillionth of a second truly hits zero amplitude at the beginning and end - and usually the clip will loop itself without incident.

Here's where the math comes in. I'll add a cue point in Goldwave, then tell the program to place it at the end of the file. Then I can read that exact timestamp. I now know how many pulses in how many seconds. Let's say I have a four stroke engine, and it did 32 pulses in 3 seconds. 10.66... pulses per second. Times 120 (every other cycle, 4 stroke) is 1,280 RPM. If it were a two-stroke engine, it would be running at 640 RPM. With this knowledge, I could easily adjust the clip to any RPM value I wanted with some basic math:
  • multiplier = target RPM / clip RPM
You may wish to multiply this value by 100 for use in your audio editor. This is also how we would calculate frequency curve values in MSFS.

Turbine Engines
Turbine engines math a different way. They like to be different, not cliche. They say math and metal can never mix, but all of them can...

Actually, turbine math if you know your RPM values is pretty simple. Got a recording at 55% N1, need to scale it up to 65%? Just use the equation above. 65/55 = 1.182. You can literally just find YouTube videos with engine gauges visible, read the gauges, listen for a dominant frequency, find it on a parametric EQ, pitch your clip until it sounds close, find the same frequency, record its value, compare it to the value in the clip with the known RPM, then adjust your clip to match the known RPM using the equation above. Here's an example:
  1. I have YouTube clip A of SUPER COOL ENGINE B running at 65% N1. I record a quick audio sample of this engine at this RPM. I hear a really loud whine.
  2. In my audio editor, in my case Goldwave, I open up my parametric EQ. I notice a bunch of frequency peaks, but there's a really tall one at 1,500 Hz. I put the little mark for my frequency band on that peak, and crank the volume to see if the frequency that gets really loud is the one I remember hearing... and it is. Ouch.
  3. I take my clip, and I pitch it until it sounds about the same. I see a big peak at 1,437 Hz. I do the same parametric EQ thing, sure enough, it's the same peak, I just didn't pitch the clip as much as I should have.
  4. So I take the equation multiplier = target RPM / clip RPM and plug in the following values: 1500/1437. I get 1.044, so I pitch up my clip by 1.044%. Now I know my clip is exactly 65% N1. Easy peasy.
If I'm doing an N2 clip, and I'm using "jet_whine" to do stuff below idle, I do the following:
  1. Choose a "crossover value" where my "idle N2" is going to be. You will need one frequency curve from zero RPM to this value, then another one from this value to maximum RPM. The former will be much "steeper" than the latter because the N2 rotor typically idles much higher than the N1 rotor and has a narrower operating RPM band.
  2. Create the below-idle stream. Set it to fade out a single percent point above the crossover value, with the maximum volume at the crossover value, and zero point at crossover plus one percent.
  3. Create the above-idle stream. Set it to fade in a single percent point above the crossover value, with the zero point at the crossover value, and initial volume at crossover plus one percent.
  4. Create the rest of the volume curve of the above-idle stream as usual.
Anyway... if we want to get fancy, we'll need to review the more advanced math being used for the current project:

The main source of what we call "jet whine" is actually the fan on turbofan engines. It comes from what we call "blade passing frequency," which is (RPM*blade count)/60. The numerator yields cycles of the blades passing a single point per minute, dividing by 60 yields cycles per second, that is, hertz. Most modern turbofans have a single fan stage, but older engines like the JT8D have multiple fan stages. The first fan stage is by far the louder of the two, however, the second stage still makes a significant racket. One of the funny things about the JT8D is that the early JT8D-1/5/7 sounds completely different than the later -9/11/15/17. I had considered many reasons for this, for example, there was actually a significant bypass ratio change between the 7 and the 9 (lower), and I wondered if maybe this might have changed the ratio of core/fan noise. As it turns out, it's all in the fan blades. The JT8D-1/5/7 have 30 first stage blades and 42 second stage blades, so at 2850 RPM - which is about idle N1 - this yields blade passing frequencies for these stages of 1425 Hz and 1995 Hz respectively. The -9/11/15/17 have 27 and 40 blades, leading to 1282.5 Hz and 1900 Hz. On a whim, I opened up my DAW (Reaper) and put tone generators on four tracks, set them to those values, and... well, one pair sounded like a JT8D-7, the other sounded like a JT8D-9.

Early synthesized test clip 1. Jet noise mixed in with calculated JT8D-7B frequencies:

Early synthesized test clip 2. Jet noise mixed in with calculated JT8D-9 frequencies:

But wait! There's more. Those were just fundamentals. There are also harmonics to consider. Having read a few papers, give me some time and I'll try to remember to post some titles, the major harmonics propagated by gas turbine rotor and turbine stages are second and third-order harmonics. That is, the fundamental multiplied by a factor of two or three. Occasionally, at some RPM levels, multiples of four or 1.5 were noted. Bear this in mind.

There's even more, though! There are interactions between adjacent stages. The meat grinder sound at mid-RPM ranges is largely the result of the frequencies created by the interaction between the first and second fan stages. This interaction is, thankfully, easy to calculate. It's just the sum of the two values. For a JT8D-9 at idle, this frequency is 1282.5 + 1900 = 3182.5 Hz - and if you look at a frequency graph, it's a real loud one! As usual, second and third-order harmonics apply. There are interactions between all rotor stages.

As noted above, the JT8D is a bass-heavy engine. You wouldn't know this from a lot of video recordings because most modern digital cameras, even the pro ones, do poorly with audio. This is why I record audio with devices that are designed to record bands. They are, by nature, designed to handle high SPL and capture a reasonably-okay picture. The H2 uses small-diaphragm condenser microphones as opposed to dynamic microphones and also records treble frequencies well. Critical to all of this is that dedicated audio equipment won't apply signal compression like cameras do - thus preserving the dynamic range of the recorded audio provided the gain is set correctly. Most cameras attempt to maintain a consistent average volume and so increase volume during periods of quiet and decrease it during periods of loudness. This is... just no. The upshot of all of this is that most simmers have a distorted concept of what many jet engines sound like. Ironically, old VHS recordings seem to, for the most part, capture the balance of the frequency spectrum more accurately than most digital cameras and cell phones do.

Where the JT8D produces bass frequencies, aside from obvious considerations like mass flow noise at high RPM and combustion noise, is largely due to vibration, with the N2 rotor vibration dominating across most of the RPM range. This should come as a surprise to nobody, since this is the case with... every multi-spool engine ever. This is the exact same mechanism that produces the characteristic idle hum of a CFM56 or V2500. This noise propagates through the airframe. It tends to be louder with proximity, necessarily being loudest in the rear cabin of aircraft with fuselage-mounted engines, but beware: it is a significant source of noise with wing-mounted engines as well. It's just as apparent on a JT8D-powered 737 as it is on a CFM-powered 737. Anyone who says otherwise has only heard a JT8D-powered 737 through YouTube, and hasn't even watched any of the higher-quality videos where this sound is clearly audible in the 737-100/200 cabin.

But the N1 rotor is also a significant source of vibration. The vibration noise of the N1 rotor blends into the sound of the fan buzzsaw noise. Due to a variety of factors which I am not qualified to comment on (beyond the fact that I read what the experts have said and can summarize the basics), these two sounds are intrinsically linked because the non-linear way that the shockwaves formed by the supersonic tips of the fan blades at high RPM propagate out the inlet forms a pulse that is directly connected to engine RPM at the exact same frequency as engine vibration - that is, one cycle per rotation. Shaft vibration occurs at the same frequency due to a different mechanism, which is the basic impossibility of perfect rotor balance. The N1 rotor RPM, by the way, is audible all the way down to idle and below. It causes a weird wobbly noise as it interacts with the N2 rotor vibration in the lower middle RPM ranges:


Listen to that meat grinder grind, y0! The beat you hear in the bass range is the interaction between the N1 and N2 rotors. At takeoff RPM, the vibration/fan and N2 vibration form a nice, Sabbath-y tri-tone:


At MCT, this forms a C5 chord (perfect fifth):


Where vibration and buzzsaw noise differ is in harmonic content. Vibration tends to follow the same harmonic content guidelines as rotor noise - second and third order harmonics dominate, but at low RPM, expect to see much higher even-order multiples of second and third order harmonics (you know, like octaves, dude, pretend it's a guitar). Buzzsaw noise is all funky high-order harmonics and I don't quite understand what governs these yet. If I can figure out how to perfectly synthesize that...

Why has all of this been included in the math section? Simple: using all of this information, and a TCDS, you can calculate the exact spectrum of frequencies for any rotor at any RPM and then use that to figure out the exact RPM of your audio sample. No need to watch anyone's videos.

Building Frequency Curves

Rparams rparams blah blah blah.

I set point 1 at some stupid low RPM, like 50. I set point 2 at some stupid high RPM, like whatever 110% ought to be. Something that I know will be way out of the actual operating limits of the engine tables so I can guarantee that the pitch will be different at every single RPM value in-sim and that it will be correct at every single RPM value in-sim. Presuming I am working from known correct percentages and hard RPM numbers, the calculations are pretty simple. Let's say my idle N1 RPM clip is at 2850 RPM. I know that my low point will be 50 RPM, because I said so. From the TCDS, I know that the maximum N1 RPM for the JT8D-9 is 100.1%, or 8,600 RPM. From the JT8D Line and Base Training slides that PW made at some point, I know that 100% on the N1 rotor (all variants) is 8589 RPM, and from the 737 AMM I know that Disassemble Engine and Inspect Everything overboost RPM on the JT8D-9 is 8980 RPM. With the maximum RPM of the JT8D-17R/AR being 9,250 RPM, we can take 8980/8589 and then multiply the result by 9,250 to get 9,671 to approximate the Disassemble Engine and Inspect Everything RPM on the JT8D-17R/AR. Divide by 8589 to get 113%. So we need to set our maximum RPM value in the rparams to 1.13 and the FDE designer needs to set the maximum N1 values in the engine tables to 1.13. Obviously, the thrust values ought to be using CN1/CN2 and the end user needs to understand that the engines are flat rated and mashing F4 is not how takeoff thrust is set (that'll be the day). Those are huge overboost values way above what you'd use in practice and would yield ridiculous thrust under normal conditions and significant EGT overruns. But they approximate what would happen if you firewalled the thrust levers, which is something you wouldn't do in real life.

So, here's how we math the math. Our clip is at 2850 RPM. Point 1 is at 50 RPM. Easy. Our first value is just 50/8589 (100% N1 value), or .006. Our second value is 50/2850 (our clip value), or 0.018:

rparams=0.006, 0.018,

We know that value 3 is 1.13:

rparams=0.006, 0.018, 1.130,

For value four, we take 9671 (our calculated max RPM value!) divided by 2850 to get 3.393:

rparams=0.006, 0.018, 1.130, 3.393

Easy peasy. This is all the math we need to know to understand Phase I.
 
Last edited:
Phase I, Described

At some point in the last couple years, I was working on an abbreviated form of the JT8D-17 project that originally started as adding fan noise to Daniel Careri's sounds and correcting the frequency curve. The next thing you know, I was replacing his engine clips with mine, just with the LF content high passed, then I added in a simplified version of the N2 vibration, and before you know it, there wasn't anything left of Daniel's sounds, and I ended up back at the startup quagmire. I was pretty satisfied with the end result of this, and had actually simplified the N1 rotor down to 4 clips, plus the 2 streams with one clip for the N2 bearing noise, and then the combustion sounds. Here's a sample clip:


Something was missing, though - I consulted my brother, who likes airplanes, but isn't an expert. He was, however, on the DC-9 flights with me, and does know a fair bit about sound, being a fellow musician. He noted that the low-frequency content from the fan/N1 rotor was missing in the low RPM ranges. I earmarked this for a later improvement. The real hangup was startup/shutdown. Enter Phase I of the current project.

Phase I is effectively to finish up that sound set. Armed with the knowledge I have now, and using REAPER and the built-in tone generator effects, I have the ability to synthesize the rotor harmonic content at any RPM. Armed with this, and with reference videos to gather data on the relative volume of each harmonic at several RPM points down to very low RPM, I will be able to simulate the N2 rotor across its operating range. With the addition of combustion sounds, startup air, and such, this should allow for the synthesis of startup sounds within MSFS to be captured by Goldwave. The content of the audio streams will be as follows (per engine):

  • N1 Rotor (jet_whine)
    • 4 Primary samples, containing:
      • Compressor/fan blade passing noise
      • Fan buzzsaw noise
      • Inlet air noise
      • N1 vibration noise
    • 3 Secondary samples, containing:
      • N2 vibration noise (using compromise noted above)
      • Anti-Surge Bleed air (ideally a gauge would handle this but I am dumb)
      • Combustor sympathetic vibration (see "other noise sources" below)
  • N2 Rotor (combustion)
    • 2 combustor samples:
      • Low power, primarily 400Hz content, constant-pitch
      • High power, primarily broad-spectrum bass, constant-pitch
      • Ideally, these would be tied to throttle position, not engine RPM, and modulated by a gauge, but I am dumb
    • 1 N2 whine sample, not constant-pitch
  • Starter
    • Looped with looped section at max motoring (around 20% N2). Contains:
      • N2 whine
      • Starter air
      • Starter motor whine
    • DC-9 aft cabin includes second clip with igniter discharge EMF over intercom (IYKYK)
  • Combustion start
    • One shot that crossfades into idle combustion audio in FS9. FSX broke this functionality. Contains:
      • N2 whine
      • starter air fade-out
      • BWOOOOOORRRRRT sound of standing wave in combustor
      • PFFFT sound of ignition
      • Fade-out of starter motor whine
      • Fade-in of low-power combustion
  • Shutdown
    • One shot that crossfades out of idle combustion audio in FS9... again, FSX broke this. Contains:
      • N2 whine
      • Fade-out of low-power combustion
Other Noise Sources

Combustion graph.JPG

Figure 1, graph of combustor noise spectrum.

  • The JT8D makes this goofy noise around 1500-1600 Hz (it transposes up ever-so-slightly between low idle and 40% or so on the N1 rotor) around idle, which I have determined is probably a sympathetic vibration in the combustor. This is apparently a common phenomenon among jet engines. To be certain, I'd need to take one of my drum sticks to a JT8D and whack every part of the engine until something rings out at that frequency, so if any of you can help with that, by all means, let me know.
  • The primary source of the "whooshing" noise I mentioned above, that is, the broad-spectrum midrange noise, is good old-fashioned jet noise. This is the noise of air flowing into the engine and could be roughly conceptualized as inlet noise. This is particularly loud in front of the engine and is really loud to an outside observer in front of the airplane.
  • Combustion noise is not just broad-spectrum bass noise, at least not at low power. See Figure 1 above. The dominant frequency is 400Hz, with peaks around 600 Hz, 650 Hz, 850 Hz, and 925 Hz. A lot of the bass you hear at high RPM is probably just mass air flow noise.
  • Ever notice a subtle drinking straw noise in the low to mid power ranges? I'm pretty sure that's the anti-surge bleed system that dumps excess air into the bypass ducts, because I hear it in the exact ranges where I'd expect to hear that. Anyone wanna program Figure 2 into a gauge? 🙃
  • The thrust reversers on the JT8D make an audible whump when they stow. This is transmitted through the airframe and can be heard and felt.
  • Turbines. I did some cursory analysis of the sounds from the business end and noted that the outermost turbine stage seems to be the most audible one, which would be the last LPC stage. Will need to do further analysis when it comes to Phase II. Calculations for the blade passing frequency and frequency curves in sound.cfg are the same as with the compressor rotors. The sound regions for turbine noise are primarily in the donut-shaped region around and aft of the turbine itself (according to Rolls Royce, see Figure 3).
  • Note also that there are always aircraft-dependent system noises, such as inverters, cabin fans, cockpit fans, pneumatic sounds, air conditioning, APUs, and so on. To which extent this should be dependent on the aircraft sounds and to which extent this should be dependent on the panel is an open question. I am not sure how to address this in Phase I. A compromise will be likely.
  • We must also account for aerodynamic noise. Not just wind noise, but also the noise of slats, flaps, gear, spoilers, and such. Ideally, a gauge would handle this. I think it would have several components (each with a separate audio sample):
    • Component one would check the gear state and use a simple multiplier of indicated airspeed (aerodynamic noise is "molecule hitting airframe" dependent) to set volume level. Gear noise sample would have a loop set up for fade in/out.
    • Component two would multiply trailing edge flap percent by a ratio of indicated airspeed to some maximum indicated airspeed value (set by the programmer) to produce a total volume percent for the flap noise sample.
    • Component three would multiply slat/leading edge flap percent by a ratio of indicated airspeed to some maximum indicated airspeed value (set by the programmer) to produce a total volume percent for the slat/ leading edge flap noise sample.
    • Component four would multiply spoiler percent by a ratio of indicated airspeed to some maximum indicated airspeed value (set by the programmer) to produce a total volume percent for the spoiler noise sample.
    • I suspect I may need to learn how C works... unless XML can handle this somehow.

Anti-Surge.JPG

Figure 2, JT8D anti-surge bleed valve schedule.

Noise.JPG

Figure 3, turbofan noise regions.

Current Phase I Progress


The first Phase I test was a simple test of the N2 rotor sample in FS9. Some ambient noise was blended in so it sounded a little less funky: https://www.dropbox.com/scl/fi/tb76...test.mp3?rlkey=0p9kkcyf68gdzdpdrhrlmtea0&dl=0

Notice that there was a short aborted second start before motoring and starting engine 2. This is an advantage of just saying "to hell with it" and simulating the whole operating range. Note that engine 2 had its throttle slightly open at startup, another advantage over using "normal" startup clips.

The second step was adding in starter air, the starter motor whine, combustors, and jet/inlet noise. No more need for ambient sound to be blended in: https://www.dropbox.com/scl/fi/4na6...oise.mp3?rlkey=vu6mp6bx2dv3ux0l9dfwlpkvi&dl=0

Notice the sympathetic ringing noise just above idle.

By adding inlet noise I was getting into Phase III territory, and I decided to really quick synthesize the N1 rotor and add that in. The volume balance is way out between the rotors, but notice... no whooshing noises. This is because the broad-spectrum noise and rotor noise are completely separate. I just took my frequency data from the calculations, matched the volume levels of all the harmonics to the volume levels in each of my original clips, and synthesized matching clips with just the harmonic data, and paired them with the jet/inlet noise I was already using (which was created by removing the rotor noise from my original clips!): https://www.dropbox.com/scl/fi/oc2g...ests.mp3?rlkey=buldbqycek103xytndiua2tq1&dl=0

Next Steps:

The next steps are going to be to get the volume levels between the two rotors right. My hope is that toning down the volume of the N2 rotor will tame some of the pop/click sounds you're hearing in these samples (they're present in-sim). Then I can yank the N1-related stuff from sound.cfg, synthesize the N2 startup sounds, and get to work on wrapping up Phase I of the JT8D-9/1/15/17. With the existing N1 materials used to synthesize the early phase III data, I should also be able to create drop-in equivalent-RPM samples for the JT8D-1/5/7 as well. The hope is to have paired early/late small-fan JT8D sounds at each phase.

Because FS9 doesn't have the ability to fade sounds in/out with distance like FSX does, I will have to set the relative N1/N2 volume with maximum_volume parameters and offer multiple sound.cfg files for different aircraft and viewer positions, e.g., cabin, cockpit. Because of this, and because, again, the MSFS sound system is stupid (no relative file paths in sound.cfg, unlike MSTS), all samples will need to go in the main sound folder, with each sound.cfg being placed in a dedicated subfolder in the NAVS_Audio/PW_JT8D_Basic/ hierarchy in the /Aircraft folder. The installation zip will therefore need to have the whole hierarchy set up to be extracted into the base MSFS folder. I'm sure the general public won't screw that up at all (prior MSFS experience plus additional experience in Open Rails has totally not embittered this developer to any degree... really. 😉). I will also need to create a suite of engine tables, because you can't have good sounds without correct engine performance. I've got empirically-measured values for table 1505, but I need to get some CN1/CN2 values going, and I gotta do those stupid low mach/high mach tables. Thankfully I have all TSFC values and enough RPM values that I could probably interpolate a pretty good graph.

THE BIG GRAPH.JPG

Figure 3: Standard Day means this is all CN1/CN2, baby!

Test Cell.JPG

Figure 4: Uh-oh, someone added percent values I could totally use in an engine table...

Anticipated challenges:
  • The weak-sauce reverse thrust in FS2K and later. This is what happens when MSFT listens to FDE developers who argue over and over again that reverse thrust is too powerful in MSFS because it does something more than nothing, all because they flew on an Airbus once and confused idle reverse with full reverse just because it was loud (yeah, a huge mass of air flowing into a wall tends to be loud). I wonder if a gauge could fix this. If you can't power back at 1.2-1.3 EPR (normal breakaway reverse on the DC-9, it's in the friggin FCOM), what's the damn point?
    • You can set minimum throttle to higher values, but this doesn't really help, although it does adjust the maximum RPM values closer to what they should be. Maximum RPM is available on the JT8D in both forward and reverse thrust, contrary to what flight simmers think. This fact was implicated in at least one MD80 crash. Broadly speaking, limits on reverse thrust were the result of FADEC. No FADEC, no limits.
    • Idle reverse actually results in forward thrust in FS2K and later... WTF people.
    • Reverser_available is supposed to be a scalar value, but values above 1.0 do not seem to have any effect from my testing.
  • Engine tables. Physics has never been my strong suit in MSFS. Physics in OR is easy, physics in MSFS is like operating a steam engine blindfolded in a tornado with a screwdriver up your arse and a blood alcohol level some significant multiple of the legal limit. Also, you can only use one arm.
  • Getting people to read the manuals, but that's anticipated. The readme will have an entire "These will probably be FAQs" section, with #1 being "Y u engine pitch am so high?" and the answer being "did you use a chart to set takeoff RPM or did you mash F4? Maybe don't ever do that."
    • People are also going to have to copy/overwrite the tables in any aircraft using these sounds. Fact of life. Can't have good sounds without correct engines.
    • The file description will literally say "READ THE MANUALS OR THIS WILL NOT WORK!" and nothing else.
  • Dynamic range management is the #1 question on my mind right now. Do I make everything correct, knowing that people will complain instead of just turning their speakers up like the readme will say? Or do I compress the crap out of the reverse thrust sounds (the single loudest thing, see above) and hope it all works out okay? I dunno. What do you all think?
  • Integration of a "univeral" sound set into multiple user aircraft given the variety of panel configurations and accessory sounds - how to deal with the multitude of system sounds? Multiple editions for different panels/developers? I don't know yet. Maybe that's more of a Phase II problem.
I'm pretty sure of how I'm going to make this whole thing work... but questions, comments, and suggestions are welcome. I'm certainly not the greatest expert on anything. Note that my capacity to respond may be somewhat limited by, y'know, like, life and stuff.
 
Super informative technical breakdown as always Erick. I'd like to eventually learn the new MSFS sound system myself as it seems to be much more versatile than the old, config-driven ESP system. From what little I understand, any sim or local variable can be used to drive sound effects, which should allow finer control over all the little nuances of both jet and piston engines. Pre-combustion has always been the trickiest regime when it comes to making realistic sounds and actually simulating it in a more scientific/mathematical way really should be the norm now that we have the means to do so. Some developers even adjust their mix based on weather conditions or altitude which I find pretty neat as it adds another layer of variability to the flying experience.

In response to your open ended question about volume levels, I'm of the opinion that some compression relative to the real-world dB range of recorded samples is necessary. Due to the way that human ears respond to increasing volume (and as you explained in more detail in your first post) normalizing your loudest sound to a comfortable listening volume would render the more subtle sounds virtually inaudible. Something like reverse thrust could provide a few dB of extra "oomph" for contrast, but I'd say compressing the overall dynamic range just a bit would make for a more coherent and seamless soundscape. Just my 2 cents though.
 
Thanks! Sorry for the late reply. I've been working on a huge revision to the OR track sounds in concert with a member of the dev team, so it's been a lot of testing, giving feedback and bug reports, reading academic papers on volume levels, and so on. I've also been in the process of looking for a new job and figuring out this whole work permit/CUSMA thing as I'd like to live in Alberta for a bit to see if I like it up there (I have a friend in Edmonton and the weather is... better than the Midwest). So, I haven't had much time to work on this of late.

I think you're pretty close to the mark on dynamic range. The compromise I have been doing has been to aim for a very lightly compressed range - still much wider than used to be typical, but more manageable.

I tell ya what, I finally broke down and bought the PMDG 737 and Boris Vanian's sounds... if you're running the default PMDG sounds, which are certainly okay, but if you're not running Boris' sounds - hoo boy, you're missing out! I use a pair of powered studio monitors on my computer because I do so much audio editing and want a fairly flat frequency response, but the upshot is, it's a pretty faithful reproduction of whatever you shove into them, and they get plenty loud. Sometimes I just sit in the aft cabin and finagle the thrust levers to hear how well he captured the exhaust noise (correctly modulated with fuel flow, not RPM!) and the increase in N2 vibration volume with power. The new sound system is exactly what MSFS has needed all these years. Now, if they could just fix the broken reverse thrust model...
 
I've finished synthesizing the master clips for the N2 startup sounds, but haven't processed/looped them yet (the starter clip should have an infinite loop so that it holds in the loop point as long as the starter is held, much like thrust reverser or gyro samples). What I have done is more work on adjusting the relative volume levels of the blade passing noise, fan buzzsaw noise, vibration noise, and combustion noise using my recordings for reference:


As part of this, however, I learned something new: FS9 (and I'd wager FSX/ESP as well) cannot handle samples with large amounts of high-frequency content. The inlet air sample was generated from white noise, but biased towards the 7k-20k band as it shouldn't contribute much mid-frequency noise (there's already enough of that). Yet, when the sample is blended in with the engine sounds, the high-frequency content goes missing, and a whole bunch of mid-frequency content is added to the spectrum. I double-checked that fs9.cfg was set up to handle 44k, stereo audio, and it was. I double checked that my samples were set up correctly, and they were. Then, I isolated the sample as the sole sound source in the mix and recorded it. FS9 applied a gentle low-pass filter from 5k to 20k with a gradual rolloff, then somehow added a whole bunch of mid-frequency noise that isn't in the clip (which was high-passed at 5k):

SpectrumOriginalClip.JPG

The audio sample in question.

SpectrumInSim.JPG

As the sim plays it back.

Later on, I'll do some testing to see if FSX/P3D does this as well. I don't know what mechanism the sim uses to do this - it's almost like it's some sort of quantization noise. Either way, this high-frequency content is what's missing when compared to the real thing, and unfortunately, this noise increasing in volume is a rather large component of the noise during rapid power changes. I suspect when I get to FS2020/2024, the situation will improve.
 
Last edited:
I spent yesterday and today using a combination of the data posted above and audio analysis to create graphs of N1 v. N2 so I can get the intervals between the two rotors correct and to enable building the engine tables later. I did this in GMax, which is quite useful as a graphing tool so long as you're creative. Here's what I did:

  1. Convert percent data values in the big chart above to RPM data using the known 100% RPM values from the JT8D Line and Maintenance Training PDF
  2. Use a combination of RPM data and audio analysis to create a scatter plot for each engine with vertices, with N1 on the X axis and N2 on the Y axis
  3. Create a mesh from this data
  4. Use editable splines to create smooth curves linking the points together (the visible polygon edges make this easy)
  5. Add points to the curve as required to fill out the data, using the splines as a guide
  6. Slice plane vertically every 10% N2 up to 90%, then every 1% from 90% onwards
  7. Target weld vertices that are no longer needed
JT8D RPM Curves.PNG

Graph of JT8D N1 RPM (x) v. N2 RPM (y).

This creates a reasonably accurate curve of N1 to N2 for every 10% N2 up to 90%, where you will notice the curve changes drastically, necessitating coordinates every 1% N2 onwards. The comparisons between engine models are quite interesting. You can see that the JT8D-17R/AR derives its extra thrust entirely from increased RPM limits and that the curve is more or less straight from the top of the -17/17A curve to the new maximum RPM values. The JT8D-9, -11, and -15 all follow broadly similar curves. The -9 and -11 are identical until the very top of the curve, where the -11 has slightly higher N1 values for a given N2 value above 93% N2 (difficult to see in the graph, but the -9 curve bulges to the left here). The -17 and -17R follow a curve broadly similar to the JT8D-1/5/7 (these engines are really the same except that the -7 has more robust hot section components allowing for a flat rating at a higher temperature and the -5 is a reduced-RPM derate).
 
Here's your disturbing picture of the day:

Disturbing.JPG

Definition of a Turbofan Engine, from the Pratt & Whitney JT8D Line and Maintenance PowerPoint

I have synthesized the motoring and N2 start clips. They have been integrated into the WIP audio:


Things sound a little uncanny valley-ish with both engines running. I think this is because in real life the engine closer to you tends to drown out the other engine when you are actually sitting in the aft cabin. The 10-20Khz issue noted above is also a factor. But it's otherwise very close to my original recordings. The next step in the interior will be adding wind, touchdown, gear and other noises.

I also did a brief test with the exported -7B blade passing samples:


Yep, that sounds like a JT8D-7 all right!

From here, I moved on to the exterior. This was an early test:


I think it sounds awfully close, probably my best effort yet. After integrating the exterior startup and thrust reverser sounds, I ended up here:



I need to add another blade passing sample for the very low end of the N1 rotor, I think. This is also where the inherent limitations of the FS9 sound system become apparent: without the ability to blend close and distant sounds, or change the relative volume based on camera position with sound cones, things are pretty awkward, especially in a flyby, as these samples really represent the front of the engine at close range best. Things will improve when I make the jump to P3D and implement the 3D sound system.
 
Oh man, I am in a good mood for the first time ever about where a JT8D sound package is going. I added the low-end blade passing frequency noise, and now startup sounds pretty much spot-on:


I also started adding in the other sounds using clips from my travels, including multiple randomized touchdown sounds, aerodynamic noise, and so on:


Same replay, but from outside:


And again, but with the -7B blade passing samples:


Today, I used a recording of the flap noise as a guide for the frequency spectrum, and synthesized a clip by reading the peaks and their amplitudes, then using the tone generator in REAPER across 11 tracks to create the flap motor. I then looped it, did some Doppler work in Goldwave for the beginning and end, and assembled a final clip with cue points. I then opened this clip in Waveosaur to add the loop points that FS reads:


I'm pretty pleased so far.
 
More work off the checklist today; as indicated in the gauge design forum, I've been working on a gauge for aerodynamic noises. This gauge covers flaps, gear, slats, and speedbrakes (separate left and right streams due to the intrinsic nature of spoilerons). Here's a couple of in-sim samples:



I think the flap and gear drag is way too low on this 737-200 I am using to test... most FDE developers greatly underestimate flap drag. At 145 knots and even very light weights, I ought to be on the top end of the RPM range, close to 70-ish percent on the N1 rotor. So, in real life, the engines would have been screaming for sure!
 
Back
Top