thebigw / drc Goto Github PK
View Code? Open in Web Editor NEWDigital Room Correction plugin for rhythmbox
License: GNU General Public License v3.0
Digital Room Correction plugin for rhythmbox
License: GNU General Public License v3.0
Just looking at this file DRCFileTool.py - saw there were a few hardcoded "/home/tobias/.local/share..." paths
intentional?
Obviously will only work for other people call tobias ... :)
on the setfilter tab you have to choose the drcfilter
clicking the open file button opens the folder in the main source directory.
Suggestion - open the directory to a subfolder containing the two calcfilter text files so that the user doesnt just pick a random source file?
clicking open on the calculate filter open impulse response dialog lets you choose (or create?) a file in a .cache folder. Typing in a name and clicking open doesnt add the typed in text file into the impulse response edit field - it stays as "(none)"
What is supposed to happen here?
some initial issues:
make file appears to be wrong - suggestion for the contents?
DESTDIR= SUBDIR=/usr/lib/rhythmbox/plugins/DRC/ DATADIR=/usr/share/rhythmbox/plugins/DRC/ all: clean: - rm *.pyc install: install -d $(DESTDIR)$(SUBDIR) install -m 644 *.py $(DESTDIR)$(SUBDIR) install -m 644 LICENSE.txt $(DESTDIR)$(SUBDIR) install -m 644 DRC.plugin* $(DESTDIR)$(SUBDIR) install -d $(DESTDIR)$(DATADIR) install -m 644 calcFilter* $(DESTDIR)$(DATADIR) install -m 644 measure* $(DESTDIR)$(DATADIR) install -m 644 erb44100.drc $(DESTDIR)$(DATADIR) install -m 644 *.glade $(DESTDIR)$(DATADIR)
README:
the README instructions for the ubuntu install lists the extra packages required - but python3-autopilot and alsa-utils as suggested in install_deps.sh is not listed.
python3-autopilot:
adding the above as a dependency pulls in 18Mb of other packages - are you really sure this is a required package dependency?
moving forward.
Now when I choose tools-drc the application goes black - basically it freezes.
From the terminal I see this:
(rhythmbox:10574): Gtk-WARNING **: gtk_file_chooser_button_set_property: Choosers of type `GtkFileChooserButton' do not support `GTK_FILE_CHOOSER_ACTION_SAVE'. (rhythmbox:10574): Gtk-CRITICAL **: gtk_radio_button_set_group: assertion '!g_slist_find (group, radio_button)' failed
last few lines of running rhythmbox -D DRC
(21:04:30) [0x1969b90] [DeserializeClass] /usr/lib/rhythmbox/plugins/DRC/XMLSerializer.py:167: 40 (21:04:30) [0x1969b90] [DeserializeMember] /usr/lib/rhythmbox/plugins/DRC/XMLSerializer.py:144: Deserializing : (rhythmbox:10613): Gtk-WARNING **: gtk_file_chooser_button_set_property: Choosers of type `GtkFileChooserButton' do not support `GTK_FILE_CHOOSER_ACTION_SAVE'. (rhythmbox:10613): Gtk-CRITICAL **: gtk_radio_button_set_group: assertion '!g_slist_find (group, radio_button)' failed (21:04:30) [0x1969b90] [getDeviceListFromAlsaOutput] /usr/lib/rhythmbox/plugins/DRC/DRCUi.py:317: found pattern : [('0', 'Ensoniq AudioPCI', '0', 'ES1371 DAC2/ADC'), ('0', 'Ensoniq AudioPCI', '1', 'ES1371 DAC1')] (21:04:31) [0x1969b90] [getDeviceListFromAlsaOutput] /usr/lib/rhythmbox/plugins/DRC/DRCUi.py:317: found pattern : [('0', 'Ensoniq AudioPCI', '0', 'ES1371 DAC2/ADC')] (21:04:31) [0x1969b90] [InputVolumeProcess.stop] /usr/lib/rhythmbox/plugins/DRC/DRCUi.py:219: stoping volume monitoring (21:04:31) [0x1969b90] [DRCDlg.getAlsaRecordHardwareString] /usr/lib/rhythmbox/plugins/DRC/DRCUi.py:714: alsa input device : hw:0,0
running via rhythmbox -d I see this:
(21:00:02) [0x8ac630] [DeserializeMember] /usr/lib/rhythmbox/plugins/DRC/XMLSerializer.py:144: Deserializing : (21:00:02) [0x8ac630] [DeserializeClass] /usr/lib/rhythmbox/plugins/DRC/XMLSerializer.py:166: Deserializing : sweepDuration : (21:00:02) [0x8ac630] [DeserializeClass] /usr/lib/rhythmbox/plugins/DRC/XMLSerializer.py:167: 40 (21:00:02) [0x8ac630] [DeserializeMember] /usr/lib/rhythmbox/plugins/DRC/XMLSerializer.py:144: Deserializing : (21:00:02) [0x8ac630] [find_plugin_file] /usr/lib/rhythmbox/plugins/rb/rb.py:156: looking for DRCUI.glade in /usr/share/rhythmbox/plugins/DRC (rhythmbox:10529): Gtk-WARNING **: gtk_file_chooser_button_set_property: Choosers of type `GtkFileChooserButton' do not support `GTK_FILE_CHOOSER_ACTION_SAVE'. (rhythmbox:10529): Gtk-CRITICAL **: gtk_radio_button_set_group: assertion '!g_slist_find (group, radio_button)' failed (21:00:02) [0x8ac630] [getDeviceListFromAlsaOutput] /usr/lib/rhythmbox/plugins/DRC/DRCUi.py:317: found pattern : [('0', 'Ensoniq AudioPCI', '0', 'ES1371 DAC2/ADC'), ('0', 'Ensoniq AudioPCI', '1', 'ES1371 DAC1')] (21:00:02) [0x8ac630] [getDeviceListFromAlsaOutput] /usr/lib/rhythmbox/plugins/DRC/DRCUi.py:317: found pattern : [('0', 'Ensoniq AudioPCI', '0', 'ES1371 DAC2/ADC')] (21:00:02) [0x8ac630] [InputVolumeProcess.stop] /usr/lib/rhythmbox/plugins/DRC/DRCUi.py:219: stoping volume monitoring (21:00:02) [0x8ac630] [DRCDlg.getAlsaRecordHardwareString] /usr/lib/rhythmbox/plugins/DRC/DRCUi.py:714: alsa input device : hw:0,0 (21:00:32) [0xe3c870] [electromagnetic_shotgun] rb-metadata-dbus-service.c:176: shutting down (45s idle)
in the dialog "chanel" should actually be "channel"
:)
saw this in the terminal when I completed the measure and then clicked on the second tab and immediately clicked the calculate filter button - note the impulseresponse drop-down correctly had the .wav file that was measured.
http://paste.ubuntu.com/11832349/
N.B. click "download as text" to see the full trace file
summary -
(20:10:26) [0x8e0470] [DRCPlugin.updateFilter] .local/share/rhythmbox/plugins/DRC/DRC.py:134: [Errno 2] No such file or directory: '/home/foss/.cache/rhythmbox/DRC/DRCFilters/FilterDRC20150706201019.wav'
saw this error when using the tools-drc menu option:
File "/usr/lib/rhythmbox/plugins/DRC/DRCConfig.py", line 35, in load cfgFile = open(self.cfgFileName,'r') FileNotFoundError: [Errno 2] No such file or directory: '/home/dad/.cache/rhythmbox/DRC/DRC.xml' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/rhythmbox/plugins/DRC/DRC_rb3compat.py", line 740, in _activate self._connect_func(action, None, self._connect_args) File "/usr/lib/rhythmbox/plugins/DRC/DRCUi.py", line 501, in show_ui self.initUI() File "/usr/lib/rhythmbox/plugins/DRC/DRCUi.py", line 172, in initUI aCfg = DRCConfig() File "/usr/lib/rhythmbox/plugins/DRC/DRCConfig.py", line 32, in __init__ self.load() File "/usr/lib/rhythmbox/plugins/DRC/DRCConfig.py", line 44, in load self.save() File "/usr/lib/rhythmbox/plugins/DRC/DRCConfig.py", line 48, in save Serializer.write(self.cfgFileName, self) File "/usr/lib/rhythmbox/plugins/DRC/XMLSerializer.py", line 58, in write ET.ElementTree(rootElem).write( fileName ) File "lxml.etree.pyx", line 1949, in lxml.etree._ElementTree.write (src/lxml/lxml.etree.c:55919) File "serializer.pxi", line 477, in lxml.etree._tofilelike (src/lxml/lxml.etree.c:117874) File "serializer.pxi", line 523, in lxml.etree._create_output_buffer (src/lxml/lxml.etree.c:118373) File "serializer.pxi", line 512, in lxml.etree._create_output_buffer (src/lxml/lxml.etree.c:118218) FileNotFoundError: [Errno 2] No such file or directory
can confirm that the folder /home/dad/.cache/rhythmbox/DRC does not exist. Had a quick look at the code - may test that the folder exists - if not create it
if not os.path.exists(directory): os.makedirs(directory)
before opening the file.
I had changed from channel 1 to channel 2 and clicked measure.
This completed the measure but instead of the dialog I saw error #8
I closed the dialog and tried to reopen - no dialog shown.
I shutdown rhythmbox and restarted with rhythmbox -D DRC and captured the following when trying to open the DRC dialog:
(19:57:30) [0x8dd600] [getDeviceListFromAlsaOutput] DRC/DRCUi.py:321: found pattern : [('0', 'HDA Intel MID', '0', 'ALC272X Analog'), ('0', 'HDA Intel MID', '3', 'HDMI 0')]
(19:57:30) [0x8dd600] [getDeviceListFromAlsaOutput] DRC/DRCUi.py:321: found pattern : [('0', 'HDA Intel MID', '0', 'ALC272X Analog')]
(19:57:30) [0x8dd600] [DRCDlg.getAlsaRecordHardwareString] DRC/DRCUi.py:774: alsa input device : hw:0,0
(19:57:30) [0x8dd600] [DRCDlg.getRecordingDeviceInfo] DRC/DRCUi.py:534: executing: ['arecord', '-D', 'hw:0,0', '--dump-hw-params', '-d 1']
(19:57:30) [0x8dd600] [DRCDlg.getRecordingDeviceInfo] DRC/DRCUi.py:537: hw infos : err : b'arecord: main:722: audio open error: Device or resource busy\n' out : b''
Traceback (most recent call last):
File "/home/foss/.local/share/rhythmbox/plugins/DRC/DRC_rb3compat.py", line 740, in _activate
self._connect_func(action, None, self._connect_args)
File "/home/foss/.local/share/rhythmbox/plugins/DRC/DRCUi.py", line 532, in show_ui
self.initUI()
File "/home/foss/.local/share/rhythmbox/plugins/DRC/DRCUi.py", line 214, in initUI
self.updateRecDeviceInfo()
File "/home/foss/.local/share/rhythmbox/plugins/DRC/DRCUi.py", line 300, in updateRecDeviceInfo
recDeviceInfo = self.getRecordingDeviceInfo()
File "/home/foss/.local/share/rhythmbox/plugins/DRC/DRCUi.py", line 276, in getRecordingDeviceInfo
if len(numChanels[0]) > 1 and not numChanels[0][1]:
IndexError: list index out of range
I thought I capture this "bug" before I logout and login to see if I can get the measure option to work again
observed the following error:
Traceback (most recent call last):
File "/usr/lib/rhythmbox/plugins/DRC/DRCUi.py", line 432, in on_execMeasure
evalDlg = MeasureQADlg(self.parent, raw_sweep_file_base_name, raw_sweep_recorded_base_name, impOutputFile, self.sweep_level)
File "/usr/lib/rhythmbox/plugins/DRC/DRCUi.py", line 132, in __init__
measSweepData = DRCFileTool.LoadAudioFile(measSweepFile, 1)
File "/usr/lib/rhythmbox/plugins/DRC/DRCFileTool.py", line 172, in LoadAudioFile
filter_array = LoadRawFile(filename, numChannels)
File "/usr/lib/rhythmbox/plugins/DRC/DRCFileTool.py", line 127, in LoadRawFile
filterFile = open( filename, "rb" )
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/msrecsweep.pcm'
debian package here - https://launchpad.net/~fossfreedom/+archive/ubuntu/playground/+files/rhythmbox-plugin-drc_0.1.4-1_all.deb
It seems there is an issue with arecord in Ubuntu 15.04. I just wrote https://bugs.launchpad.net/bugs/1473649.
I need to check whether this can be fixed or whether I need to modify the measurement functionality. At the moment measurement seems not to work for Ubuntu 15.04.
As an aside - maybe the README should have a step by step guide showing how to setup an example digital-room-correction setup.
e.g.
step 1: select your input and output sound devices
step 2: click "measure" - it stays greyed out for me ... I suppose something is to enable the button - is it because I'm using 16bit audio?
step 3: define your calculation filter (what are we calculating?)
step 4: define your filter (not obvious what we are doing here)
step 5: click apply (so what happens now?)
I've just been randomly choosing stuff not really understanding how the various options influence the end result
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.