KHR_audio_emitter: channel rule, default listener, scale rule, Opus, loopCount, linear-model validation, playing pointer - #5
Open
rudybear wants to merge 1 commit into
Conversation
…odec, loopCount, linear-model validation, playing pointer Implementation-informed changes from the layered-architecture work (KhronosGroup#2561), matching the review posted on KhronosGroup#2137: - normative channel behavior: positional emitters down-mix to mono per Web Audio mixing rules; global emitters play channels as authored - default listener defined (active camera / viewer pose; extensions may override) - node-scale rule adopted from KHR_lights_punctual (scale does not affect gain/attenuation; distances are world-space) - audio/ogg (Ogg Opus, RFC 7845) added as second base mimeType: MP3 cannot loop gaplessly, Opus can (+ multichannel) - loopCount (0 = infinite) on sources - linear distance model now requires explicit maxDistance > refDistance (default 0 sentinel divided by zero) - runtime-only 'playing' Object Model pointer for event-driven playback via KHR_interactivity / KHR_animation_pointer (rising edge restarts, false stops; demonstrated in the playable drum-kit asset linked from KhronosGroup#2561) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Concrete spec text for the feedback posted on KhronosGroup#2137 (comment), offered as a PR into this branch so it flows into the upstream PR if accepted. Every change is implementation-tested (Web Audio reference runtime + WebGPU viewer + a playable demo asset; links in KhronosGroup#2561). README + 2 schema files; no restructuring.
audio/ogg(Ogg Opus, RFC 7845) alongsideaudio/mpeg. MP3 encoder padding makes gapless loops impossible (acknowledged in the upstream thread); loop-intended audio SHOULD use Opus. Schema updated.loopCount(integer,0= infinite) on sources — matches Omniverse and engine baseline. Schema updated.distanceModel: "linear"now requires explicitmaxDistance > refDistance(the defaultmaxDistance: 0sentinel makes the linear formula divide by a negative).playingObject Model pointer — the smallest possible answer to the open event-driven-playback question: writingtrue(re)starts the source on every referencing emitter (rising edge restarts),falsestops, read = is-playing. Not serialized; exists only through the Object Model for KHR_interactivity / KHR_animation_pointer. This single pointer is what makes a playable-instrument asset expressible today — working demo (drum kit, ~180 KB) linked from Proposal: Layered Audio Extension Architecture — KHR_audio_emitter + KHR_audio_graph + KHR_audio_environment KhronosGroup/glTF#2561. If the WG prefers dedicated interactivity audio nodes instead, this item can be dropped independently of the rest.🤖 Generated with Claude Code
https://claude.ai/code/session_01GrRJ9hLK9L9HK5ZsJjNdw7