Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Aller à la page:  1 2 Page suivante
Page: 1 sur 2
Quake 3 Arena pas de son
Envoyé par: YuGiOhJCJ

Bonjour,
je suis sous Slackware 11.0.
J'ai le jeu vidéo Quake 3 Arena.
J'ai le kernel 2.6.19
$ uname -r
2.6.19
J'ai les drivers ALSA
$ lsmod | grep snd
snd_seq_dummy           2948  0
snd_seq_oss            30592  0
snd_seq_midi_event      5632  1 snd_seq_oss
snd_seq                47728  5 snd_seq_dummy,snd_seq_oss,snd_seq_midi_event
snd_seq_device          6668  3 snd_seq_dummy,snd_seq_oss,snd_seq
snd_pcm_oss            47104  0
snd_mixer_oss          15616  1 snd_pcm_oss
snd_intel8x0           28700  1
snd_ac97_codec         91808  1 snd_intel8x0
snd_ac97_bus            2048  1 snd_ac97_codec
snd_pcm                72456  3 snd_pcm_oss,snd_intel8x0,snd_ac97_codec
snd_timer              19460  2 snd_seq,snd_pcm
snd                    47108  12 snd_seq_dummy,snd_seq_oss,snd_seq,snd_seq_device,snd_pcm_oss,snd_mixer_oss,snd_intel8x0,snd_ac97_codec,snd_pcm,snd_timer
soundcore               5984  1 snd
snd_page_alloc          8072  2 snd_intel8x0,snd_pcm
Je suis sous KDE (il utilise arts).
J'ai essayé comme je fais habtuellement :
aoss quake3
Pour lancer un jeu avec le son géré par Alsa.
Mais rien à faire je n'ai pas de son.
Que faire?
Merci.

---

[yugiohjcj.cf]

Poste le Friday 23 February 2007 20:08:44
Répondre     Citer    
Re: Quake 3 Arena pas de son
Envoyé par: nicola

Vire artsd et lance Quake 3 normalement.
Vérifie que tu as bien /dev/dsp.

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Friday 23 February 2007 20:50:22
Répondre     Citer    
Re: Quake 3 Arena pas de son
Envoyé par: YuGiOhJCJ

Je viens de 'virer' arts grâce à l'utilitaire pkgtool de ma Slackware.
Plus de son sous KDE, normal, mais toujours pas de son sous Quake.
Mon périphérique /dev/dsp est présent:
$ ls -l /dev/dsp
lrwxrwxrwx 1 root root 9 2007-02-23 13:29 /dev/dsp -> sound/dsp
$ ls -l /dev/sound/dsp
crw-rw--w- 1 root audio 14, 3 2007-02-23 13:29 /dev/sound/dsp
Je précise que je suis sur un PC portable et ma carte son est une Intel :
$ cat /proc/asound/cards
 0 [ICH6           ]: ICH4 - Intel ICH6
                      Intel ICH6 with unknown codec at 0xc8000800, irq 11
$ /sbin/lspci | grep Audio
00:1e.2 Multimedia audio controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (rev 04)
Aussi, j'arrive à faire tourner un autre jeu avec le son America's Army. TeamSpeak fonctionne ainsi que dosbox.
Mais le son ne veut pas sortir avec Quake3Arena.
Que faire?

---

[yugiohjcj.cf]

Poste le Friday 23 February 2007 21:43:11
Répondre     Citer    
Re: Quake 3 Arena pas de son
Envoyé par: YuGiOhJCJ

J'ai quand même du son par moments à Quake 3 Arena mais ils est très sacadé...Pourquoi?

---

[yugiohjcj.cf]

Poste le Friday 23 February 2007 21:50:34
Répondre     Citer    
Re: Quake 3 Arena pas de son
Envoyé par: nicola

Lance-le à partir d’une console et regarde ce qu’il dit.
Peut-être qu’une application accapare /dev/dsp, ou alors tu n’es pas dans le groupe audio.

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Saturday 24 February 2007 07:42:04
Répondre     Citer    
Re: Quake 3 Arena pas de son
Envoyé par: YuGiOhJCJ

