I have it working with the cube now! Thanks a lot! You were right about the magnitude part, but the source part didn't work quite right.
Here's the working code. import rb > import gst > import serial > import array > > class LEDcube(rb.Plugin): > > def activate(self, shell): > self.max = -60 > self.spectrum = gst.element_factory_make("spectrum") > self.spectrum.set_property('bands',9) > self.spectrum.set_property('interval',15000000) > self.spectrum.set_property('threshold',-50) > > player = shell.get_player().props.player > player.add_filter(self.spectrum) > > bus = player.props.bus > if bus is None: > self.bus_id = player.connect('notify::bus', > self.bus_notify) > else: > self.bus_id = player.props.bus.connect('message', > self.on_message) > self.ser = serial.Serial('/dev/ttyS0', 115200, timeout=1) > > def deactivate(self, shell): > player = shell.get_player().props.player > > player.remove_filter(self.spectrum) > player.props.bus.disconnect(self.bus_id) > self.bus_id = 0 > > def bus_notify(self, obj, pspec): > obj.disconnect(self.bus_id) > self.bus_id = obj.props.bus.connect('message', self.on_message) > > def on_message(self, bus, message): > if message.src == self.spectrum and > message.structure.has_key('magnitude'): > magnitudes = message.structure['magnitude'] > self.ser.write("\x35") > for i in range(0, 9): > data = array.array('B', > [51+int(round(magnitudes[i],0))]).tostring() > self.ser.write(data) > self.ser.write(data) > self.ser.write(data) All I have to do now is get it synced and make the visualisations better. Thanks again, Justin -- View this message in context: http://www.nabble.com/Python-Plugin-LED-Cube-Visualizations-tp23117783p23348613.html Sent from the Gnome - Rhythmbox - Dev mailing list archive at Nabble.com. _______________________________________________ rhythmbox-devel mailing list rhythmbox-devel@gnome.org http://mail.gnome.org/mailman/listinfo/rhythmbox-devel