お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2006-11-01 11:42:50

oryaaaaa
メンバ
From: Aichi, Japan
登録日: 2006-10-31

Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

日本のDesktopCD、そしてインストール、どちらもHD2の動作を確認しました

HD2がどんなものかは、下記の私のレビューを読んでください
http://kakaku.com/bbs/Main.asp?SortID=5552306

光デジタル出力とデジタル入力(アナログ入力)の切替方法は、分かりませんでした。
外部DACよりも、サウンドカードのアナログ出力が良い仕様なのでデジタル出力は
使わないでしょう。外部DACに10万円以上かければ、変わるかもしれませんがw

ONKYOやProdigyからHD2にすると、とてもよくなった印象を持つと思います。
それなりの出力先で鳴らせば、解像度が格段に上がってます。

Windowsと 違う点は RCA出力がボリュームと連動することです。あとたぶん
解像度が少し落ちてる感じがします。OPA627BPを使ったときの臨場感が
物足りなくなってるので、ドライバーか、なにかを修正しないと直らないでしょう。

分かる人いませんか?

解決しました!!
http://forum.ubuntulinux.jp/viewtopic.php?pid=68#p68

2006.11.12 追記
このあと、複数のアプリ使用時に音がならない問題がありました。
ALSA開発者の岩井氏からのアドバイスで、新しいALSAドライバーを使用した
ところ、解決しました。(上記問題も、これで解決します)
http://forum.ubuntulinux.jp/viewtopic.php?pid=178#p178

ほかにやることがあるので、この件は終了です。

:~$ cat /proc/asound/cards
0 [ICE1724        ]: ICE1724 - ICEnsemble ICE1724
                      ICEnsemble ICE1724 at 0xdc00, irq 233
1 [U0x46d0x8ad    ]: USB-Audio - USB Device 0x46d:0x8ad
                      USB Device 0x46d:0x8ad at usb-0000:00:0b.0-8, full speed
上がHD2、下がQCAM STXの内蔵マイクです

最後の編集者: oryaaaaa (2006-11-12 13:14:44)

オフライン

 

#2 2006-11-02 01:06:38

oryaaaaa
メンバ
From: Aichi, Japan
登録日: 2006-10-31

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

pcm_slave.ice1724_S32_LE {
    pcm ice1724
    format S32_LE
}

pcm.ice1724_convert {
    type plug
    slave ice1724_S32_LE
}

このような記述をどこかにしないといけないらしい・・・・というところまで分かった

Advanced Linux Sound Architecture - Prodigy 7.1. ice1724
http://www.alsa-project.org/alsa-doc/doc-php/template.php?company=AudioTrak&card=Prodigy+7.1.&chip=Envy24HT&module=ice1724

PCMフォーマットが甘いビット数かなにかの設定になっているのか?

オフライン

 

#3 2006-11-02 01:29:52

oryaaaaa
メンバ
From: Aichi, Japan
登録日: 2006-10-31

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

現在の状態

$ cat /dev/sndstat
Sound Driver:3.8.1a-980706 (ALSA v1.0.12rc1 emulation code)
Kernel: Linux saviour 2.6.17-10-generic #2 SMP Fri Oct 13 18:45:35 UTC 2006 i686
Config options: 0

Installed drivers:
Type 10: ALSA emulation

Card config:
ICEnsemble ICE1724 at 0xdc00, irq 233

Audio devices:
0: ICE1724 (DUPLEX)

Synth devices: NOT ENABLED IN CONFIG

Midi devices:
0: ICEnsemble ICE1724 MIDI

Timers:
31: system timer

Mixers:
0: ICE1724 - multitrack

オフライン

 

#4 2006-11-02 01:39:55

oryaaaaa
メンバ
From: Aichi, Japan
登録日: 2006-10-31

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

http://lau.linuxaudio.org/Sound-HOWTO-4.html#ss4.1

$ uname -a
Linux saviour 2.6.17-10-generic #2 SMP Fri Oct 13 18:45:35 UTC 2006 i686 GNU/Linux

$ cat /proc/version
Linux version 2.6.17-10-generic (root@vernadsky) (gcc version 4.1.2 20060928 (prerelease) (Ubuntu 4.1.1-13ubuntu5)) #2 SMP Fri Oct 13 18:45:35 UTC 2006 (Ubuntu 2.6.17-10.33-generic)

$dmesg
[17179650.636000] ice1724: No matching model found for ID 0x12140124
[17179650.640000] ice1724: Invalid EEPROM version 1

オフライン

 

#5 2006-11-02 01:50:25

oryaaaaa
メンバ
From: Aichi, Japan
登録日: 2006-10-31

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