Oui effectivement : on me dit que le son système est muet :
------- sound initialization -------
------------------------------------
----- Sound Info -----
sound system is muted
    1 stereo
16384 samples
   16 samplebits
    1 submission_chunk
22050 speed
0x8bd3338 dma buffer
No background file.
----------------------
Sound memory manager started
Par contre je fais parti du groupe audio :
$ groups
users floppy audio video cdrom
et quand je lance quake 3 sans "aoss" ça me donne ça :
------- sound initialization -------
/dev/dsp: Device or resource busy
Could not open /dev/dsp
------------------------------------
Sound memory manager started
Pourquoi mon son est considéré sur muet même avec aoss?
Pourtant j'entend bien le son de toutes mes autres applications...

---

[yugiohjcj.cf]

Poste le Saturday 24 February 2007 16:29:36
Répondre     Citer    
Re: Quake 3 Arena pas de son
Envoyé par: nicola

OK, que dit fuser -v /dev/dsp ?

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Saturday 24 February 2007 16:44:22
Répondre     Citer    
Re: Quake 3 Arena pas de son
Envoyé par: YuGiOhJCJ

Rien du tout :
bash-3.1$ fuser -v /dev/dsp
bash-3.1$
C'était sensé me dire quoi?

---

[yugiohjcj.cf]

Poste le Saturday 24 February 2007 17:48:41
Répondre     Citer    
Re: Quake 3 Arena pas de son

Il faillait lancer la commande
fuser -v /dev/dsp
sous root (via su ou sudo). Ca donne le processus qui accède à /dev/dsp. RTFM pour les détails donc
man fuser
(une page de man se défile par les flêches et se quitte par la touche q).

----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Saturday 24 February 2007 17:52:22
Répondre     Citer    
Re: Quake 3 Arena pas de son
Envoyé par: nicola

Que dit fuser -v /dev/snd/* ?

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Saturday 24 February 2007 17:53:23
Répondre     Citer    
Re: Quake 3 Arena pas de son
Envoyé par: YuGiOhJCJ

En root c'est pareil :
bash-3.1# fuser -v /dev/dsp
bash-3.1#
Pourquoi le son est si saccadé avec quake 3 arena et pas avec d'autres applications? Y a t'il une solution?

---

[yugiohjcj.cf]

Poste le Sunday 25 February 2007 02:50:33
Répondre     Citer    
Re: Quake 3 Arena pas de son
Envoyé par: nicola

Que dit fuser -v /dev/snd/* ?
Il me semble que Quake 3, comme les autres applications utilisant OSS, n’aiment pas non plus que la ressource ALSA soit utilisée. Sinon, peut-être que Quake 3 sait utiliser directement ALSA, voire SDL, va voir dans le fichier de configuration et ses bibliothèques.

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Sunday 25 February 2007 08:04:59
Répondre     Citer    
Re: Quake 3 Arena pas de son
Envoyé par: YuGiOhJCJ

Voilà ce que ça dit :
# fuser -v /dev/snd/*

                     USER        PID ACCESS COMMAND
/dev/snd/controlC0:  yugiohjcj   1454 F.... kmix

/dev/snd/pcmC0D0p:   yugiohjcj   1410 F...m artsd
                     yugiohjcj   1735 F...m artsd

/dev/snd/timer:      yugiohjcj   1410 f.... artsd
Sinon, je pense que c'est possible de savoir ce qu'utilise quake 3 arena vu que le source code est en GPL maintenant sur ce site:
[ftp.idsoftware.com]
Mais les fichiers de conf et les lib ne donnent pas grand chose.
Mon code ci-dessus t'aide pour savoir pourquoi je n'ai pas de son (et parois saccadé)?

---

[yugiohjcj.cf]

Poste le Friday 2 March 2007 18:04:20
Répondre     Citer    
Re: Quake 3 Arena pas de son
Envoyé par: YuGiOhJCJ

Après avoir téléchargé les sources, je découvre :
linux_snd.c
/*
===========================================================================
Copyright (C) 1999-2005 Id Software, Inc.

This file is part of Quake III Arena source code.

Quake III Arena source code is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.

Quake III Arena source code is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Foobar; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
===========================================================================
*/
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <sys/shm.h>
#include <sys/wait.h>
#ifdef __linux__ // rb0101023 - guard this
#include <linux/soundcard.h>
#endif
#ifdef __FreeBSD__ // rb0101023 - added
#include <sys/soundcard.h>
#endif
#include <stdio.h>

