- Add a patch to schismtracker that restores sound for

sound chips that lack hardware mixing capabilities.

OBS-URL: https://build.opensuse.org/package/show/multimedia:apps/schismtracker?expand=0&rev=4
This commit is contained in:
Jan Engelhardt 2010-08-30 23:46:32 +00:00 committed by Git OBS Bridge
parent fdd3f4c5ba
commit a3fb998b9f
3 changed files with 68 additions and 0 deletions

61
schism-alsa.diff Normal file
View File

@ -0,0 +1,61 @@
From: Jan Engelhardt <jengelh@medozas.de>
schism/audio: do not force "hw" ALSA device
Forcing direct hardware access using the "hw" device is incorrect
IMHO, especially so with sound chips that lack hardware mixing on any
of the three levels: (1) concurrent access to the hw device, (2) lack
of volume control, (3) lack of rate conversion.
"default" is the sane choice to have schism output to the converters
that handle any or all of these three points.
Developer Storlek claims problems with fake devices. Upon furhter
investigation, fake devices such as the ALSA plugins have a reason to
ignore it, or at least tinker with it. Consider my case with a
Realtek ALC259 (driven by snd-hda-intel) that fails (1) and (3):
By default, schismtracker asks for 1024 fragments and 44.1 kHz. If
the sound chip however does not support hardware mixing and can only
do, for example, 48 kHz, ALSA will automatically add converters into
the audio chain such that the program can still operate at 44100 Hz
without distorted sound.
1024 fragments of 128 bytes each are requested and thusly allocated,
that is, the sound buffer will be 128 kilobytes in total. This value
is taken at face - but for 48 kHz. The 44.1 kHz ALSA user thus only
gets a 44100/48000*131072 = 120422 byte buffer, or 940 fragments. The
rate conversion will then automatically interpolate the signal to
1024 fragments. (No distortions or lag ensues from this for me.)
So 940 is correct and the comment seemingly bogus.
Storlek still does not like changing "hw" :-(
A workaround is to call schismtracker with the "-a alsa:default"
option.
---
schism/audio_playback.c | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
Index: schismtracker/schism/audio_playback.c
===================================================================
--- schismtracker.orig/schism/audio_playback.c
+++ schismtracker/schism/audio_playback.c
@@ -1274,15 +1274,10 @@ static int _audio_open(const char *drive
if (SDL_InitSubSystem(SDL_INIT_AUDIO) < 0)
return 0;
- /* This is needed in order to coax alsa into actually respecting the buffer size, since it's evidently
- ignored entirely for "fake" devices such as "default" -- which SDL happens to use if no device name
- is set. (see SDL_alsa_audio.c: http://tinyurl.com/ybf398f)
- If hw doesn't exist, so be it -- let this fail, we'll fall back to the dummy device, and the
- user can pick a more reasonable device later. */
if (SDL_AudioDriverName(driver_name, sizeof(driver_name)) != NULL && !strcmp(driver_name, "alsa")) {
char *dev = getenv("AUDIODEV");
if (!dev || !*dev)
- put_env_var("AUDIODEV", "hw");
+ put_env_var("AUDIODEV", "default");
}
/* ... THIS is needed because, if the buffer size isn't a power of two, the dsp driver will punt since

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Mon Aug 30 23:41:58 UTC 2010 - jengelh@medozas.de
- Add a patch to schismtracker that restores sound for
sound chips that lack hardware mixing capabilities.
------------------------------------------------------------------- -------------------------------------------------------------------
Wed Feb 24 12:22:56 UTC 2010 - prusnak@suse.cz Wed Feb 24 12:22:56 UTC 2010 - prusnak@suse.cz

View File

@ -8,6 +8,7 @@ Summary: Music editor that aims to match the look and feel of Impulse Tra
#Hg-Clone: http://schismtracker.org/hg/ #Hg-Clone: http://schismtracker.org/hg/
Source: %{name}-%{version}.tar.bz2 Source: %{name}-%{version}.tar.bz2
Source1: %{name}.desktop Source1: %{name}.desktop
Patch1: schism-alsa.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: SDL-devel >= 1.2.10 BuildRequires: SDL-devel >= 1.2.10
BuildRequires: xorg-x11-devel BuildRequires: xorg-x11-devel