gtk-recordMyDesktopとqt-recordMyDesktopのJACKポートの一覧に余分な「入力」ポートが表示される件についてと、その対処
gtk-recordMyDesktopとqt-recordMyDesktopは、どちらもバージョン0.3.7の時点では、JACK Audio Connection Kitでオーディオの録音をする際のポート一覧に出力ポートだけでなく、(選択してもエラーになるだけの)「入力」ポートも表示されてしまっている。これはjack_lspコマンドをオプション無しで実行しているためで、以下のようにして-pオプション付きで実行し、その結果からポートの種類が「output」なものだけをリストに追加するための修正を行うことで、出力ポートのみが表示されるようにできる。
GTK+ 2版(gtk-recordMyDesktop):
--- gtk-recordmydesktop-0.3.7.2.orig/src/rmdPrefsWidget.py +++ gtk-recordmydesktop-0.3.7.2/src/rmdPrefsWidget.py @@ -335,7 +335,7 @@ self.__getSelectedPorts__() self.ports=[] failed=0 - (stdin,stdout,stderr)=os.popen3(['jack_lsp'],'t') + (stdin,stdout,stderr)=os.popen3(['jack_lsp', '-p'],'t') ports=stdout.readlines() stdin.close() stdout.close() @@ -343,8 +343,9 @@ self.jack_lsp_liststore.clear() self.jack_lsp_listview.get_selection().unselect_all() if ports!=[]: - for i in ports: - self.ports.append(i.replace('\n',"")) + for i in range(len(ports)): + if ports[i].find("output,") != -1: + self.ports.append(ports[i-1].replace('\n',"")) self.jack_lsp_listview.get_selection().set_mode(gtk.SELECTION_MULTIPLE) else: failed=1
Qt4版(qt-recordMyDesktop):
--- qt-recordmydesktop-0.3.7.2.orig/src/rmdPrefsWidget.py +++ qt-recordmydesktop-0.3.7.2/src/rmdPrefsWidget.py @@ -307,7 +307,7 @@ def __runJackLSP__(self,button=None): self.ports=[] failed=0 - (stdin,stdout,stderr)=os.popen3(['jack_lsp'],'t') + (stdin,stdout,stderr)=os.popen3(['jack_lsp', '-p'],'t') ports=stdout.readlines() stdin.close() stdout.close() @@ -315,8 +315,9 @@ self.jack_lsp_liststore.clear() if ports!=[]: - for i in ports: - self.ports.append(i.replace('\n',"")) + for i in range(len(ports)): + if ports[i].find("output,") != -1: + self.ports.append(ports[i-1].replace('\n',"")) self.jack_lsp_liststore.setEnabled(True) else: failed=1
(2008/9/13)修正内容を調整し、対象バージョンも0.3.7.2へ変更
修正前は下のようになり、接続できない入力ポートも表示されている。
修正後は出力ポートのみ表示されるようになっている。
参考URL(Pythonの初心者的覚え書き):
- http://docs.python.jp/3/tutorial/controlflow.html#the-range-function - Pythonのfor文でrange()とlen()を使用する
- http://docs.python.jp/3/library/stdtypes.html#string-methods - Pythonの文字列メソッド(find()を文字列検索に使用・正規表現もサポートするが、オーバースペックなので使用しなかった)
(2014/10/2)リンク先を修正
使用したバージョン:
- recordMyDesktop 0.3.6, 0.3.7