#include "../game/q_shared.h"
#include "../client/snd_local.h"

int audio_fd;
int snd_inited=0;

cvar_t *sndbits;
cvar_t *sndspeed;
cvar_t *sndchannels;

cvar_t *snddevice;

/* Some devices may work only with 48000 */
static int tryrates[] = { 22050, 11025, 44100, 48000, 8000 };

static qboolean use_custom_memset = qfalse;
// [zerowing.idsoftware.com] 
void Snd_Memset (void* dest, const int val, const size_t count)
{
  int *pDest;
  int i, iterate;

  if (!use_custom_memset)
  {
    Com_Memset(dest,val,count);
    return;
  }
  iterate = count / sizeof(int);
  pDest = (int*)dest;
  for(i=0; i<iterate; i++)
  {
    pDest = val;
  }
}

qboolean SNDDMA_Init(void)
{
	int rc;
    int fmt;
	int tmp;
    int i;
    // char *s; // bk001204 - unused
	struct audio_buf_info info;
	int caps;
	extern uid_t saved_euid;

	if (snd_inited)
		return 1;

	if (!snddevice) {
		sndbits = Cvar_Get("sndbits", "16", CVAR_ARCHIVE);
		sndspeed = Cvar_Get("sndspeed", "0", CVAR_ARCHIVE);
		sndchannels = Cvar_Get("sndchannels", "2", CVAR_ARCHIVE);
		snddevice = Cvar_Get("snddevice", "/dev/dsp", CVAR_ARCHIVE);
	}

	// open /dev/dsp, confirm capability to mmap, and get size of dma buffer
	if (!audio_fd) {
		seteuid(saved_euid);

		audio_fd = open(snddevice->string, O_RDWR);

		seteuid(getuid());

		if (audio_fd < 0) {
			perror(snddevice->string);
			Com_Printf("Could not open %s\n", snddevice->string);
			return 0;
			}
	}

	if (ioctl(audio_fd, SNDCTL_DSP_GETCAPS, &caps) == -1) {
		perror(snddevice->string);
        Com_Printf("Sound driver too old\n");
		close(audio_fd);
		return 0;
	}

	if (!(caps & DSP_CAP_TRIGGER) || !(caps & DSP_CAP_MMAP)) {
		Com_Printf("Sorry but your soundcard can't do this\n");
		close(audio_fd);
		return 0;
	}


	/* SNDCTL_DSP_GETOSPACE moved to be called later */
    
	// set sample bits & speed
  dma.samplebits = (int)sndbits->value;
	if (dma.samplebits != 16 && dma.samplebits != 8) {
        ioctl(audio_fd, SNDCTL_DSP_GETFMTS, &fmt);
        if (fmt & AFMT_S16_LE) 
			dma.samplebits = 16;
        else if (fmt & AFMT_U8) 
			dma.samplebits = 8;
    }

	dma.speed = (int)sndspeed->value;
	if (!dma.speed) {
        for (i=0 ; i<sizeof(tryrates)/4 ; i++)
            if (!ioctl(audio_fd, SNDCTL_DSP_SPEED, &tryrates)) 
				break;
        dma.speed = tryrates;
    }

	dma.channels = (int)sndchannels->value;
	if (dma.channels < 1 || dma.channels > 2)
		dma.channels = 2;
        
/*  mmap() call moved forward */

	tmp = 0;
	if (dma.channels == 2)
		tmp = 1;
    rc = ioctl(audio_fd, SNDCTL_DSP_STEREO, &tmp);
    if (rc < 0) {
		perror(snddevice->string);
        Com_Printf("Could not set %s to stereo=%d", snddevice->string, dma.channels);
		close(audio_fd);
        return 0;
    }

	if (tmp)
		dma.channels = 2;
	else
		dma.channels = 1;

    rc = ioctl(audio_fd, SNDCTL_DSP_SPEED, &dma.speed);
    if (rc < 0) {
		perror(snddevice->string);
        Com_Printf("Could not set %s speed to %d", snddevice->string, dma.speed);
		close(audio_fd);
        return 0;
    }

    if (dma.samplebits == 16) {
        rc = AFMT_S16_LE;
        rc = ioctl(audio_fd, SNDCTL_DSP_SETFMT, &rc);
        if (rc < 0) {
			perror(snddevice->string);
			Com_Printf("Could not support 16-bit data.  Try 8-bit.\n");
			close(audio_fd);
			return 0;
		}
    } else if (dma.samplebits == 8) {
        rc = AFMT_U8;
        rc = ioctl(audio_fd, SNDCTL_DSP_SETFMT, &rc);
        if (rc < 0) {
			perror(snddevice->string);
			Com_Printf("Could not support 8-bit data.\n");
			close(audio_fd);
			return 0;
		}
    } else {
		perror(snddevice->string);
		Com_Printf("%d-bit sound not supported.", dma.samplebits);
		close(audio_fd);
		return 0;
	}

    if (ioctl(audio_fd, SNDCTL_DSP_GETOSPACE, &info)==-1) {   
        perror("GETOSPACE");
		Com_Printf("Um, can't do GETOSPACE?\n");
		close(audio_fd);
		return 0;
    }

	dma.samples = info.fragstotal * info.fragsize / (dma.samplebits/8);
	dma.submission_chunk = 1;

	// memory map the dma buffer

  // TTimo 2001/10/08 added PROT_READ to the mmap
  // [zerowing.idsoftware.com]
  // checking Alsa bug, doesn't allow dma alloc with PROT_READ?

	if (!dma.buffer)
		dma.buffer = (unsigned char *) mmap(NULL, info.fragstotal
			* info.fragsize, PROT_WRITE|PROT_READ, MAP_FILE|MAP_SHARED, audio_fd, 0);

  if (dma.buffer == MAP_FAILED)
  {
    Com_Printf("Could not mmap dma buffer PROT_WRITE|PROT_READ\n");
    Com_Printf("trying mmap PROT_WRITE (with associated better compatibility / less performance code)\n");
		dma.buffer = (unsigned char *) mmap(NULL, info.fragstotal
			* info.fragsize, PROT_WRITE, MAP_FILE|MAP_SHARED, audio_fd, 0);
    // NOTE TTimo could add a variable to force using regular memset on systems that are known to be safe
    use_custom_memset = qtrue;
  }

	if (dma.buffer == MAP_FAILED) {
		perror(snddevice->string);
		Com_Printf("Could not mmap %s\n", snddevice->string);
		close(audio_fd);
		return 0;
	}

	// toggle the trigger & start her up

  tmp = 0;
  rc  = ioctl(audio_fd, SNDCTL_DSP_SETTRIGGER, &tmp);
	if (rc < 0) {
		perror(snddevice->string);
		Com_Printf("Could not toggle.\n");
		close(audio_fd);
		return 0;
	}

  tmp = PCM_ENABLE_OUTPUT;
  rc = ioctl(audio_fd, SNDCTL_DSP_SETTRIGGER, &tmp);
	if (rc < 0) {
		perror(snddevice->string);
		Com_Printf("Could not toggle.\n");
		close(audio_fd);

		return 0;
	}

	snd_inited = 1;
	return 1;
}