ice1724 - AlsaOpensrcOrg
http://alsa.opensrc.org/ice1724

オフライン

 

#6 2006-11-02 01:54:50

oryaaaaa
メンバ
From: Aichi, Japan
登録日: 2006-10-31

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

$ /sbin/lsmod | grep snd
snd_ice1724            75252  230
snd_ice17xx_ak4xxx      5504  1 snd_ice1724
snd_ac97_codec         97696  1 snd_ice1724
snd_ac97_bus            3456  1 snd_ac97_codec
snd_ak4114             11392  1 snd_ice1724
snd_pcm_oss            47360  0
snd_mixer_oss          19584  1 snd_pcm_oss
snd_pcm                84612  5 snd_ice1724,snd_ac97_codec,snd_ak4114,snd_pcm_oss
snd_timer              25348  2 snd_pcm
snd_page_alloc         11400  1 snd_pcm
snd_ak4xxx_adda         8576  2 snd_ice1724,snd_ice17xx_ak4xxx
snd_mpu401_uart        10240  1 snd_ice1724
snd_rawmidi            27264  1 snd_mpu401_uart
snd_seq_device          9868  1 snd_rawmidi
snd                    58372  241 snd_ice1724,snd_ac97_codec,snd_ak4114,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timer,snd_ak4xxx_adda,snd_mpu401_uart,snd_rawmidi,snd_seq_device
soundcore              11232  1 snd

オフライン

 

#7 2006-11-02 02:13:01

oryaaaaa
メンバ
From: Aichi, Japan
登録日: 2006-10-31

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

Advanced Linux Sound Architecture - asoundrc file
http://www.alsa-project.org/alsa-doc/doc-php/asoundrc.php?module=ice1724

てきーとな翻訳

なぜ asoundrc ですか?

.asoundrcかalsa.confで大部分のアプリケーションは動作します。
でもサンプルレートの設定などはこれで設定します。

asoundrcってなに?

あなたのサウンドカードでの、alsalibのPCMプラグインの性質変化
1アクセスから、マルチチャンネルなどね

asoundrcってどこにある?

通常は
$HOME/.asoundrc

元ファイルは
/usr/share/alsa/alsa.conf

これは大まかな設定で読み込まれる
/etc/asound.conf

alsaのアプリは .asoundrc と /etc/asound.conf の両方を
読んで開始するんだ

最初の初期設定

新規作成で作ります
vi /home/xxx/.asoundrc

下記をコピーペーストしてね。
        pcm.!default {
    type hw
    card 0
    }

    ctl.!default {
    type hw           
    card 0
        }

defaultのキーワードで、ALSAはいつも hw:0,0 へアクセスするよ

試してみよう
    aplay -D default test.wav

オフライン

 

#8 2006-11-02 02:27:25

oryaaaaa
メンバ
From: Aichi, Japan
登録日: 2006-10-31

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

PCMデバイスの名付け方

いつもPCM hw typeで始まる。これでALSAに管理権をあたえるんだよ
pluginやSlaveをね。でも無い場合動かないから、名前を hw:0,0 か
default にしなきゃいけない。たとえば

aplay -D hw:0,0 test.wav

そしてecasoundなら

ecasound -i test.wav -o alsa,hw:0,0

このhwに続く数字は soundcard number と device number だよ。
"cards"はデバイスから連想できるものにしよう

/proc/asound/cards

ほとんどの場合1でなく0から始まる。実際PCMデバイスだと
pcm0c(capture), pcm0p(playback) から始まってる

device numberはいわゆるチャンネルね、soundcard numberは
サウンドカードの認識順番号です

例えば最初にアクセスするなら hw:0,0
2番目のサウンドカードにするとき hw:1,0 最初のチャンネル
3番目のカードで2番目のチャンネル hw:2,1

Deviceのコントロール

いろいろあるよ

オフライン

 

#9 2006-11-02 02:38:19

oryaaaaa
メンバ
From: Aichi, Japan
登録日: 2006-10-31

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

エイリアス

文法例
    pcm.NAME {
             type hw               # Kernel PCM
             card INT/STR          # Card name or number
             [device] INT          # Device number (default 0)     
             [subdevice] INT       # Subdevice number, -1 first available (default -1)
             mmap_emulation BOOL   # enable mmap emulation for ro/wo devices
    }

実際の例
    pcm. {
             type hw
             card 0
             device 0
    }
最初のカード、最初のチャンネルへの定義、使いかたは

aplay -D  test.wav

プラグイン

こちらの資料をみてほしい
ALSA project - the C library reference: PCM (digital audio) plugins
http://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html#pcm_plugins

プラグインってなに?
ALSAで、例えばPCMプラグインなら、過去の多くの遺産から仮想のデバイスを
作りだし、自動かつ魔法のように使えるテクノロジー

シンプルに定義すると
    pcm_slave.sltest {
             pcm
    }

これは単純にpcmに対するあなたの別名を定義しただけです。このように
書くことができます
    pcm_slave.sl2 {
             pcm
             rate 48000
    }

    pcm.rate_convert {
             type rate
             slave sl2
    }
実際につかってみましょう
    aplay -D rate_convert test.wav

これが実行されている間、自動で48kHzに変換されます

オフライン

 

#10 2006-11-02 02:42:51

oryaaaaa
メンバ
From: Aichi, Japan
登録日: 2006-10-31

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

複雑な構文の文法です
slaveは定義と訳すと意味がわかるよ
      type plug                 # Format adjusted PCM
      slave STR               # Slave name (see pcm_slave)
      # or
      slave {                 # Slave definition
            pcm STR         # Slave PCM name
        # or
            pcm { }         # Slave PCM definition
            [format STR]    # Slave format (default nearest) or "unchanged"
            [channels INT]  # Slave channels (default nearest) or "unchanged"
            [rate INT]      # Slave rate (default nearest) or "unchanged"
      }
      route_policy STR     # route policy for automatic ttable generation
                                   # STR can be 'default', 'average', 'copy', 'duplicate'
                                # average: result is average of input channels
                                # copy: only first channels are copied to destination
                                # duplicate: duplicate first set of channels
                             # default: copy policy, except for mono capture - sum
      ttable {                   # Transfer table (bidimensional compound of
                             # cchannels * schannels numbers)
            CCHANNEL {
              SCHANNEL REAL      # route value (0.0 ... 1.0)
            }
      }

実際に使ってみよう
    pcm_slave.sl3 {
             pcm 
             format S16_LE
             channels 1
             rate 16000
    }

    pcm.complex_convert {
            type plug
            slave sl3
    }

    aplay -vD complex_convert test.wav

これで16Hzで演奏されました。使ってるファイルの情報を知りたい
ときは 冗長オプション -v をつけます

    aplay -v test.wav

オフライン

 

#11 2006-11-02 03:03:18

oryaaaaa
メンバ
From: Aichi, Japan
登録日: 2006-10-31

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

.asoundrc に下記を、コピペした。いったん再起動してみる。(こうして書いてるのは、同様の手順がわかるから)

pcm.!default {
    type plug
    slave.pcm "dmixer"
}

pcm.dmixer  {
    type dmix
    ipc_key 1024
    slave {
        pcm "hw:0,1"
        format S32_LE
        period_time 0
        period_size 1024
        buffer_size 8192
        rate 44100
    }
    bindings {
        0 0
        1 1
    }
}

ctl.dmixer {
    type hw
    card 0
    device 1
}

オフライン

 

#12 2006-11-02 03:08:18

oryaaaaa
メンバ
From: Aichi, Japan
登録日: 2006-10-31

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

Ubuntuでは下記が設定ファイルらしい

/etc/modprobe.d/alsa-base
# autoloader aliases
install sound-slot-0 /sbin/modprobe snd-card-0
install sound-slot-1 /sbin/modprobe snd-card-1
install sound-slot-2 /sbin/modprobe snd-card-2
install sound-slot-3 /sbin/modprobe snd-card-3
install sound-slot-4 /sbin/modprobe snd-card-4
install sound-slot-5 /sbin/modprobe snd-card-5
install sound-slot-6 /sbin/modprobe snd-card-6
install sound-slot-7 /sbin/modprobe snd-card-7

# Cause optional modules to be loaded above generic modules
install snd /sbin/modprobe --ignore-install snd $CMDLINE_OPTS && { /sbin/modprobe -Qb snd-ioctl32 ; : ; }
install snd-pcm /sbin/modprobe --ignore-install snd-pcm $CMDLINE_OPTS && { /sbin/modprobe -Qb snd-pcm-oss ; : ; }
install snd-mixer /sbin/modprobe --ignore-install snd-mixer $CMDLINE_OPTS && { /sbin/modprobe --Qb snd-mixer-oss ; : ; }
install snd-seq /sbin/modprobe --ignore-install snd-seq $CMDLINE_OPTS && { /sbin/modprobe -Qb snd-seq-midi ; /sbin/modprobe --quiet snd-seq-oss ; : ; }

# Cause optional modules to be loaded above sound card driver modules
install snd-emu10k1 /sbin/modprobe --ignore-install snd-emu10k1 $CMDLINE_OPTS && { /sbin/modprobe -Qb snd-emu10k1-synth ; }
install snd-via82xx /sbin/modprobe --ignore-install snd-via82xx $CMDLINE_OPTS && { /sbin/modprobe -Qb snd-seq ; }

# Load saa7134-alsa instead of saa7134 (which gets dragged in by it anyway)
install saa7134 /sbin/modprobe --ignore-install saa7134 $CMDLINE_OPTS && { /sbin/modprobe -Qb saa7134-alsa ; : ; }
# Prevent abnormal drivers from grabbing index 0
options snd-bt87x index=-2
options snd-atiixp-modem index=-2
options snd-intel8x0m index=-2
options snd-via82xx-modem index=-2
options snd-usb-audio index=-2
options snd-usb-usx2y index=-2

/usr/share/alsa-base/alsa.default
# Configuration file for alsa-base

# List, separated by spaces, the names of modules that should be
# unloaded, if present, before the machine is suspended. Use the
# special name "all" if you would like all ALSA sound modules to be
# removed. The modules that are removed will be loaded again after
# resume.  Currently this only has an effect if you are using apmd.
# Examples:
#     Value         Action at suspend time
#     ""            Do nothing
#     "snd-cs46xx"  Stop sound processes and remove the snd-cs46xx module
#     "all"         Stop sound processes and remove all ALSA modules
force_unload_modules_before_suspend=""

オフライン

 

#13 2006-11-02 03:11:57

oryaaaaa
メンバ
From: Aichi, Japan
登録日: 2006-10-31

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

どこに該当のファイルがあるか調べるときは
Synapticパッケージマネージャーで alsa を検索する
上記の内容なら alsa-base のパッケージで、プロパティを開き、インストール済みファイル見ればわかる

オフライン

 

#14 2006-11-02 03:31:43

oryaaaaa
メンバ
From: Aichi, Japan
登録日: 2006-10-31

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

鳴らなくなった...ということは変更したのは”.asoundrc”だけだったので
説明のとおり、これが重要な役割をしていたということだね。

こういうときは基本に戻って、大前提が動作するかどうか確認してみること

.asoundrc を下記に書き換えた
    pcm.!default {
    type hw
    card 0
    }

    ctl.!default {
    type hw           
    card 0
        }

オフライン

 

#15 2006-11-02 03:58:31

oryaaaaa
メンバ
From: Aichi, Japan
登録日: 2006-10-31

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

今回はログオフして、ログオンするだけ。システム効果音やサウンド設定では鳴った。VLCでも鳴った。
でもRysmboxが鳴らなくて、そもそもファイルの再生をクリックしても、再生シーケンスに入らない。
解像度はよくあるサウンドカードと同じぐらい。HD2だと表現に困るのだが、外部DACを通した音の
それより解像度は良くてビット数が足りないイメージ。

さて、どうしよう。ソースは昨日、ドライバーも含めて眺めた。

こういうことを調べるとき、Gomitaさんが作ってるアドインで、 Scrapbookが使い易い。
特にWiki関係はすべて取り込んで一瞬で表示できるようにしています。取り込むぐらい
なら、別にこだわる必要はないけれど、そこから検索したいときGoogleで検索しきれません
Scarpbookは非常に便利で、一度取り込んだすべてのページから文字列検索ができます。

いま困ってるのは1724での次の一手、それで”1724”で検索してみた。
そうするとAlsa Opensrc Orgから、ICE1724のページが表示されました。
1724の文字はハイライト表示されてます。わかりやすい。

少しいろいろ検証してみますね。

オフライン

 

#16 2006-11-02 04:22:19

oryaaaaa
メンバ
From: Aichi, Japan
登録日: 2006-10-31

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

$HOME/.asoundrc

pcm.!default {
        type plug
        slave {
                pcm "hw:0,1"
                format S32_LE
        }
}

これで音が改善した感じがします。BOSE M3の低音が鳴るたび、どっしりした印象を持ちます。
良くなってます。
サンプルレートを設定すると、システム音がエラーになりますね。問題は、リズムボックス
ミュージックプレイヤーが動かないです。クラッシュではなくて、再生してもシーケンスに
入りません。

オフライン

 

#17 2006-11-02 04:46:47

oryaaaaa
メンバ
From: Aichi, Japan
登録日: 2006-10-31

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

理由がわかりました。 pcm "hw0,1" と指定しているから、最初のプレイヤーが1番目
のチャンネルと使い、2番目のプレイヤーが2番目のチャンネルを使うから、設定通り
聞こえない。

pcm.!default {
        type plug
        slave {
                pcm "hw:0"
                format S32_LE
        }
}

