|

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

zip化された mp3アルバムを Linux で聴く(やっつけ)

amarok, rhythmbox, songbird とかそのあたりのメジャーなメディアプレイヤーが zip化された mp3アルバムの読み込みに対応しておらず、ネットレーベルなどからダウンロードしてきたアルバムを聴くのが難儀。

一旦一時ファイルに展開して聴く方法もあるが、後で削除し損ねるなどすると余計なディスクスペースを消費したり管理がめんどくさい。

というわけで、fuse-zip を使ってみた。 先に言っておくと、この方法では複数のアルバムには対応できません。

環境

Ubuntu Studio 8.04

インストールなど

fuse-zip は Ubuntu のリポジトリに入っていないので、ソースからコンパイルしてインストールする。

sudo apt-get install libfuse-dev libzip-dev
wget http://fuse-zip.googlecode.com/files/fuse-zip-0.2.7.tar.gz
tar xvf fuse-zip-0.2.7.tar.gz
cd fuse-zip-0.2.7
make
sudo make install

次に、fuse グループに自分を追加。間違えると sudo もできなくなるので慎重に。 /etc/group はバックアップ取っておきましょう。
参考: ユーザをグループに追加するとき、やってはいけないこと - satake7’s memo


やる気のない Rubyスクリプト playzip.rb を書いてみた。自己責任でどうぞ。

#!/usr/bin/ruby

PLAYER = "vlc"
LOG_PATH = File.join( `echo -n $HOME`, "#{File.basename(__FILE__)}.log" )
LOG_VIEWER = "gedit"
TARGET_RE = /\.(ogg|oga|mp3)$/i

zipfile = File.basename(ARGV[0])
basedir = File.dirname(File.expand_path(ARGV[0]))
zipfile_esc = zipfile.gsub(" ", "_")

mountpoint = "__fuse_temp_#{zipfile_esc}"

$log = []

def exec_cmd(cmd)
  $log << "-" * 64
  $log << cmd
  $log << `#{cmd} ; echo $?`
end

#--------------------------------
Dir.chdir( basedir )

exec_cmd %Q! mkdir #{mountpoint} !
exec_cmd %Q! fuse-zip "#{zipfile}" #{mountpoint} !

found = `find #{mountpoint}`.split("\n")

mediafiles = found.select{|fn| fn =~ TARGET_RE }
mediafiles.map!{|fn| %Q!"#{fn.strip}"!}

exec_cmd %Q! #{PLAYER} #{mediafiles.join(" ")} !

exec_cmd %Q! fusermount -u #{mountpoint} !
exec_cmd %Q! rmdir #{mountpoint} !

open( LOG_PATH, "w" ){|f|
  f.puts $log
}

#cmd = %Q! #{LOG_VIEWER} #{LOG_PATH} !
#puts cmd; system cmd

あとはこのスクリプトをファイルタイプで関連付けしておけば、zipファイルを右クリックして playzip.rb に渡して再生できる。

パーミッション絡みか何かで上手く開けないことがあります。直せたら追記・修正します。
以上。

追記 20091125

上記の方法は微妙に不便なので結局使わなくなってしまいました。 代わりに、単機能的で雑な作りですが Ruby/Tk で再生用プログラムを書いてみましたので 人柱でもいいという方はどうぞ。
http://wiki.github.com/sonota/zip-player

スポンサーサイト

Kate で C/C++シンボルビューアを使う

kate-c,cpp-symbol-viewer-c256

環境

Ubuntu Studio 8.04
Kate 2.5.10 (KDE 3.5.10)

インストールなど

Kate の ctags プラグインというのも一応ある (kate-ctags-plugin-patch KDE-Apps.org)ようなのだけど、 パッチ当て+コンパイルしないといけないらしい。
C/C++ が対象なら別のプラグインで代替できるようなのでそれを使うのが手っ取り早い。

  $ sudo apt-get install kate-plugins
でインストール。
--------

Kate のメニューから [設定 - Kateの設定]
[アプリケーション - プラグイン] で 
[Kate C/C++ シンボルビューア] にチェックを入れる。
--------

サイドバーから [シンボルリスト] を選択して表示する。
以上。

Ubuntu で jEdit の CodeBrowser プラグイン + ctags を使ってみる

jedit-codebrowser-20090219-c256

環境

Ubuntu Studio 8.04
jEdit 4.3pre15

インストール

  jEdit - Plugin Central - CodeBrowser
から
  CodeBrowser-1.3.1-bin.zip
をダウンロード。中に入っている CodeBrowser.jar を
  ~/.jedit/jars/
にコピー。
--------

jEdit のメニュー [プラグイン - プラグインオプション - Code Browser] で ctagsのパスを指定。
自分の場合 /usr/bin/ctags とした。

NOTE: This version of CodeBrowser requires Exuberant ctags Version 5.5 or later from http://ctags.sourceforge.net, the standard ctags program will not work!
Exuberant ctags というやつに依存しているらしいので $ sudo apt-get install exuberant-ctags でインストール。 -------- メニューの [プラグイン] から Code Browser を選ぶと表示される。 以上。

