#!/usr/bin/python
# -*- coding: utf-8 -*-
''' Sets sound emulation variables for USB microphone CARD_NAME.
Also sets the microphone volume level, since that is often set at
zero in the Linux context. VirtualBox is reniced for better
performance.'''
import codecs
from os import environ, system
from subprocess import Popen, PIPE
from time import sleep
import sys
HOME = environ['HOME']
CARD_NAME = 'C-Media USB Audio Device'
def start_vm():
"""Start the virtual machine, possible using emulation."""
my_env = environ
if opts.emulate:
# aplay -l | awk '/C-Media USB Audio Device/ { print $2 }' | sed 's/:/,/'
# VBOX_ALSA_DAC_DEV="hw:1,0" VBOX_ALSA_ADC_DEV="hw:1,0" VirtualBox -startvm "urd-xp"
aplay_output = Popen(["aplay", "-l"], stdout=PIPE).communicate()[0].splitlines()
for line in aplay_output:
if CARD_NAME in line:
card_info = line.split(' ')
card_number = card_info[1][0:-1]
print "card_number", card_number
DEVICE = 'hw:%s,0' % card_number
my_env["VBOX_ALSA_DAC_DEV"] = DEVICE
my_env["VBOX_ALSA_ADC_DEV"] = DEVICE
# amixer -c 1 cset name='Auto Gain Control' 0
Popen(['amixer', '-c', card_number, 'cset', 'name=Auto Gain Control', '0']) #1
Popen(['amixer', '-c', card_number, 'cset', 'name=Mic Capture Volume', '16']) #13
Popen(['amixer', '-c', card_number, 'cset', 'name=Mic Playback Volume', '12'])
Popen(['amixer', '-c', card_number, 'cset', 'name=Speaker Playback Volume', '120'])
break
if not card_number:
print "\nSorry, %s not found" % CARD_NAME
print aplay_output
sys.exit()
## echo "$USER ALL= NOPASSWD:/usr/bin/renice,/usr/bin/nice" >> /etc/sudoers
# VirtualBox -startvm urd-xp & sleep 4; \
# sudo renice -n -5 `ps -eL | g VirtualBox | awk '{print $2}'`
Popen(['VirtualBox', '-startvm', 'urd-xp'], env = my_env)
sleep(4)
print "** renicing"
Popen("sudo renice -n -3 `ps -eL | grep VirtualBox | awk '{print $2}'`",
shell = True)
if '__main__' == __name__:
sys.stdout = codecs.getwriter('utf-8')(sys.stdout)
import optparse # Late import, in case this project becomes a library
opt_parser = optparse.OptionParser(usage="usage: %prog [options] FILE")
opt_parser.add_option('-e', '--emulate',
action="store_true", default=False,
help="Use USB sound as emulated hardware")
opts, args = opt_parser.parse_args()
start_vm()
Diff to Previous Revision
--- revision 3 2010-11-24 19:44:49
+++ revision 4 2010-12-14 14:53:07
@@ -2,33 +2,62 @@
# -*- coding: utf-8 -*-
''' Sets sound emulation variables for USB microphone CARD_NAME.
Also sets the microphone volume level, since that is often set at
-zero in the Linux context.'''
+zero in the Linux context. VirtualBox is reniced for better
+performance.'''
-# aplay -l | awk '/C-Media USB Audio Device/ { print $2 }' | sed 's/:/,/'
-# VBOX_ALSA_DAC_DEV="hw:1,0" VBOX_ALSA_ADC_DEV="hw:1,0" VirtualBox -startvm "urd-xp"
-
+import codecs
from os import environ, system
from subprocess import Popen, PIPE
+from time import sleep
+import sys
HOME = environ['HOME']
CARD_NAME = 'C-Media USB Audio Device'
-aplay_output = Popen(["aplay", "-l"], stdout=PIPE).communicate()[0].splitlines()
-for line in aplay_output:
- if CARD_NAME in line:
- card_info = line.split(' ')
- card_number = card_info[1][0:-1]
- print "card_number", card_number
- DEVICE = 'hw:%s,0' % card_number
- my_env = environ
- my_env["VBOX_ALSA_DAC_DEV"] = DEVICE
- my_env["VBOX_ALSA_ADC_DEV"] = DEVICE
- Popen(['amixer', '-c', '2', 'cset', 'name=Mic Capture Volume', '15'])
- Popen(['amixer', '-c', '2', 'cset', 'name=Mic Playback Volume', '12'])
- Popen(['amixer', '-c', '2', 'cset', 'name=Speaker Playback Volume', '15'])
- Popen(['VirtualBox', '-startvm', 'urd-xp'], env = my_env)
- break
-if not card_number:
- print "\nSorry, %s not found" % CARD_NAME
- print aplay_output
-
+def start_vm():
+ """Start the virtual machine, possible using emulation."""
+
+ my_env = environ
+ if opts.emulate:
+ # aplay -l | awk '/C-Media USB Audio Device/ { print $2 }' | sed 's/:/,/'
+ # VBOX_ALSA_DAC_DEV="hw:1,0" VBOX_ALSA_ADC_DEV="hw:1,0" VirtualBox -startvm "urd-xp"
+ aplay_output = Popen(["aplay", "-l"], stdout=PIPE).communicate()[0].splitlines()
+ for line in aplay_output:
+ if CARD_NAME in line:
+ card_info = line.split(' ')
+ card_number = card_info[1][0:-1]
+ print "card_number", card_number
+ DEVICE = 'hw:%s,0' % card_number
+ my_env["VBOX_ALSA_DAC_DEV"] = DEVICE
+ my_env["VBOX_ALSA_ADC_DEV"] = DEVICE
+ # amixer -c 1 cset name='Auto Gain Control' 0
+ Popen(['amixer', '-c', card_number, 'cset', 'name=Auto Gain Control', '0']) #1
+ Popen(['amixer', '-c', card_number, 'cset', 'name=Mic Capture Volume', '16']) #13
+ Popen(['amixer', '-c', card_number, 'cset', 'name=Mic Playback Volume', '12'])
+ Popen(['amixer', '-c', card_number, 'cset', 'name=Speaker Playback Volume', '120'])
+ break
+ if not card_number:
+ print "\nSorry, %s not found" % CARD_NAME
+ print aplay_output
+ sys.exit()
+
+ ## echo "$USER ALL= NOPASSWD:/usr/bin/renice,/usr/bin/nice" >> /etc/sudoers
+ # VirtualBox -startvm urd-xp & sleep 4; \
+ # sudo renice -n -5 `ps -eL | g VirtualBox | awk '{print $2}'`
+ Popen(['VirtualBox', '-startvm', 'urd-xp'], env = my_env)
+ sleep(4)
+ print "** renicing"
+ Popen("sudo renice -n -3 `ps -eL | grep VirtualBox | awk '{print $2}'`",
+ shell = True)
+
+if '__main__' == __name__:
+ sys.stdout = codecs.getwriter('utf-8')(sys.stdout)
+
+ import optparse # Late import, in case this project becomes a library
+ opt_parser = optparse.OptionParser(usage="usage: %prog [options] FILE")
+ opt_parser.add_option('-e', '--emulate',
+ action="store_true", default=False,
+ help="Use USB sound as emulated hardware")
+ opts, args = opt_parser.parse_args()
+
+ start_vm()