[alsa-devel] HDA Analyzer

Takashi Iwai tiwai at suse.de
Fri Nov 28 16:42:36 CET 2008


At Fri, 28 Nov 2008 11:29:27 +0100 (CET),
Jaroslav Kysela wrote:
> 
> Hi HDA developers,
> 
> 	I am trying to write a small tool for control and analyze HDA 
> codecs (something like more powerful GUI brother for Takashi's hda-verb). 
> For rapid development, I chose python and pygtk2 gtk bindings. At this 
> time, only basic things are implemented and not all widget types are 
> supported in detail, but routing and volume control is implemented. If you 
> are interested to check this preview and send me ideas to make this tool 
> better, the code is available at URL bellow (or in alsa.git repo - see 
> www.alsa-project.org).
> 
> 	http://git.alsa-project.org/?p=alsa.git;a=tree;f=hda-analyzer

This looks good.  Thanks for your work!

I got some errors when clicking some widgets:
> 
> Traceback (most recent call last):
>   File "./hda_analyzer.py", line 96, in selection_changed_cb
>     self.load(c, node)
>   File "./hda_analyzer.py", line 119, in load
>     self.__build_node(n)
>   File "./hda_analyzer.py", line 464, in __build_node
>     hbox.pack_start(self.__build_connection_list(node))
>   File "./hda_analyzer.py", line 253, in __build_connection_list
>     for i in node.connections:
> TypeError: 'NoneType' object is not iterable
> Traceback (most recent call last):
>   File "./hda_analyzer.py", line 96, in selection_changed_cb
>     self.load(c, node)
>   File "./hda_analyzer.py", line 119, in load
>     self.__build_node(n)
>   File "./hda_analyzer.py", line 466, in __build_node
>     vbox.pack_start(self.__build_amps(node), False, False)
>   File "./hda_analyzer.py", line 343, in __build_amps
>     node.out_amp and node.amp_vals_out or None)
>   File "./hda_analyzer.py", line 294, in build_caps
>     str = 'Offset:\t\t\t%d\n' % caps.ofs
> TypeError: %d format: a number is required, not NoneType
> Traceback (most recent call last):
>   File "./hda_analyzer.py", line 96, in selection_changed_cb
>     self.load(c, node)
>   File "./hda_analyzer.py", line 119, in load
>     self.__build_node(n)
>   File "./hda_analyzer.py", line 466, in __build_node
>     vbox.pack_start(self.__build_amps(node), False, False)
>   File "./hda_analyzer.py", line 343, in __build_amps
>     node.out_amp and node.amp_vals_out or None)
>   File "./hda_analyzer.py", line 294, in build_caps
>     str = 'Offset:\t\t\t%d\n' % caps.ofs
> TypeError: %d format: a number is required, not NoneType
> Traceback (most recent call last):
>   File "./hda_analyzer.py", line 96, in selection_changed_cb
>     self.load(c, node)
>   File "./hda_analyzer.py", line 119, in load
>     self.__build_node(n)
>   File "./hda_analyzer.py", line 466, in __build_node
>     vbox.pack_start(self.__build_amps(node), False, False)
>   File "./hda_analyzer.py", line 343, in __build_amps
>     node.out_amp and node.amp_vals_out or None)
>   File "./hda_analyzer.py", line 294, in build_caps
>     str = 'Offset:\t\t\t%d\n' % caps.ofs
> TypeError: %d format: a number is required, not NoneType
> Traceback (most recent call last):
>   File "./hda_analyzer.py", line 96, in selection_changed_cb
>     self.load(c, node)
>   File "./hda_analyzer.py", line 119, in load
>     self.__build_node(n)
>   File "./hda_analyzer.py", line 466, in __build_node
>     vbox.pack_start(self.__build_amps(node), False, False)
>   File "./hda_analyzer.py", line 343, in __build_amps
>     node.out_amp and node.amp_vals_out or None)
>   File "./hda_analyzer.py", line 294, in build_caps
>     str = 'Offset:\t\t\t%d\n' % caps.ofs
> TypeError: %d format: a number is required, not NoneType
> Traceback (most recent call last):
>   File "./hda_analyzer.py", line 96, in selection_changed_cb
>     self.load(c, node)
>   File "./hda_analyzer.py", line 119, in load
>     self.__build_node(n)
>   File "./hda_analyzer.py", line 466, in __build_node
>     vbox.pack_start(self.__build_amps(node), False, False)
>   File "./hda_analyzer.py", line 343, in __build_amps
>     node.out_amp and node.amp_vals_out or None)
>   File "./hda_analyzer.py", line 294, in build_caps
>     str = 'Offset:\t\t\t%d\n' % caps.ofs
> TypeError: %d format: a number is required, not NoneType

Happend on widgets like

  Node 0x21 [Volume Knob Widget] wcaps 0x600080: Mono
    Volume-Knob: delta=0, steps=32, direct=0, val=64
    Unsolicited: tag=0x00, enabled=0
    Connection: 0

and 

  Node 0x22 [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
    Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
    Amp-In vals: [0x00 0x00] [0x80 0x80] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80]
    Amp-Out caps: N/A
    Amp-Out vals: [0x00 0x00]
    Connection: 9
       0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x14 0x15 0x0b


Takashi


More information about the Alsa-devel mailing list