LINUX.ORG.RU
ФорумGames

Звук в mednafen

 ,


0

1

Вот тут начало всей эпопеи. Пробовал многое и просьба опробованное не предлагать. Остановился на mednafen. Почти всем устраивает (пару игр не поддерживает и не нашёл паузы), но главная проблема — нет звука. http://mednafen.fobby.net/documentation/#Core+Features%01Troubleshooting+and+Common+Solutions%01No+sound+output+on+Linux.:

Due to historical Linux distribution design decisions and problems with various software audio mixing solutions on Linux, Mednafen's ALSA output code attempts to output to device «hw:0» by default. This may cause problems if your sound card does not support hardware mixing of streams and your system is running another program that is monopolizing the sound device(like the PulseAudio server), or you have used multiple sound cards.

For the case of PulseAudio, you can utilize the pasuspender tool, or set the sound.device setting to «sexyal-literal-default» to try to use PulseAudio through ALSA(assuming your distribution has things configured properly); the use of pasuspender is the recommended option.

Пробовал второй вариант: хрипящий звук. С первым не разобрался, не в курил, кто в курсе - помогите вот ссылка. З.Ы. Если нажать в консоли ctrl+c: «Ну-ка не смей меня прерывать!». В конфиге русские комментарии. Разработчики наши?

Выставь у альсы период 128, буфер 512 (или около того), частоту дискретизации нативную для карточки (у меня это 96000) и настрой ресамплер альсы (speex.medium плагин). Будут минимальные задержки звука, отсутствие треска, практически нулевой рассинхрон с картинкой и прочие прелести. Програмный микшер возможно понадобится.

Я так понимаю у тебя проблема именно настроить программный микшер. Просто скопируй из откуда-нибудь из арчевики конфиг с упоминанием dmix.

С пульсаудио звук всегда будет с задержкой (зависит от, но она будет принципиально)

anonymous ()
Ответ на: комментарий от anonymous

Меднафен по-моему может сразу в 96000 формате выдавать, т.е. ресамплер не используется если ты скажешь ему в нативном для карточки режиме работать.

anonymous ()
Ответ на: комментарий от anonymous

Выставь у альсы период 128, буфер 512 (или около того), частоту дискретизации нативную для карточки (у меня это 96000) и настрой ресамплер альсы (speex.medium плагин)

А как это сделать?

KOT040188 ★★ ()
Ответ на: комментарий от anonymous

если ты скажешь ему в нативном для карточки режиме работать.

А как это сделать?

KOT040188 ★★ ()

Если нажать в консоли ctrl+c: «Ну-ка не смей меня прерывать!». В конфиге русские комментарии. Разработчики наши?

Локализация. Слышал про такое?

anonymous ()
Ответ на: комментарий от KOT040188

Первый раз вижу локализацию в конфиге.

Если тебя это успокоит, то у меня в конфиге ни слова по-русски :)

Я надеялся на то, что разработчики наши…

ХЗ, проверить никто не запрещает.

По теме: попробуй Pulseaudio.

anonymous ()
Ответ на: комментарий от KOT040188

В прямом. Включи вывод через Pulseaudio.

anonymous ()

Открой конфиг Mednafen (у меня это ~/.mednafen/mednafen-09x.cfg, например), найди строку с «sound.device» и поставь «pulse». Должно получиться «sound.device pulse».

i-rinat ★★★★★ ()
Ответ на: комментарий от KOT040188

Ну тогда стоит попробовать в device написать что-нибудь типа plughw:0,0, а перед запуском mednafen прибивать демон PulseAudio с помощью killall pulseaudio.

i-rinat ★★★★★ ()

puNES хороший эмулятор NES/Dendy.

mednafen это пример так называемого плохоработающего комбайна, вроде X.Org

EXL ★★★★★ ()
Ответ на: комментарий от EXL

Да пробовал я его. Не вспомню чего (слишком много эмуляторов пробовал), но чего-то, что мне нужно в нём нет. Скорее всего или турбо кнопок или назначение функций на геймпад. А может и не все игры играл. Ради интереса завтра проверю.

KOT040188 ★★ ()
Ответ на: комментарий от KOT040188

турбо кнопок

http://wstaw.org/m/2016/10/16/Screenshot_20161016_060441.png

назначение функций на геймпад.

http://wstaw.org/m/2016/10/16/Screenshot_20161016_060819.png

А может и не все игры играл.

Во все нормальные NES-образы я вроде уже переиграл на нём. Китайские, могут быть проблемы, да. Но какой смысл запускать китайское говно я не понимаю.

EXL ★★★★★ ()
Ответ на: комментарий от EXL

