require "linux/ioctl" module Linux; module SoundMixer extend IoctlClass MIXER_NRDEVICES = 0x00000019 MIXER_VOLUME = 0x00000000 MIXER_BASS = 0x00000001 MIXER_TREBLE = 0x00000002 MIXER_SYNTH = 0x00000003 MIXER_PCM = 0x00000004 MIXER_SPEAKER = 0x00000005 MIXER_LINE = 0x00000006 MIXER_MIC = 0x00000007 MIXER_CD = 0x00000008 MIXER_IMIX = 0x00000009 MIXER_ALTPCM = 0x0000000a MIXER_RECLEV = 0x0000000b MIXER_IGAIN = 0x0000000c MIXER_OGAIN = 0x0000000d MIXER_LINE1 = 0x0000000e MIXER_LINE2 = 0x0000000f MIXER_LINE3 = 0x00000010 MIXER_DIGITAL1 = 0x00000011 MIXER_DIGITAL2 = 0x00000012 MIXER_DIGITAL3 = 0x00000013 MIXER_PHONEIN = 0x00000014 MIXER_PHONEOUT = 0x00000015 MIXER_VIDEO = 0x00000016 MIXER_RADIO = 0x00000017 MIXER_MONITOR = 0x00000018 ONOFF_MIN = 0x0000001c ONOFF_MAX = 0x0000001e MIXER_NONE = 0x0000001f MIXER_ENHANCE = 0x0000001f MIXER_MUTE = 0x0000001f MIXER_LOUD = 0x0000001f MIXER_RECSRC = 0x000000ff MIXER_DEVMASK = 0x000000fe MIXER_RECMASK = 0x000000fd MIXER_CAPS = 0x000000fc MIXER_STEREODEVS = 0x000000fb MIXER_OUTSRC = 0x000000fa MIXER_OUTMASK = 0x000000f9 MASK_VOLUME = 0x00000001 MASK_BASS = 0x00000002 MASK_TREBLE = 0x00000004 MASK_SYNTH = 0x00000008 MASK_PCM = 0x00000010 MASK_SPEAKER = 0x00000020 MASK_LINE = 0x00000040 MASK_MIC = 0x00000080 MASK_CD = 0x00000100 MASK_IMIX = 0x00000200 MASK_ALTPCM = 0x00000400 MASK_RECLEV = 0x00000800 MASK_IGAIN = 0x00001000 MASK_OGAIN = 0x00002000 MASK_LINE1 = 0x00004000 MASK_LINE2 = 0x00008000 MASK_LINE3 = 0x00010000 MASK_DIGITAL1 = 0x00020000 MASK_DIGITAL2 = 0x00040000 MASK_DIGITAL3 = 0x00080000 MASK_PHONEIN = 0x00100000 MASK_PHONEOUT = 0x00200000 MASK_RADIO = 0x00800000 MASK_VIDEO = 0x00400000 MASK_MONITOR = 0x01000000 MASK_MUTE = 0x80000000 MASK_ENHANCE = 0x80000000 MASK_LOUD = 0x80000000 MIXER_READ_VOLUME = 0x80044d00 MIXER_READ_BASS = 0x80044d01 MIXER_READ_TREBLE = 0x80044d02 MIXER_READ_SYNTH = 0x80044d03 MIXER_READ_PCM = 0x80044d04 MIXER_READ_SPEAKER = 0x80044d05 MIXER_READ_LINE = 0x80044d06 MIXER_READ_MIC = 0x80044d07 MIXER_READ_CD = 0x80044d08 MIXER_READ_IMIX = 0x80044d09 MIXER_READ_ALTPCM = 0x80044d0a MIXER_READ_RECLEV = 0x80044d0b MIXER_READ_IGAIN = 0x80044d0c MIXER_READ_OGAIN = 0x80044d0d MIXER_READ_LINE1 = 0x80044d0e MIXER_READ_LINE2 = 0x80044d0f MIXER_READ_LINE3 = 0x80044d10 MIXER_READ_MUTE = 0x80044d1f MIXER_READ_ENHANCE = 0x80044d1f MIXER_READ_LOUD = 0x80044d1f MIXER_READ_RECSRC = 0x80044dff MIXER_READ_DEVMASK = 0x80044dfe MIXER_READ_RECMASK = 0x80044dfd MIXER_READ_STEREODEVS = 0x80044dfb MIXER_READ_CAPS = 0x80044dfc MIXER_WRITE_VOLUME = 0xc0044d00 MIXER_WRITE_BASS = 0xc0044d01 MIXER_WRITE_TREBLE = 0xc0044d02 MIXER_WRITE_SYNTH = 0xc0044d03 MIXER_WRITE_PCM = 0xc0044d04 MIXER_WRITE_SPEAKER = 0xc0044d05 MIXER_WRITE_LINE = 0xc0044d06 MIXER_WRITE_MIC = 0xc0044d07 MIXER_WRITE_CD = 0xc0044d08 MIXER_WRITE_IMIX = 0xc0044d09 MIXER_WRITE_ALTPCM = 0xc0044d0a MIXER_WRITE_RECLEV = 0xc0044d0b MIXER_WRITE_IGAIN = 0xc0044d0c MIXER_WRITE_OGAIN = 0xc0044d0d MIXER_WRITE_LINE1 = 0xc0044d0e MIXER_WRITE_LINE2 = 0xc0044d0f MIXER_WRITE_LINE3 = 0xc0044d10 MIXER_WRITE_MUTE = 0xc0044d1f MIXER_WRITE_ENHANCE = 0xc0044d1f MIXER_WRITE_LOUD = 0xc0044d1f MIXER_WRITE_RECSRC = 0xc0044dff MIXER_INFO = 0x805c4d65 MIXER_ACCESS = 0xc0804d66 MIXER_AGC = 0xc0044d67 MIXER_3DSE = 0xc0044d68 MIXER_PRIVATE1 = 0xc0044d6f MIXER_PRIVATE2 = 0xc0044d70 MIXER_PRIVATE3 = 0xc0044d71 MIXER_PRIVATE4 = 0xc0044d72 MIXER_PRIVATE5 = 0xc0044d73 MIXER_GETLEVELS = 0xc0a44d74 MIXER_SETLEVELS = 0xc0a44d75 DEVICE_LABELS = [ "Vol ", "Bass ", "Trebl", "Synth", "Pcm ", "Spkr ","Line ", "Mic ", "CD ", "Mix ", "Pcm2 ","Rec ", "IGain", "OGain", "Line1", "Line2", "Line3", "Digital1", "Digital2", "Digital3", "PhoneIn", "PhoneOut", "Video", "Radio", "Monitor" ] DEVICE_NAMES = [ "vol", "bass", "treble", "synth", "pcm", "speaker", "line", "mic", "cd", "mix", "pcm2", "rec", "igain", "ogain", "line1", "line2", "line3", "dig1", "dig2", "dig3", "phin", "phout", "video", "radio", "monitor" ] DEVICE_NAMES.each_with_index {|name,i| ioctl_accessor name, MIXER_READ_VOLUME+i, MIXER_WRITE_VOLUME+i } end end