On 15/12/2024 13:50, Eli Zaretskii wrote: >> (defun load-file-into-unibyte-string (file-path) >> (with-temp-buffer >> (set-buffer-multibyte nil) >> (insert-file-contents file-path) >> (buffer-string))) >> >> (play-sound `(sound :data ,(load-file-into-unibyte-string "awav.wav") >> :volume 100)) > > What's wrong with insert-file-contents-literally? Nothing. So many functions... > >> + if (in_memory) >> + i_result = !PlaySound (psz_file_or_data, NULL, SND_MEMORY); > > AFAIU, the documentation seems to say that the string passed as the > first argument to PlaySound is limited to 256 characters (i.e. bytes)? > If so, how do we play longer sounds? I think this limitation applies only when the argument points to a string, and not when using SND_MEMORY, which is documented with: "The pszSound parameter points to a sound loaded in memory." It's true the documentation doesn't say so, and I haven't found any clarification by Microsoft, but SND_MEMORY would be useless otherwise. Also I see normal usage searching the internet. > Should we also use SND_SENTRY flag (on Vista and later)? Yes, done in the attached patch.