Но какой смысл запускать китайское говно я не понимаю.

А у меня в детстве только китайские хаки и были. И когда я играю не в хаки, не те ощущения… Судя по картинке вспоминается какая-то проблема с геймпадом, не определялся что ли. Может и ошибаюсь, много эмуляторов было…

KOT040188 ★★ ()
Последнее исправление: KOT040188 (всего исправлений: 1 )
Ответ на: комментарий от KOT040188

А убийство пульса мне ничем не грозит? Как-то страшно звучит…

Что-то я уже и забыл, как это со стороны звучит.

В общем, так. Когда какая-нибудь программа хочет воспроизвести звук через PulseAudio, она через библиотеку libpulse пытается соединиться с звуковым сервером. Обычно сервер — это программа, работающая на локальной машине. Если с сервером соединиться не получается, он запускается, отцепляется от запустившего процесса и остаётся запущенным, даже если программа закрывается. Всё это делается внутри libpulse, поэтому программы не в курсе, запущен демон или нет, они просто дают команду воспроизвести звук, а все необходимые действия производятся за них. Скорее всего, когда ты логинишься, PulseAudio даже не запущен, его запускает первая программа, которая хочет воспроизвести звук.

Проблема заключается в том, что запустившись, сервер PulseAudio захватывает звуковое устройство в монопольном режиме. Пока он запущен, программы, которые хотят выводить звук напрямую через ALSA (mednafen, например), звук вывести не смогут. В таком случае завершение процесса pulseaudio — самый простой способ это устройство освободить. Всё, что ты при этом теряешь — звук от уже запущенных программ. Как только любая другая программа попытается воспроизвести звук через PulseAudio, сервер снова будет запущен.

Да, кстати. Обычно вместе с PulseAudio установлен плагин для ALSA, который заворачивает ALSA-программы в PulseAudio, если они открывают звуковое устройство «default». В общем, всё сложно. Проще было бы, если Mednafen научилась выводить звук в PulseAudio напрямую.

i-rinat ★★★★★ ()
Ответ на: комментарий от EXL

Я смотрю, последняя версия в исходниках. Не поделитесь бинарником?

KOT040188 ★★ ()
Ответ на: комментарий от KOT040188

Забавная ситуация. Первая игра даже не хак, но puNES не переваривает её. Скачал китайский хак аладина, в котором мелодия на уровне играет один раз (в детстве именно такой был) и puNES его скушал…

KOT040188 ★★ ()
Ответ на: комментарий от KOT040188

Похоже, у тебя какой-то аудиоадаптер со странными драйверами. Странно, что звук через PulseAudio при этом работает нормально. У тебя ведь нормально звук работает, в браузерах например?

i-rinat ★★★★★ ()
Ответ на: комментарий от KOT040188

У меня тоже intel, но их же там куча разных, как повезёт. Возможно, адаптер просто не может обеспечить запрошенных приложением размеров буфера.

Есть несколько вариантов:

  • поиграться с sound.buffer_time, sound.period_time и sound.rate;
  • чинить код для вывода через ALSA;
  • дописать код вывода через PulseAudio;
  • попробовать на другом компьютере;
  • попробовать другой эмулятор.
i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

попробовать другой эмулятор

Пожалуй я так и сделаю. puNES всем хорош. Только вот некоторые игры не переваривает. Пока удалось заменить их на рабочие варианты. Самое интересное, что размер файлов одинаковый, один играет, а другой нет…

KOT040188 ★★ ()
Ответ на: комментарий от KOT040188

Что с ней не так?

Наверняка похаканный и сломанный китайский говнором.

В нормальные ромы у меня всё играется.

http://wstaw.org/m/2016/10/16/Screenshot_20161017_022742.png

http://wstaw.org/m/2016/10/16/Screenshot_20161017_023206.png

http://wstaw.org/m/2016/10/16/Screenshot_20161017_024109.png

А у меня в детстве только китайские хаки и были. И когда я играю не в хаки, не те ощущения…

Ну тогда тебе придётся только страдать. Потому что никакой здравомыслящий разработчик эмуляторов не будет разбираться в том, какой там говномаппер засунули китайцы в катридж.

Забавная ситуация. Первая игра даже не хак, но puNES не переваривает её. Скачал китайский хак аладина, в котором мелодия на уровне играет один раз (в детстве именно такой был) и puNES его скушал…

У меня работает. Качай ромы с http://www.emu-land.net/consoles/dendy/roms?act=showonly&id=49 Твои, скажем так, с китайским запашком.

