AUDIO_SAMPLE_RATE_EXACT is a constant. You need to recompile to change it.
On Teensy 4, the I2S ports run from a clock generated by PLL4, also called the Audio PLL. PLL4 runs in a range between 650 to 1300 MHz and can be programmed with better than 1 Hz resolution. That high frequency goes through a number of configurable integer divisions to become the audio clock. The end result is you can create pretty much any audio clock you want with very high resolution. The dividers have to be integers, but the ultimate PLL4 source is a very high frequency with very fine adjustability.
Frank wrote this code which set PLL4. Here is the relevant code, which you can see uses AUDIO_SAMPLE_RATE_EXACT as the beginning of its calculation of the PLL4 settings.
int fs = AUDIO_SAMPLE_RATE_EXACT;
// PLL between 27*24 = 648MHz und 54*24=1296MHz
int n1 = 4; //SAI prescaler 4 => (n1*n2) = multiple of 4
int n2 = 1 + (24000000 * 27) / (fs * 256 * n1);
double C = ((double)fs * 256 * n1 * n2) / 24000000;
int c0 = C;
int c2 = 10000;
int c1 = C * c2 - (c0 * c2);
set_audioClock(c0, c1, c2);
The set_audioClock() function is in
utility/imxrt_hw.cpp, where it just configures the hardware with those computed numbers. The PLL4 hardware registers are documented in the
reference manual starting on page 1110. Documentation about the various clock dividers and other clock configuration is also in that chapter of the manual. We generally use the same register names in the source code as shown in the manual, so if you find code writing to a hardware register, usually you can just search the huge PDF for that name to get right to the specific documentation for each hardware feature.
The main issue is you can't change the PLL4 settings while it's running. Or at least NXP's documentation says you can't. Whether it can actually / somehow update while running and if it can, how smoothly it might do so, or if shutting it off and changing settings quickly and restarting work well enough are sort of open questions which haven't been explored.
I want to emphasize using PLL4 in creative ways is a matter of experimentation. As you can see in the existing code Frank wrote, so far we've only ever used it the simplest way where it's configured just once at startup and then remains running with that setting.
Hopefully this message can save you some time searching for the relevant tech details and help you get up to speed quickly. This question of dynamically altering the sample rate comes up occasionally, so when / if you do get into this sort of experimentation, I hope you'll share whatever you learn along the way.