Quick answer: A sound to the player’s right plays in the left ear? The forward or up vector passed to audio_listener_orientation is wrong for your axis convention. Match it to the camera’s look + up.

An enemy to the player’s right plays its footsteps in the left speaker. The audio listener thinks it’s facing backward (or upside down).

Set Orientation Each Step

// 2D top-down, Y goes down
audio_listener_position(player.x, player.y, 0);
// look "into screen" along +Z, up along -Y
audio_listener_orientation(0, 0, 1,   0, -1, 0);

Forward (first 3) and Up (last 3) define the listener’s coordinate frame. Get them wrong and stereo is mirrored or inverted.

Match the Camera

In 3D, derive forward and up from the active camera’s look-at and up vectors — not from world axes. The listener should hear what the camera sees.

GameMaker Y-Down 2D

In 2D Y points down on screen but audio is right-handed. The fix above (forward +Z, up -Y) puts +X to the right ear consistently with the visuals.

Verifying

Place a sound source east of the player — it plays right. North/south correspond to volume falloff (no stereo cue in 2D vertical). Rotate the camera and the panning rotates with it.

“Listener orientation is a coordinate frame. Match forward and up to your camera or stereo flips.”

Update orientation every step alongside position — not once at startup — or a rotating camera will desync from audio.