EXL ★★★★★ ()
Последнее исправление: EXL (всего исправлений: 1 )
Ответ на: комментарий от EXL

Наверняка похаканный и сломанный китайский говнором

Нет, как раз похаканный puNES переваривает https://dl.dropboxusercontent.com/u/85152410/Aladdin 4 (1996) (Unl) [!].nes Этот вариант был у меня в детстве здесь обрезана музыка на уровне.

Потому что никакой здравомыслящий разработчик эмуляторов не будет разбираться в том, какой там говномаппер засунули китайцы в катридж

Отнюдь. Давайте быть честными. Я перепробовал уйму эмуляторов и в большинстве китайские хаки работают на ура. И в puNES тоже (смотрите выше). И вот эти самые игры, которые не работают в puNES, отлично работают в большинстве других эмуляторах. Вообще идеальный в этом плане эмулятор VirtuaNES Plus. Но он нелинуксовый…

KOT040188 ★★ ()
Последнее исправление: KOT040188 (всего исправлений: 1 )
Ответ на: комментарий от KOT040188

Давайте быть честными. Я перепробовал уйму эмуляторов и в большинстве китайские хаки работают на ура.

Да, давайте. Все разработчики тестируют свои эмуляторы на официальных ромах, а заведётся ли там заскорузлый китайский похаканный ром зависит от фазы луны и полного Random'а

Я отказываюсь понимать возню с работоспособностью китайского хлама. Есть классические игры для NES и Famicom. В них все играют, они хорошие, они сделаны так, как это задумывали их создатели и разработчики.

Да, есть небольшое количество действительно стоящих китайских хаков вроде новых частей Contra, Tank 1990 и того же Aladdin. Они тоже работают в эмуляторах, поскольку эти игры хорошо тестировались. Правильнее было бы их назвать не хаками, а портами или вообще отдельными играми. Таких игрушек единицы.

Но остальные 99% китайских хаков — лютый треш, меняющий логику игры, вроде добавления новых жизней и ослабления противников, или же замена оригинальных спрайтов игры на чужеродные, вроде тех же Chip 'n Dale 3 прилепленных к Heavy Barrel. Этот треш недостоин вообще запуска на приличных эмуляторах.

EXL ★★★★★ ()
Ответ на: комментарий от EXL

Но остальные 99% китайских хаков — лютый треш, меняющий логику игры, вроде добавления новых жизней и ослабления противников, или же замена оригинальных спрайтов игры на чужеродные, вроде тех же Chip 'n Dale 3 прилепленных к Heavy Barrel. Этот треш недостоин вообще запуска на приличных эмуляторах.

Красиво так, завуалировано, назвали меня говноедом. Спасибо. У меня в детстве не было большого выбора. Долго приходилось упрашивать маму купить мне китайские хаки-многоигровки. Об оригиналах-одноигровках и речи не шло, они стоили раз в 7 дороже (не шучу). Считайте меня извращенцем (или «меломаном»), но я хочу играть именно в этот лютый треш, который был в детстве. Да и большинство эмуляторов позволяют это. Другое дело всякие сопутствующие мелочи…

KOT040188 ★★ ()
Последнее исправление: KOT040188 (всего исправлений: 2 )
Ответ на: комментарий от KOT040188

Так тебе дали прекрасную возможность перестать питаться китайским трешаком и поиграть в оригинальные игры такими, какими их сделали создатели.

Сложно? Заюзай сохранения/замедление. Но пройди оригинал, а не китайских забагованный хак.

В том-то и смысл, что в детстве у тебя не было большого выбора. Зато он есть сейчас и всё это можно сравнить.

EXL ★★★★★ ()
Ответ на: комментарий от KOT040188

Тогда страдай, вариантов других нет.

Точнее есть другой вариант — взять в ручки C, C++, MOS 6502 Assembler и идти допиливать всякие там Mednafen'ы и puNES, чтобы они нормально работали с китайскими говноромами. И ещё не факт, что эти изменения примут в апстрим эмулятора.

EXL ★★★★★ ()
Последнее исправление: EXL (всего исправлений: 2 )
Ответ на: комментарий от EXL

Mednafen'ы как раз не надо. Он только две многоигровки не поддерживает. Не велика потеря. Я уже заменил регулирующие в puNES игры. Буду смотреть дальше. А страдать я не собираюсь.

KOT040188 ★★ ()
Последнее исправление: KOT040188 (всего исправлений: 2 )
17 февраля 2017 г.

Задержка в pulseaudio

К сожалению Pulsaudio дает большую задержку. Как настроить вывод Меднафен напрямую через Альсу? Выставлял буфер и период - не помогло.

Rododendron ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.