こうするとどうなるだろう?

オフライン

 

#18 2006-11-02 05:10:14

oryaaaaa
メンバ
From: Aichi, Japan
登録日: 2006-10-31

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

これは"hd0,0"と指定されるようです。解像度は最高状態なので、format S32_LE の
指定がキモだったのですね。他のアプリでは、1番のチャンネルが使われていると

”Resource busy or not available.”

というエラーを返します。dmixerというプラグインを使えば、チャンネルをまとめる
ことができるようです。

pcm.dmixer  {
    type dmix
    ipc_key INT
    slave {
        pcm "hw:0,0"
        format S32_LE
        period_time 0
        period_size 1024
        buffer_size 8192
    }
    bindings {
        0 0
        1 1
    }
}

pcm.!default {
    type plug
    slave.pcm "dmixer"
}

オフライン

 

#19 2006-11-02 05:22:01

oryaaaaa
メンバ
From: Aichi, Japan
登録日: 2006-10-31

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

鳴らないなぁ・・・・、どこがいけないんだろう。

解像度が悪く感じた原因を見付けました。デフォルトのdmixerでのフォーマット指定が
16ビットになっていたのが原因です。default S16_LE、これでしょうね。ここをルート権限
で書き換えたら済むのかな?

/usr/share/alsa/pcm/dmix.conf
#
# dmix output
#

pcm.!dmix {
    @args [ CARD DEV SUBDEV FORMAT RATE ]
    @args.CARD {
        type string
        default 0
    }
    @args.DEV {
        type string
        default 0
    }
    @args.SUBDEV {
        type string
        default -1
    }
    @args.FORMAT {
        type string
        default S16_LE
    }
    @args.RATE {
        type integer
        default 48000
    }
    type dmix
    ipc_key {
        @func refer
        name defaults.pcm.ipc_key
    }
    ipc_gid {
        @func refer
        name defaults.pcm.ipc_gid
    }
    ipc_perm {
        @func refer
        name defaults.pcm.ipc_perm
    }
    slave {
        pcm {
            type hw
            card $CARD
            device $DEV
            subdevice $SUBDEV
        }
        format $FORMAT
        rate $RATE
        period_size {
            @func refer
            name {
                @func concat
                strings [
                    "cards."
                    {
                        @func card_driver
                        card $CARD
                    }
                    ".pcm.dmix.period_size"
                ]
            }
            default 1024
        }       
        period_time {
            @func refer
            name {
                @func concat
                strings [
                    "cards."
                    {
                        @func card_driver
                        card $CARD
                    }
                    ".pcm.dmix.period_time"
                ]
            }
            default -1
        }       
        periods {
            @func refer
            name {
                @func concat
                strings [
                    "cards."
                    {
                        @func card_driver
                        card $CARD
                    }
                    ".pcm.dmix.periods"
                ]
            }
            default 16
        }
    }
}

オフライン

 

#20 2006-11-02 05:35:55

oryaaaaa
メンバ
From: Aichi, Japan
登録日: 2006-10-31

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

よっしゃー! 根本的な解決できました

$ sudo gedit /usr/share/alsa/pcm/dmix.conf

    @args.FORMAT {
        type string
        default S16_LE
    }

これを


    @args.FORMAT {
        type string
        default S32_LE
    }

と書き換えて、再起動すれば起動音から、解像度の高い音になります

Alsaがバージョンアップしたら、また書き換えなきゃいけないけど
音が変わったとすぐ分かるし、もうバージョンアップ止まってるので
これでいいや。

このスレは無事解決しました。ありがとうございます

オフライン

 

#21 2006-11-02 08:28:40

gmax
メンバ
From: 兵庫県
登録日: 2006-10-24

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

良スレage。
Prodigyはいつか欲しいなぁと思いつつ。しかし奥深いですね。
しかし、モニタしながらのライン入力からのキャプチャはLinuxでもダメですか。

dmix.conf,asoundrc反映はログアウトしなくても、大抵はアプリケーション再起動で大丈夫だったと思いますがどうですか?

オフライン

 

#22 2006-11-02 18:50:12

oryaaaaa
メンバ
From: Aichi, Japan
登録日: 2006-10-31

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

ドウダロウネー
このアイオーデータのWチューナーキャプチャボードに対応した、Linuxドライバが存在しないので
検証はまったくできないよ。今日、カーボン板が届いたので、キャプチャーボードにかぶせるように
加工して、電磁波シールドPCIボックスとして使う予定です。

設定ファイルの反映で、アプリケーション再起動は推奨しないほうが良いでしょう。このスレを読んで
学べる人はスキルが低いはずなので、基本はログアウト、システム部分変更はリブートで。ソースを
読んで理解できるレベルに達したら、それでいいと思う。基本操作を知らない人が真似すると、はまるよ。

