Skip to content

feat: support MP3, AAC, M4A, WMA, and FLAC notification sounds - #118

Open
GraysonCAdams wants to merge 7 commits into
SamsidParty:mainfrom
GraysonCAdams:pr/multi-format-audio
Open

feat: support MP3, AAC, M4A, WMA, and FLAC notification sounds#118
GraysonCAdams wants to merge 7 commits into
SamsidParty:mainfrom
GraysonCAdams:pr/multi-format-audio

Conversation

@GraysonCAdams

Copy link
Copy Markdown

Stacked on #116 and #117 - this diff includes those commits until they merge; only the multi-format-audio commits at the end are new here.

Notification sounds were limited to WAV because playback went through the old Win32 PlaySound API via System.Media.SoundPlayer. Switched to Windows.Media.Playback.MediaPlayer, which is backed by Media Foundation and natively decodes all of the above in addition to WAV.

The sound-import file picker also now offers one combined "Audio Files" filter instead of a separate entry per extension. IgniteView.FileDialogs turned out to wrap Native File Dialog Extended, whose filter spec is comma-separated rather than semicolon-separated (confirmed by decompiling the DLL) - the first attempt at combining the filter matched nothing until that was corrected.

Grayson Adams added 7 commits August 18, 2026 09:48
Logo44.png and Logo150.png were single flat bitmaps with no scale-100/125/150/200/400 variants, so Windows had to upscale them for any display above 100% DPI, producing a blurry Start Menu tile and taskbar icon. Regenerated all scale variants directly from the existing IconVector.svg vector master instead of upscaling the small PNGs.
System.Media.SoundPlayer (a thin wrapper over the WAV-only Win32 PlaySound API) could only ever play WAV files. Replaced it with Windows.Media.Playback.MediaPlayer, which is backed by Media Foundation and natively decodes all of the above on a stock Windows install - no new dependency, the project already references the WinRT projections this needs. Also broadened the sound import file picker, extension checks, and file discovery glob to match; the custom_sound_path storage convention already preserved arbitrary extensions correctly. Verified end to end (not just compiled) by playing real WAV/MP3/M4A/WMA/FLAC files through the exact same code path.
Was one FileFilter per extension, which listed each format separately in the dialog dropdown. Verified via reflection that the two-arg FileFilter constructor stores Name/Pattern verbatim (no reformatting), and that the existing single-extension convention already uses bare, semicolon-joinable extension strings - so a single filter with a semicolon-joined pattern matches the same convention already proven working.
The combined Audio Files filter was matching nothing (mp3 etc only showed under All Files) because the semicolon-joined pattern was wrong for this dialog library. Decompiled IgniteView.FileDialogs.dll to confirm: FileFilter.Pattern passes straight through to NFDFilterU8.Spec with zero transformation, and the underlying native library is Native File Dialog Extended (NFDe), whose documented spec format is comma-separated extensions, not semicolon-separated. Also names the filter with the actual supported extensions listed out, e.g. Audio Files (WAV, MP3, AAC, M4A, WMA, FLAC), so they are visible without opening the dropdown.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant