Accessing mixer values

hi group

I want to read the volume of the mixer device with a ruby script.
Can anybody tell me what the ruby equivalent is of what the MIXER_READ
macro does in C?

#define SOUND_MIXER_VOLUME 0
#define SOUND_MIXER_READ_VOLUME MIXER_READ(SOUND_MIXER_VOLUME)
#define MIXER_READ(dev) _SIOR(‘M’, dev, int)

I’ve been googling with keywords like ‘ioctl, MIXER_READ SOUND_MIXER’,
but with little result. Hopefully someone can me push me in the right
direction…

thanks in advance,

Ruud

ruud wrote:

I want to read the volume of the mixer device with a ruby script.
Can anybody tell me what the ruby equivalent is of what the MIXER_READ
macro does in C?

I’m sure that you’ll happy to know that, on linux, MIXER_READ(dev) do
this

(((2U) << (((0 +8)+8)+14)) | (((‘M’)) << (0 +8)) | (((dev)) << 0) |
(((((sizeof(int) == sizeof(int[1]) && sizeof(int) < (1 << 14)) ?
sizeof(int) : __invalid_size_argument_for_IOC))) << ((0 +8)+8)))

:slight_smile:

I’ve been googling with keywords like ‘ioctl, MIXER_READ SOUND_MIXER’,
but with little result. Hopefully someone can me push me in the right
direction…

perhaps best if you use Ruby::Inline to access it

http://rubyforge.org/projects/rubyinline/

Guy Decoux

It encodes the ioctl request argument for a transfer of data from the
device to the program. See:
man ioctl

you may also need to look at the ioctl.h header.
_SIOR in at least the linux soundcard.h file just maps directly to _IOR

RF

http://www.4front-tech.com/pguide/sndcrd.html

May also help now that you know that

_SIOR is just _IOR.

search there for MIXER_READ…below it are the legal values for dev if
I’m getting this right.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs