The short answer is to just use the default pins and work the rest of your project around those I2S pins being consumed for digital audio. Using any other pins for I2S is quite hard to do, and even if you go to all that trouble, it will only buy you a very limited set of not-so-satisfying alternatives.
Now if you don't like the short answer, and from your question I'm imagining you won't, maybe you're ready to dig into the rather difficult work to discover only very limited choices?
You first stop is at the schematic, to translate the Arduino pin numbers to Freescale's native port names.
https://www.pjrc.com/teensy/schematic.html
As an example, LRCLK uses pin 23, which is PTC2 on the chip. Everything in Freescale's documentation will be in terms of PTC2, not pin 23 as used in Arduino.
The next step is the MK20DX256 reference manual.
https://www.pjrc.com/teensy/datasheets.html
The info you seek is in chapter 10, in a huge table which starts on page 207.
As you scroll through the table, you'll find PTC2 near the top of page 209.
Every pin can be configured to do 1 of up to 8 possible things. In this case of PTC2, 7 of the 8 slots are filled. If configured to ALT7 the pin will do nothing. You can see in the table that ALT6 is "I2S0_TX_FS". Again, slightly different names are used, but "FS" and "LRCLK" mean the same thing, at least within the context of the I2S port configured for normal I2S mode. In some of the other modes, particularly TDM mode, "FS" would be a much more appropriate name....
So, if you want to find another choice, you need to scan through this giant table to find another pin which offers "I2S0_TX_FS" on any of its 8 functions. No amount of wishful thinking will let any other pin work. Inside the chip there's a "FS" signal wanting to get out to your I2S chip, but it can only get to the outside world though pins where one of the 8 ALT# configurations actually connects that signal inside the chip to the pin's driver circuitry.
A quick search shows the PTA13 (on page 208) and PTB19 (on page 209) are your only other options, other than the default on PTC2. I2S0_TX_FS doesn't appear anywhere else in the table, so there simply are no other pins on the entire chip with the physical ability to get this particular signal to you.
With this info, you go back to the schematic and find those pins. PTA13 is Arduino pin #3, and PTB19 is Arduino pin #30. Since pin 30 is one of not-as-easily-accessible bottom side pads, maybe you'd be more interested in pin 3.
Now in the last step, you would edit the I2S code. But before I describe this, it's essential you've followed these steps and understand the signal inside the chip can physically only connect to those 3 pins, using the ALT# settings described in that big table. The way the code looks might lead you to falsely believe you could configure other choices. You can indeed write any ALT# setting to any pin... but doing so will result in the signals described in that big table, because that's how Freescale internally wired the signals inside the chip.
In this case, the code happens to be at line 336 in output_i2s.cpp:
https://github.com/PaulStoffregen/Audio/blob/master/output_i2s.cpp#L335
Code:
// configure pin mux for 3 clock signals
CORE_PIN23_CONFIG = PORT_PCR_MUX(6); // pin 23, PTC2, I2S0_TX_FS (LRCLK)
CORE_PIN9_CONFIG = PORT_PCR_MUX(6); // pin 9, PTC3, I2S0_TX_BCLK
CORE_PIN11_CONFIG = PORT_PCR_MUX(6); // pin 11, PTC6, I2S0_MCLK
Fortunately the header files define convenient names for the pin config registers, so you don't need to go look those up in chapter 11. Since you know pin 3 supports this signal on ALT3, you could just change the first line to this:
Code:
CORE_PIN3_CONFIG = PORT_PCR_MUX(6); // pin 3, PTA13, I2S0_TX_FS (LRCLK)
As simple as this code looks, it's easy to get things wrong. You can change any pin to any of its 8 ALT# settings. That could result in very confusing problems if you mistakenly connect some other pin to whatever signal happens to be wired to its ALT setting within the chip.