int SNDDMA_GetDMAPos(void)
{
	struct count_info count;

	if (!snd_inited) return 0;

	if (ioctl(audio_fd, SNDCTL_DSP_GETOPTR, &count) == -1) {
		perror(snddevice->string);
		Com_Printf("Uh, sound dead.\n");
		close(audio_fd);
		snd_inited = 0;
		return 0;
	}
	return count.ptr / (dma.samplebits / 8);
}

void SNDDMA_Shutdown(void)
{
}

/*
==============
SNDDMA_Submit

Send sound to device if buffer isn't really the dma buffer
===============
*/
void SNDDMA_Submit(void)
{
}

void SNDDMA_BeginPainting (void)
{
}

Donc j'ai l'impression que OSS est utilisé d'après cette source.
Que faire pour que le son soit meilleur?

---

[yugiohjcj.cf]

Poste le Friday 2 March 2007 18:15:14
Répondre     Citer    
Re: Quake 3 Arena pas de son
Envoyé par: YuGiOhJCJ

Aussi, j'ai trouvé ça dans l'aide pour Linux de quake 3 arena, un fichier officiel founri avec le jeu :
The sound doesn't work / sound crashes

The first thing to check is that it is actually a sound related. Run the game with +set s_initsound 0 and see what happens. All problems reported so far about sound turned out to be OS/drivers. Listed below:

