Is there any way to control the mixer beyond the mute code on the dev site? Now that I went deaf from my startup sound playing in the car at 0db, I want to change my player to play the startup sound at 0db if on AC and -20 or so if in the car. Even better would be a way to play it at the same volume level the player was last playing at for both AC and DC.
Good question. When I briefly tested playing sounds on my environment, everything sounded nice on my home stereo but when I put it into car I noticed it was way too loud.
I haven't figured out how to change it yet (not tried that much either), but atleast the 'include/asm-arm/arch-sa1100/empeg.h' file in the kernel source code has the following:
/* Sound IOCTLs */ /* Make use of the bitmasks in soundcard.h, we only support. * PCM, RADIO and LINE. */
#define EMPEG_MIXER_MAGIC 'm' #define EMPEG_DSP_MAGIC 'a'
#define EMPEG_MIXER_READ_SOURCE _IOR(EMPEG_MIXER_MAGIC, 0, int) #define EMPEG_MIXER_WRITE_SOURCE _IOW(EMPEG_MIXER_MAGIC, 0, int) #define EMPEG_MIXER_READ_FLAGS _IOR(EMPEG_MIXER_MAGIC, 1, int) #define EMPEG_MIXER_WRITE_FLAGS _IOW(EMPEG_MIXER_MAGIC, 1, int) #define EMPEG_MIXER_READ_DB _IOR(EMPEG_MIXER_MAGIC, 2, int) #define EMPEG_MIXER_WRITE_LOUDNESS _IOW(EMPEG_MIXER_MAGIC, 4, int) #define EMPEG_MIXER_READ_LOUDNESS _IOR(EMPEG_MIXER_MAGIC, 4, int) #define EMPEG_MIXER_READ_LOUDNESS_DB _IOR(EMPEG_MIXER_MAGIC, 5, int) #define EMPEG_MIXER_WRITE_BALANCE _IOW(EMPEG_MIXER_MAGIC, 6, int) #define EMPEG_MIXER_READ_BALANCE _IOR(EMPEG_MIXER_MAGIC, 6, int) #define EMPEG_MIXER_READ_BALANCE_DB _IOR(EMPEG_MIXER_MAGIC, 7, int) #define EMPEG_MIXER_WRITE_FADE _IOW(EMPEG_MIXER_MAGIC, 8, int) #define EMPEG_MIXER_READ_FADE _IOR(EMPEG_MIXER_MAGIC, 8, int) #define EMPEG_MIXER_READ_FADE_DB _IOR(EMPEG_MIXER_MAGIC, 9, int) #define EMPEG_MIXER_SET_EQ _IOW(EMPEG_MIXER_MAGIC, 10, int) #define EMPEG_MIXER_GET_EQ _IOR(EMPEG_MIXER_MAGIC, 11, int) #define EMPEG_MIXER_SET_EQ_FOUR_CHANNEL _IOW(EMPEG_MIXER_MAGIC, 12, int) #define EMPEG_MIXER_GET_EQ_FOUR_CHANNEL _IOR(EMPEG_MIXER_MAGIC, 13, int) #define EMPEG_MIXER_GET_COMPRESSION _IOR(EMPEG_MIXER_MAGIC, 14, int) #define EMPEG_MIXER_SET_COMPRESSION _IOW(EMPEG_MIXER_MAGIC, 14, int) #define EMPEG_MIXER_SET_SAM _IOW(EMPEG_MIXER_MAGIC, 15, int)
/* Retrieve volume level corresponding to 0dB */ #define EMPEG_MIXER_READ_ZERO_LEVEL _IOR(EMPEG_MIXER_MAGIC, 3, int)
#define EMPEG_MIXER_FLAG_MUTE (1<<0) /*#define EMPEG_MIXER_FLAG_LOUDNESS (1<<1)*/
So, I wonder what one could do with i.e. EMPEG_MIXER_WRITE_LOUDNESS and similar IOCTL's. As I said, I haven't tested yet -- let me know if you or someone will find out more...
- Kim