PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Lautstaerke in der Konsole



sage
16.06.03, 20:06
Hallo,
wenn ich mit meinem Notebook im Bett liege und per ssh auf meinem Desktop Musik laufen lasse stellt sich mir immer die Frage, wie ich die Systemlautstaerke in der Konsole aendere, da ich an die Boxen ja nicht rankomme. Kann mir da jemand weiterhelfen?

Danke

MajorPavian
16.06.03, 20:09
normalerweise dürfte das mit aumix gehen; welchen soundtreiber hast du den; alsa, oss,..?

Gruß
André

sage
16.06.03, 20:14
Ich habe eine Creative Soundblaster 128er on Board (genauer weiss ich nicht).
Im Kernel sind
Crystal Sound CS4281 und
Creative Ensoniq Audio PCI 97 (ES1371)

Seltsamerweise funktionierte das ganze nur mit Beiden. Fragt nicht warum...

Hilft dir das weiter?

zonendoedel
16.06.03, 21:16
Ich hatte für mich mal ein kleines Programm geschrieben.

// volume.cc
//

#include <stdlib.h>
#include <time.h>

//-------------------------------------------------------------------
#include <linux/soundcard.h>

#include <sys/types.h>
#include <sys/ioctl.h>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

#define DEV_MIXER "/dev/mixer"
#define MAX_VOLUME 95
#define MIN_VOLUME 05
#define RIGHT 0x01
#define LEFT 0x02

typedef struct stereovolume
{
unsigned char left;
unsigned char right;
unsigned char dummy[2];
} StereoVolume;

int mixer_fd;
int links,rechts;


//-------------------------------------------------------------------

static void get_laut(int descr,int *links,int *rechts)
{
StereoVolume volume;
int ergebnis;

*links = *rechts=0;


ergebnis=ioctl(descr, MIXER_READ(SOUND_MIXER_VOLUME), &volume) ;

if(ergebnis>=0)
{
*links = volume.left;
*rechts = volume.right;

if(*links>100)
*links =100;
if(*rechts>100)
*rechts =100;

}
} // get_laut



//-------------------------------------------------------------------

static void set_laut(int descr, int links, int rechts)
{
StereoVolume volume;
int ergebnis;
volume.left = links;
volume.right = rechts;
ergebnis = ioctl(mixer_fd, MIXER_WRITE(SOUND_MIXER_VOLUME), &volume);
ergebnis = ioctl(mixer_fd, MIXER_WRITE(SOUND_MIXER_PCM), &volume);

} // set_laut

//-------------------------------------------------------------------

//-------------------------------------------------------------------

static void setze_direkt(char *string_wert)
{
int zahl,gelungen;

gelungen = sscanf(string_wert,"%d",&zahl);
if(gelungen<=0)
return;
if(zahl<0 || zahl > 100)
return;

if ( (mixer_fd=open(DEV_MIXER, O_RDWR, 0)) < 0 )
{
fprintf(stderr, "Can't open %s: ", DEV_MIXER);
perror("");
exit(2);
}

set_laut(mixer_fd,zahl,zahl);

close(mixer_fd);

mixer_fd = -1;
} // setze_direkt


//-------------------------------------------------------------------

main(int arg_anzahl, char *arg_zeichen[])
{
if(arg_anzahl>=2)
{
setze_direkt(arg_zeichen[1]);
exit(0);
}

} // main

sage
17.06.03, 21:01
Danke, aber bevor ich rumkompiliere habe ich aumix probiert --> funktioniert wunderbar!