arecord + .asoundrc + dsnoop = record left or right channels


Anonymous - Posted on 17 Июль 2011

для записи отдельно левого и отдельно правого канала линейного входа или микрофона с помощью утилиты arecord входящей в пакет alsa-tools нужно:

установить alsa-oss alsaplayer mpg321 alsaplayer-alsa alsa-base
если что то не поставиться не беда, но лучше конечно всё из списка

теперь идете и конфигурируете файл ~/.asoundrc
и загоняете в него вот этот текст

pcm.record_left {
    type dsnoop
    ipc_key 234884
    slave {
        pcm "hw:0,0"
        channels 2
    }
    bindings.0  0
}
pcm.record_right {
    type dsnoop
    ipc_key 2241234
    slave {
        pcm "hw:0,0"
        channels 2
    }
    bindings.0  1
}

теперь для записи достаточно ввести команду

$ arecord -f cd -c 1 -D record_left anyname.wav

или

$ arecord -f cd -c 1 -D record_right anyname.wav

как это работает?
то как я понял как это работает

в файле cat /etc/alsa-pulse.conf есть такие строки

@hooks [
        {
                func load
                files [
                        "/etc/asound.conf"
                        "/etc/asound-pulse.conf"
                        "~/.asoundrc"
                ]
                errors false
        }
]

то есть в нем самом настроенны круки так сказать на файлы влияющие на настройки звуковой карты и вообще вывода и ввода звука. и среди необходимых для вывода звука через плагин dsnoop есть и ~/..asoundrc но он скорее всего у вас отсутствует в домашнем каталоге, поэтому его нужно создать.
А в файле ~/.asound записанны настройки которые через плагин dsnoop монтирует на моноканальный выход звука либо левый канал либо правый канал.

И вот интересно, а как это будет работать если записывать и левый канал и правый канал, не знаю, что новое появиться допишу

5
Ваша оценка: Ничего Рейтинг: 5 (1 vote)

как оказалось левый и правый канал сделанный на одном и том же (физически так сказать) устройстве, вместе записывать нельзя. при активности одного запуск второго канал будет писать что устройство занято.
печально, ищу еще способы как в opensource спокойно записывать левый и правый канал

С ALSA много как можно наизвращаться. Я, например, сделал вывод звуковых сообщений на отдельную маленькую колонку, независимую от основной аудиосистемы.
В ~/.asoundrc написал

pcm.rearmono { #устройство будет называться rearmono
    type plug  #тип - PCM с преобразованием формата
    slave.pcm surround40  #поработить устройство surround40
    slave.channels 4  #у которого 4 канала
    # translation table
    ttable.0.2 1 #вх. канал №0(левый) в вых. канал №2(левый задний) с коэфф. 1
    ttable.1.3 1 #вх. канал №1(правый) в вых. канал №3(правый задний) с коэфф. 1
    ttable.1.2 1 #вх. канал №1(правый) в вых. канал №2(левый задний) с коэфф. 1
    ttable.0.3 1 #вх. канал №0(левый) в вых. канал №3(правый задний) с коэфф. 1
}

Можно записать с фигурными скобками вместо точек.

pcm.rearmono {
    type plug
    slave {
        pcm surround40
        channels 4
    }
    ttable {
        0 {
            2 1
        }
        1 {
            3 1
        }
        1 {
            2 1
        }
        0 {
            3 1
        }
    }
}

Музыка и кино играют в устройство по умолчанию и идут в передние каналы.
Синтезатор речи треплется в заднем.

echo $(echo $* |iconv -f utf8 -t koi8r|tr -d +) | \
/usr/local/bin/ru_tts -l /var/log/unknown.words -p 0.0 -r 0.0 -s /usr/local/share/ru_tts/lexicon | \
aplay -Drearmono -c 1 -t raw -r 10000 -f S8 -q

тоесть он тебе читает с выражением логи на заднем плане? Ж:-)
что за ru_tts?

Отправить комментарий

Google Friend Connect (leave a quick comment)
loading...
Содержание этого поля является приватным и не предназначено к показу.