雑メモ: Linux 音関係

音が鳴っているかチェック

2009-04-13, Ubuntu Studio 8.04

$ speaker-test -D <デバイス名> -c <チャンネル数> -t wav

hw:0,0 がステレオ(チャンネル数==2)できちんと動作する(左右から音が出る)かチェックしたい場合は

$ speaker-test -D hw:0,0 -c 2 -t wav

どのプロセスがデバイスを掴んでいるか調べる

2009-02-01, Ubuntu Studio 8.04, flashのバージョンは 10.0 r15

lsof を使う。以下は firefoxで flashを使って音声を再生している時の結果。

$ sudo lsof /dev/snd/*
COMMAND    PID USER   FD   TYPE DEVICE SIZE  NODE NAME
pulseaudi 6607 user  mem    CHR 116,48      14165 /dev/snd/pcmC1D0p
pulseaudi 6607 user   17w   CHR  116,0      14328 /dev/snd/controlC0
pulseaudi 6607 user   24u   CHR  116,0      14328 /dev/snd/controlC0
pulseaudi 6607 user   29u   CHR 116,32      14183 /dev/snd/controlC1
pulseaudi 6607 user   42u   CHR 116,48      14165 /dev/snd/pcmC1D0p

pulseaudio を kill してから firefox を再起動し、ふたたび flashを使って音声を再生している時の結果。

$ sudo lsof /dev/snd/*
COMMAND   PID USER   FD   TYPE DEVICE SIZE  NODE NAME
firefox 17037 user  mem    CHR 116,16      14304 /dev/snd/pcmC0D0p
firefox 17037 user   64u   CHR 116,16      14304 /dev/snd/pcmC0D0p

audaicty を起動したとき。

$ sudo lsof /dev/snd/*
COMMAND    PID USER   FD   TYPE DEVICE SIZE  NODE NAME
audacity 16809 user  mem    CHR 116,48      14165 /dev/snd/pcmC1D0p
audacity 16809 user   13u   CHR 116,48      14165 /dev/snd/pcmC1D0p
jackd    16819 user  mem    CHR 116,16      14304 /dev/snd/pcmC0D0p
jackd    16819 user  mem    CHR 116,24      14310 /dev/snd/pcmC0D0c
jackd    16819 user    9u   CHR  116,0      14328 /dev/snd/controlC0
jackd    16819 user   11u   CHR 116,16      14304 /dev/snd/pcmC0D0p
jackd    16819 user   12u   CHR 116,24      14310 /dev/snd/pcmC0D0c

雑メモ: Ubuntu Studio + ONKYO MA-500U

音ちゃんと出てます。

録音(外部音源をPC側で取り込む)は不可。

$ cat /proc/asound/devices
  0: [ 0]   : control
  1:        : sequencer
  6: [ 0- 2]: hardware dependent
 16: [ 0- 0]: digital audio playback
 24: [ 0- 0]: digital audio capture
 28: [ 0- 4]: digital audio capture
 32: [ 1]   : control
 33:        : timer
 48: [ 1- 0]: digital audio playback
$ cat /proc/asound/cards
 0 [Intel          ]: HDA-Intel - HDA Intel
                      HDA Intel at 0x903a0000 irq 23
 1 [PCM2702        ]: USB-Audio - Burr-Brown Japan PCM2702
                      Burr-Brown Japan Burr-Brown Japan PCM2702 at usb-0000:00:1a.1-2, full speed
$ cat /proc/asound/modules 
 0 snd_hda_intel
 1 snd_usb_audio
$ aplay -l
**** ハードウェアデバイス PLAYBACK のリスト ****
カード 0: Intel [HDA Intel], デバイス 0: ALC883 Analog [ALC883 Analog]
  サブデバイス: 0/1
  サブデバイス #0: subdevice #0
カード 1: PCM2702 [Burr-Brown Japan PCM2702], デバイス 0: USB Audio [USB Audio]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0
$ cat /proc/asound/card1/pcm0p/sub0/hw_params 
access: MMAP_INTERLEAVED
format: S16_LE
subformat: STD
channels: 2
rate: 44100 (44100/1)
period_size: 1102
buffer_size: 4408
[user ~]$ cat /proc/asound/card1/stream0 
Burr-Brown Japan Burr-Brown Japan PCM2702 at usb-0000:00:1a.1-2, full speed : USB Audio

Playback:
  Status: Running
    Interface = 1
    Altset = 1
    URBs = 4 [ 8 8 8 2 ]
    Packet Size = 192
    Momentary freq = 44100 Hz (0x2c.199a)
  Interface 1
    Altset 1
    Format: 0x2
    Channels: 2
    Endpoint: 2 OUT (ADAPTIVE)
    Rates: 32000, 44100, 48000
  Interface 1
    Altset 2
    Format: 0x2
    Channels: 1
    Endpoint: 2 OUT (ADAPTIVE)
    Rates: 32000, 44100, 48000

参考(外部リンク)



** ホームに戻る

|
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。