goSoundbench

command module
v0.0.0-...-5d1b788 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 21, 2017 License: MIT Imports: 2 Imported by: 0

README

goSoundbench

goSoundbench is a collection of tools which helps conduction automated tests for audio devices.

How to install

In order to build the project, you need install the Go language. It's recommended to install the latest version.

MacOS

Its recommended to use the superb packet manager homebrew to install the dependencies:


$ brew install portaudio
$ go get github.com/dh1tw/goSoundbench
$ cd $GOPATH/src/github.com/dh1tw/goSoundbench
$ make install

Linux (Ubuntu)

$ sudo apt-get install libportaudio2 portaudio19-dev portaudio19-doc git
$ go get github.com/dh1tw/goSoundbench
$ cd $GOPATH/src/github.com/dh1tw/goSoundbench
$ make install

Soundcards

Linux does not guarantee that USB Sound cards are always mapped as the same device. However with a combination of udev and alsa rules we can make sure that a particular USB Sound card gets a persistant handle.

Use the following command to see the path of the USB Device (you have to plug or unplug the device):


udevadm monitor --kernel --subsystem-match=sound

Once we know the path of the device, we create the following file:


sudo vim /etc/udev/rules.d/70-alsa-permanent.rules

and we add something like:


SUBSYSTEM!="sound", GOTO="my_usb_audio_end"
ACTION!="add", GOTO="my_usb_audio_end"

DEVPATH=="/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/sound/card?", ATTR{id}="CH1"
DEVPATH=="/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/sound/card?", ATTR{id}="CH2"
DEVPATH=="/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/sound/card?", ATTR{id}="CH3"
DEVPATH=="/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5/1-1.5:1.0/sound/card?", ATTR{id}="CH4"


LABEL="my_usb_audio_end"

This above example maps all 4 USB ports of a Raspberry Pi to sound cards.

Now we can create an alsa configuration in $HOME/.asoundrc:


pcm.CH1 {
	type hw
	card "CH1"
    	device 0
}

ctl.CH1 {
	type hw
	card "CH1"
    	device 0
}

pcm.CH2 {
        type hw
        card "CH2"
        device 0
}

ctl.CH2 {
        type hw
        card "CH2"
        device 0
}
pcm.CH3 {
        type hw
        card "CH3"
        device 0
}

ctl.CH3 {
        type hw
        card "CH3"
        device 0
}
pcm.CH4 {
        type hw
        card "CH4"
        device 0
}

ctl.CH4 {
        type hw
        card "CH4"
        device 0
}

If you don't need the internal Sound card (of a Raspberry Pi), disable it:


sudo vim /etc/modprobe.d/sound.conf

and add:


blacklist snd-bcm2835
snd-usb-audio

You might have to the now remove or comment out invalid sound devices from /usr/share/alsa/alsa.conf. In my case I had to remove:


#pcm.rear cards.pcm.rear
#pcm.center_lfe cards.pcm.center_lfe
#pcm.side cards.pcm.side
#pcm.surround21 cards.pcm.surround21
#pcm.surround40 cards.pcm.surround40
#pcm.surround41 cards.pcm.surround41
#pcm.surround50 cards.pcm.surround50
#pcm.surround51 cards.pcm.surround51
#pcm.surround71 cards.pcm.surround71
#pcm.iec958 cards.pcm.iec958
#pcm.spdif iec958
#pcm.hdmi cards.pcm.hdmi
#pcm.modem cards.pcm.modem
#pcm.phoneline cards.pcm.phoneline

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package Soundbench is a generated protocol buffer package.
Package Soundbench is a generated protocol buffer package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL