Магический .asoundrc, чтобы с OSS работала звукозапись через эмуляцию ALSA · Заметки

Впервые за много лет получил работающую звукозапись в Linux с M-Audio Audiophile 192/24 в ALSA-приложениях. Эта карта хорошо работает только с OSS-драйверами, и мука с современным отупевшим и потерявшим нормальную поддержку OSS софтом была очень долгой. Секретов успеха два:
1) Можно описать карту как "asym" и задать в ней различные входные и выходные DSP-устройства OSS и в одной виртуальной дефолтной карте поиметь работающие вход и выход, а значит, даже у самых глупых ALSA-приложений не будет сомнений, откуда брать звук.
2) Нужно задать параметры буферизации звука - без этого чудо не происходит!
Итак, волшебный ~/.asoundrc:

·· [Continuing] ··

pcm.oss {
  type asym
  playback.pcm
  {
     type oss
     device /dev/dsp0
  }
  capture.pcm
  {
     type oss
     device /dev/dsp2
  }
  period_time 0
  period_size 1024
  buffer_size 8192
}

pcm.!default {
  type asym
  playback.pcm
  {
     type oss
     device /dev/dsp0
  }
  capture.pcm
  {
     type oss
     device /dev/dsp2
  }
  period_time 0
  period_size 1024
  buffer_size 8192
}

ctl.oss {
  type oss
  device /dev/mixer
}

ctl.!default {
  type oss
  device /dev/mixer
} 

Новые знания почёрпнуты отсюда: http://alsa.opensrc.org/Dmix#3._configure_.asoundrc_for_aoss-testing:
Там же можно почерпнуть ещё интересностей, например, добавить параметры format "S32_LE" и rate 192000 для более качественного звучания.

UPD: Через какое-то время звук перестал работать и параметры буферизации пришлось удалить, но запись продолжила функционировать:

pcm.oss {
  type asym
  playback.pcm
  {
     type oss
     device /dev/dsp0
  }
  capture.pcm
  {
     type oss
     device /dev/dsp2
  }
}

pcm.!default {
  type asym
  playback.pcm
  {
     type oss
     device /dev/dsp0
  }
  capture.pcm
  {
     type oss
     device /dev/dsp2
  }
}

ctl.oss {
  type oss
  device /dev/mixer
}

ctl.!default {
  type oss
  device /dev/mixer
} 

По видимому, основным лекарством является именно использование конфигурации "asym", чтобы в дефолтной виртуальной карте работали и ввод, и вывод.

UPD 2: Впоследствии, запись через ALSA->OSS снова сломалась и починить её я пока не смог :( Зато запинал OSS + PulseAudio, о чём будет отдельный пост.


Tags: Linux.


Comments:

No Comments for this post yet...

Leave a comment:

Your email address will not be displayed on this site.
Your URL will not be displayed on this site. Comments containing URL's of non-personal pages may be removed.
Confirmation Code:
Human Confirmation Code (Captcha)

HTML tags and "<", ">" symbols are not allowed. Links will not be converted to hyperlinks. Any commercials are removed and reported as abuse.

Archives

                                                                                                                                                                                                                                                                   


© Sergey A. Galin, 1998-2021 sageshome.net/blog/