Linux、UNIXシステムを触るのは10年ぶりぐらい。ここ5年、どんな環境変化があったのか無知の状態です
ムカシ、ムカシ、トテモ、マゾッケタップリノ、ユニックスガアリマシタ
20MBノHDDデ、Xサーバーヲコンパイルシテマシタヨw
シンジラレナイカモネ、イッシュウカンイジョウカカッタカラネw
KNOPPIXをWinのシステム障害起きたとき、ネットで調べるために利用する程度だった

最後の編集者: oryaaaaa (2006-11-07 20:03:01)

オフライン

 

#23 2006-11-04 13:59:55

gmax
メンバ
From: 兵庫県
登録日: 2006-10-24

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

いや、キャプチャというのは「音声の録音」という意味でして。

価格.comのレビュー記事から、ライン入力からの録音について言及されてたのでちょっと聞いてみたのです:-)

# ちなみに私も20MB/480DX2/HDD20MBくらいのマシンでFreeBSDを動かしていた世代です...

オフライン

 

#24 2006-11-05 00:26:45

oryaaaaa
メンバ
From: Aichi, Japan
登録日: 2006-10-31

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

ア、そういう意味なら、まだやることが残ってます

ネイティブドライバーの開発

先週メールでALSAドライバーの開発者にアドバイスをもらってました。
構成からRevolution7.1に近いということで、これからHD2向けのドライバー
を作ってみようと思います。一から作るわけではないし、鳴らせること自体
できてるので、なんとかなるんじゃないかと

追記1
ALSAのソースからコンパイルしようとするとエラーが出るので、カーネル
ソースのSOUNDを直接編集してProdigyhd2を登録した。さぁ動くだろうか?

root@saviour:/usr/src/linux-2.6.18/sound/pci/ice1712# ls -l
合計 492
-rw-r--r-- 1 root src    446 2006-11-09 03:25 Makefile
-rw-r--r-- 1 root root  5057 2006-09-20 12:42 ak4xxx.c
-rw-r--r-- 1 root root  2755 2006-09-20 12:42 amp.c
-rw-r--r-- 1 root root  1593 2006-09-20 12:42 amp.h
-rw-r--r-- 1 root root 59880 2006-09-20 12:42 aureon.c
-rw-r--r-- 1 root root  2315 2006-09-20 12:42 aureon.h
-rw-r--r-- 1 root root 23024 2006-09-20 12:42 delta.c
-rw-r--r-- 1 root root  5696 2006-09-20 12:42 delta.h
-rw-r--r-- 1 root root  9235 2006-09-20 12:42 envy24ht.h
-rw-r--r-- 1 root root 31132 2006-09-20 12:42 ews.c
-rw-r--r-- 1 root root  3456 2006-09-20 12:42 ews.h
-rw-r--r-- 1 root root 11012 2006-09-20 12:42 hoontech.c
-rw-r--r-- 1 root root  3457 2006-09-20 12:42 hoontech.h
-rw-r--r-- 1 root root 84221 2006-09-20 12:42 ice1712.c
-rw-r--r-- 1 root root 17915 2006-09-20 12:42 ice1712.h
-rw-r--r-- 1 root src  66295 2006-11-09 03:24 ice1724.c
-rw-r--r-- 1 root root  6418 2006-09-20 12:42 juli.c
-rw-r--r-- 1 root root   235 2006-09-20 12:42 juli.h
-rw-r--r-- 1 root root 24039 2006-09-20 12:42 phase.c
-rw-r--r-- 1 root root  1785 2006-09-20 12:42 phase.h
-rw-r--r-- 1 root root 22651 2006-09-20 12:42 pontis.c
-rw-r--r-- 1 root root  1179 2006-09-20 12:42 pontis.h
-rw-r--r-- 1 root root 13103 2006-09-20 12:42 prodigy192.c
-rw-r--r-- 1 root root   339 2006-09-20 12:42 prodigy192.h
-rw-r--r-- 1 root src   5269 2006-11-09 03:24 prodigyhd2.c
-rw-r--r-- 1 root src   1582 2006-11-09 03:24 prodigyhd2.h
-rw-r--r-- 1 root root  6937 2006-09-20 12:42 revo.c
-rw-r--r-- 1 root root  1678 2006-09-20 12:42 revo.h
-rw-r--r-- 1 root root   796 2006-09-20 12:42 stac946x.h
-rw-r--r-- 1 root root  3570 2006-09-20 12:42 vt1720_mobo.c
-rw-r--r-- 1 root root  1502 2006-09-20 12:42 vt1720_mobo.h

Makefile, ice1724.c, prodigyhd2.c, prodigyhd2.h この4つを作成、書き換えた
だけです。色々調べるとalsaのソースって、modulesで別に存在している
けれど、このソースがカーネルの特定リビジョン依存になってるんです。
それで普通に作ろうとするとエラーになります。Modulesでなく、今のカーネルは
組込みのようなので直接編集したわけです。

追記2

ALSAの古いソースに書き換えたものを、コピーしたらコンパイルエラー
になった。変更してない行でエラーになってるので、や、やりなおしだ。

最後の編集者: oryaaaaa (2006-11-09 05:55:23)

オフライン

 

#25 2006-11-09 07:15:21

oryaaaaa
メンバ
From: Aichi, Japan
登録日: 2006-10-31

Re: Audiotrak Prodigy HD2 (120dB DAC, 2ch Sound)

/*
*   ALSA driver for ICEnsemble ICE1712 (Envy24)
*
*   Lowlevel functions for M-Audio Revolution 7.1
*
*    Copyright (c) 2003 Takashi Iwai <[email protected]>
*      Custmize to AudioTrak Prodigy HD2, 2006 oryaaaaa
*
*   This program is free software; you can redistribute it and/or modify
*   it under the terms of the GNU General Public License as published by
*   the Free Software Foundation; either version 2 of the License, or
*   (at your option) any later version.
*
*   This program is distributed in the hope that it will be useful,
*   but WITHOUT ANY WARRANTY; without even the implied warranty of
*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*   GNU General Public License for more details.
*
*   You should have received a copy of the GNU General Public License
*   along with this program; if not, write to the Free Software
*   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
*
*/     

#include <sound/driver.h>
#include <asm/io.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <sound/core.h>

#include "ice1712.h"
#include "envy24ht.h"
#include "prodigyhd2.h"

static void _i2s_mclk_changed(struct snd_ice1712 *ice)
{
    /* assert PRST# to converters; MT05 bit 7 */
    outb(inb(ICEMT1724(ice, AC97_CMD)) | 0x80, ICEMT1724(ice, AC97_CMD));
    mdelay(5);
    /* deassert PRST# */
    outb(inb(ICEMT1724(ice, AC97_CMD)) & ~0x80, ICEMT1724(ice, AC97_CMD));
}

/*
* change the rate of envy24HT, AK4355 and AK4381
*/
static void prodigyhd2_set_rate_val(struct snd_akm4xxx *ak, unsigned int rate)
{
    unsigned char old, tmp, dfs;
    int reg, shift;

    if (rate == 0)    /* no hint - S/PDIF input is master, simply return */
        return;

    /* adjust DFS on codecs */
    if (rate > 96000)
        dfs = 2;
    else if (rate > 48000)
        dfs = 1;
    else
        dfs = 0;

    if (ak->type == SND_AK4355 || ak->type == SND_AK4358) {
        reg = 2;
        shift = 4;
    } else {
        reg = 1;
        shift = 3;
    }
    tmp = snd_akm4xxx_get(ak, 0, reg);
    old = (tmp >> shift) & 0x03;
    if (old == dfs)
        return;

    /* reset DFS */
    snd_akm4xxx_reset(ak, 1);
    tmp = snd_akm4xxx_get(ak, 0, reg);
    tmp &= ~(0x03 << shift);
    tmp |= dfs << shift;
    // snd_akm4xxx_write(ak, 0, reg, tmp);
    snd_akm4xxx_set(ak, 0, reg, tmp); /* the value is written in reset(0) */
    snd_akm4xxx_reset(ak, 0);
}

/*
* initialize the chips on M-Audio Revolution cards
*/

static unsigned int prodigyhd2_num_stereo[] = {2};
static char *prodigyhd2_channel_names[] = {"PCM Playback Volume"};


static struct snd_akm4xxx akm_prodigyhd2 __devinitdata = {
    .type = SND_AK4358,
    .num_dacs = 2,
    .ops = {
        .set_rate_val = prodigyhd2_set_rate_val
    },
    .num_stereo = prodigyhd2_num_stereo,
    .channel_names = prodigyhd2_channel_names
};

static struct snd_ak4xxx_private akm_prodigyhd2_priv __devinitdata = {
    .caddr = 2,
    .cif = 0,
    .data_mask = VT1724_PRODIGYHD2_CDOUT,
    .clk_mask = VT1724_PRODIGYHD2_CCLK,
    .cs_mask = VT1724_PRODIGYHD2_CS0 | VT1724_PRODIGYHD2_CS1 | VT1724_PRODIGYHD2_CS2,
    .cs_addr = 0,
    .cs_none = VT1724_PRODIGYHD2_CS0 | VT1724_PRODIGYHD2_CS1 | VT1724_PRODIGYHD2_CS2,
    .add_flags = VT1724_PRODIGYHD2_CCLK, /* high at init */
    .mask_flags = 0,
};

static int __devinit prodigyhd2_init(struct snd_ice1712 *ice)
{
    struct snd_akm4xxx *ak;
    int err;

    /* determine I2C, DACs and ADCs */
    switch (ice->eeprom.subvendor) {
    case VT1724_SUBDEVICE_PRODIGYHD2:
        ice->num_total_dacs = 2;
        ice->num_total_adcs = 2;
        break;
    default:
        snd_BUG();
        return -EINVAL;
    }

    /* second stage of initialization, analog parts and others */
    ak = ice->akm = kcalloc(2, sizeof(struct snd_akm4xxx), GFP_KERNEL);
    if (! ak)
        return -ENOMEM;
    ice->akm_codecs = 2;
    switch (ice->eeprom.subvendor) {
    case VT1724_SUBDEVICE_PRODIGYHD2:
        ice->akm_codecs = 1;
        if ((err = snd_ice1712_akm4xxx_init(ak, &akm_prodigyhd2, &akm_prodigyhd2_priv, ice)) < 0)
            return err;
        /* unmute all codecs - needed! */
        snd_ice1712_gpio_write_bits(ice, VT1724_PRODIGYHD2_MUTE, VT1724_PRODIGYHD2_MUTE);
        break;
    }

    return 0;
}


static int __devinit prodigyhd2_add_controls(struct snd_ice1712 *ice)
{
    int err;

    switch (ice->eeprom.subvendor) {
    case VT1724_SUBDEVICE_PRODIGYHD2:
        err = snd_ice1712_akm4xxx_build_controls(ice);
        if (err < 0)
            return err;
    }
    return 0;
}

/* entry point */
struct snd_ice1712_card_info snd_vt1724_prodigyhd2_cards[] __devinitdata = {
    {
        .subvendor = VT1724_SUBDEVICE_PRODIGYHD2,
        .name = "Audiotrak Prodigy HD2",
        .model = "prodigyhd2",
        .chip_init = prodigyhd2_init,
        .build_controls = prodigyhd2_add_controls,
    },
    { } /* terminator */
};

2ch出力なので、Streoだけになるように書き換えた。DACの設定は後で
動かなかったらもう少し調査してみます。

結果
カーネルのALSAドライバを直接書き換えて、コンパイルできた。このとき
/usr/src/modulesに動かないALSAのドライバーがあるとカーネル再構築に
失敗するので注意
:~$ cat /proc/asound/cards
0 [ICE1724        ]: ICE1724 - ICEnsemble ICE1724
                      ICEnsemble ICE1724 at 0xac00, irq 233
1 [U0x46d0x8ad    ]: USB-Audio - USB Device 0x46d:0x8ad
                      USB Device 0x46d:0x8ad at usb-0000:00:0b.0-8, full speed
:~$
どういう訳か、今まで認識しなかったQCAMのマイクを認識するようになった
ちゃんと音をひろうw

dmesg
ACPI: PCI Interrupt Link [APC1] enabled at IRQ 16
ACPI: PCI Interrupt 0000:03:07.0[A] -> Link [APC1] -> GSI 16 (level, low) -> IRQ 233
ice1724: No matching model found for ID 0x12140124
ice1724: Invalid EEPROM version 1

prodigyhd2.h
#define PRODIGYHD2_DEVICE_DESC \
        "{{Audiotrak,Prodigy HD2},"
#define VT1724_SUBDEVICE_PRODIGYHD2    0x12140124

指定してあるんだけどなぁ・・・・、EEPROMのバージョンが肝なのかな?

発見 ice1724.c
static struct snd_ice1712_card_info *card_tables[] __devinitdata = {
    snd_vt1724_revo_cards,
    snd_vt1724_amp_cards,
    snd_vt1724_aureon_cards,
    snd_vt1720_mobo_cards,
    snd_vt1720_pontis_cards,
    snd_vt1724_prodigy192_cards,
    snd_vt1724_prodigyhd2_cards,
    snd_vt1724_juli_cards,
    snd_vt1724_phase_cards,
    NULL,
};
ここが抜けてれば、ルックアップしたときテーブルが無いから
ノーモデルになるね。

最後の編集者: oryaaaaa (2006-11-09 09:20:24)

オフライン

 

Board footer

Powered by FluxBB