On some Mandrake distributions:
Check if you are running the enlightenment sound daemon (esd). With ps aux | grep esdfor instance. It is a multiplexer for /dev/dsp, and might block use of /dev/dsp by Quake III Arena. You can disable esd with esdctl stop (as root).

Mandrake 8's default sound drivers seem broken, installing the Alsa drivers or the [www.opensound.com] drivers fixes the problem.

Some beta Alsa drivers have been reported to crash with Q3. Non-beta ones are fine.

VIA chipset and AC97 driver:
This combination is known to have various issues. They have been fixed in recent drivers (thanks to Arne Schmitz for the heads up):

[sourceforge.net] has got the up to date version of 
the AC97 kernel driver. The current version can be found here:

[prdownloads.sourceforge.net]

It has working mmap sound, so Q3 shouldn't be a problem any more.

(thanks to Arne Schmitz for the heads up)
Peut être que ça peut vous aider à résoudre mon problème...

---

[yugiohjcj.cf]

Poste le Friday 2 March 2007 18:18:57
Répondre     Citer    
Re: Quake 3 Arena pas de son
Envoyé par: nicola

Tue artsd sans pitié.

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Friday 2 March 2007 18:36:14
Répondre     Citer    
Re: Quake 3 Arena pas de son
Envoyé par: YuGiOhJCJ

Déjà fait voir les topics précédents :
Citation
YuGiOhJCJ
Je viens de 'virer' arts grâce à l'utilitaire pkgtool de ma Slackware.
Plus de son sous KDE, normal, mais toujours pas de son sous Quake.
Donc je ne pense pas que c'est la solution. Une autre idée pour mon problème de son?

---

[yugiohjcj.cf]

Poste le Saturday 3 March 2007 09:54:36
Répondre     Citer    
Re: Quake 3 Arena pas de son
Envoyé par: nicola

Ton message immédiatement après le mien te dit qu’artsd est lancé. Tue-le par un moyen ou par un autre.

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Saturday 3 March 2007 18:20:35
Répondre     Citer    
Re: Quake 3 Arena pas de son
Envoyé par: YuGiOhJCJ

Oui bien sûr, après avoir remarqué que retirer arts ne reglait pas mon problème je l'ai ensuite réinstallé.
Je viens donc de le retirer et de taper la commande :
# fuser -v /dev/snd/*

                     USER        PID ACCESS COMMAND
/dev/snd/controlC0:  yugiohjcj   2512 F.... kmix

Je remarque donc que kmix pose problème.
Je le quitte:
# fuser -v /dev/snd/*
Je lance quake 3 arena. Mais toujours le problème de son. Que faire?

---

[yugiohjcj.cf]

Poste le Friday 9 March 2007 17:44:17
Répondre     Citer    
Re: Quake 3 Arena pas de son
Envoyé par: nicola

Vérifie quelle sortie audio Quake 3 utilise.
Vérifie aussi qu’aucune application utilisant /dev/dsp* ne traîne (même commande).

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Friday 9 March 2007 19:21:49
Répondre     Citer    
Aller à la page:  1 2 Page suivante
Page: 1 sur 2

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Quake 3 Arena pas de son
Vous voulez savoir si votre matériel est supporté par Linux, ou vous avez un problème pour installer un module ? Ce forum est pour vous !
Nouveau sujet sur ce forum

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons