• Внешний USB-ЦАП-Аудиопроцессор CDD-010 можно купить

Новый REFLEX 2.0

И ещё об одной проблеме хотел отписать, с которой столкнулся во время игры в ритм-игру osu!, в которую сейчас на рефлексе играть невозможно, тк результаты игры не отправляются из-за того, что "System audio playback is not working as expected". Механика борьбы с читерством. В голову только ночью пришло, как показать суть проблемы.

Написал простенький python-скрипт, который делает:
1. Создает плеер, открывает и подготавливает аудиофайл к проигрыванию
2. Сохраняет текущее время
3. Начинает проигрывание файла
4. Играет файл до конца
5. Выводит время, которое файл проигрывался: из текущего вычитаем сохраненное в п.2 время.

Похожий алгоритм и используется в ритм-игре osu! для проверки "правильности" работы аудиоустройства.

Тест показал, что расхождение на reflex'е у аудиофайла длиной 230.791 секунд составило аж 4.6 секунды! Те рефлекс играет быстрее, чем должен. На встроенной же карте (для убедительности, что тест написан верно) результат составил 26 мс. Прогонял несколько раз, результат одинаковый и стабильный, в пределах погрешности. Причем, на слух никак не заметно. Вот так вот reflex экономит нам время :)

Сам скрипт также прилагаю, но для его работы необходимо поставить зависимости: pygame, sounddevice и ffmpeg(последний поставить может быть проблематично, поэтому можно убрать используемый ffmpeg-код, он используется только для вывода реальной длины аудиофайла).


UPD: такое поведение наблюдается в режиме slave, в если reflex - мастер, то такого не наблюдается

reflex_2.0_time_problem.jpg
Python:
from pygame import mixer
import time
import ffmpeg
import sounddevice as sd

audio_devices = sd.query_devices()
default_output_device = sd.default.device[1]
print("AUDIO DEVICE: {}".format(audio_devices[default_output_device]['name']))

AUDIO_FILE = "C:/sati.mp3"


real_audio_duration = ffmpeg.probe(AUDIO_FILE)['format']['duration']

mixer.init()
mixer.music.load(AUDIO_FILE)
start_time = time.time()
mixer.music.play()
while mixer.music.get_busy():
    pass

print("\nReal elapsed time: {}s, Audio file duration: {}s".format(time.time() - start_time, real_audio_duration))
 
Последнее редактирование:
Нашел таки решение проблемы с таймингами - у меня в схеме были беды с генератором мастер-клока. Запитал ЦАП и ADAU от кварца 12.288 Mhz, перешил параметры ADAU под 12.288 (из дш) и в итоге проблема с таймингами ушла! Так что в целом можно использовать скрипт выше для проверки правильной настройки мастер-клока, когда reflex является slave'ом.

@Евгений
На MacOS на 2.3.0 beta, кстати, перестала заикаться и в режиме 2.0, так что тут была проблема моих корявых рук. (интересно опять же почему оно на винде не заикалось и в 7.1 режиме тоже) Но шум-треск на ней остался такой же, не уверен точно, но тут не похоже на проблему моей схемы. На винде работает также, но теперь проходит мой тест и не ломает osu!. С линуксом всё тоже прекрасно.

UPD: проблема с проигрыванием на MacOS и linux не на beta прошивках есть, мои беды с генератором тут не при чем, так что beta прошивка и правда фиксит!
 
Последнее редактирование:

Vitaliy

Active member
Приветствую. Подтверждаю, Reflex 2.0 проигрывает быстрее.
 
Последнее редактирование:

Vitaliy

Active member
Приветствую. Я подтверждаю ваши довады. Reflex 2.0 действительно проигрывает быстрее чем положено.
Но я думал, что это проблема в частоте или битности.
Пример. Если трек 44,1/16, а в плеере проигрывается 96/32 то это заметно даже на слух. Если вы чувствуете ритм.
А если плеер подогнать к данным трека 44.1/16 то вроде бы нормально. Но точно замерить у меня нет возможности.
 
Reflex 2.0 действительно проигрывает быстрее чем положено.
Конкретно у меня проблема была в неправильно настроенном/выбранном мастер-клоке, который и ломал reflex в slave-режиме. На стоковых генераторах ADAU1452, AD1938 (которые поставляются ЧиД'ом), всё хорошо. (подтверждено моим синтетическим тестом и анти-timewarp алгоритмом в osu!) Если reflex - мастер, то тоже всё отлично.

Насчет
>если вы чувствуете ритм
Ритм как раз не ломается, песня банально ускоряется, но это стабильно, сам ритм не ломается, по крайней мере у меня. В тч и osu! подстраивается под сдвиг рефлекса, ломается только отправка результата, тк игра считает плей читерским.
 

Vitaliy

Active member
Конкретно у меня проблема была в неправильно настроенном/выбранном мастер-клоке, который и ломал reflex в slave-режиме. На стоковых генераторах ADAU1452, AD1938 (которые поставляются ЧиД'ом), всё хорошо. (подтверждено моим синтетическим тестом и анти-timewarp алгоритмом в osu!) Если reflex - мастер, то тоже всё отлично.

Насчет
>если вы чувствуете ритм
Ритм как раз не ломается, песня банально ускоряется, но это стабильно, сам ритм не ломается, по крайней мере у меня. В тч и osu! подстраивается под сдвиг рефлекса, ломается только отправка результата, тк игра считает плей читерским.
Понятно., т. е. если я буду использовать внешний клок от AD1934/38, то рефлекс 2.0, может проигрывать трек быстрее, а если буду использовать внутренний клок от самого рефлекс 2.0, то все должно быть нормально?, верно?
 

Vitaliy

Active member
А если использовать штатный внешний генератор для рефлекс 2.0 от Чип и Дип проблему может решить?
 
Понятно., т. е. если я буду использовать внешний клок от AD1934/38, то рефлекс 2.0, может проигрывать трек быстрее, а если буду использовать внутренний клок от самого рефлекс 2.0, то все должно быть нормально?, верно?
В режиме мастера я проверил - у меня не расходились тайминги (в пределах погрешности). В режиме slave у меня синхронизация от ADAU по LRCLK/BCLK, MCLK между рефлексом и ADAU не подключен. И если неправильный генератор будет, то могут быть проблемы в slave-режиме. Насчет мастер-режима с клоком от внешнего генератора не подскажу, у меня его нет. Хотя опять же, возможно можно и ADAU настроить не очень правильно, тогда может и в master-режиме будут проблемы (но кмк не должны быть, на то он и мастер).
 

Vitaliy

Active member
В режиме мастера я проверил - у меня не расходились тайминги (в пределах погрешности). В режиме slave у меня синхронизация от ADAU по LRCLK/BCLK, MCLK между рефлексом и ADAU не подключен. И если неправильный генератор будет, то могут быть проблемы в slave-режиме. Насчет мастер-режима с клоком от внешнего генератора не подскажу, у меня его нет. Хотя опять же, возможно можно и ADAU настроить не очень правильно, тогда может и в master-режиме будут проблемы (но кмк не должны быть, на то он и мастер).
Я про этот внешний генератор.
Дело в том, что если рефлекс 2.0 подключаю к пк, то расхождения по скорости нет. Если подключаем к тв, то скорость воспроизведения звука слишком быстрая. На генераторе пытаюсь отрегулировать частоту с помощью джамперов, но увы. Она либо слишком медленная либо не соответствует норме. Вот как с этим бороться пока не придумал.
 

Вложения

Евгений

Administrator
Команда форума
Очень благодарен Вам за важную информацию!
Попробуйте, пожалуйста, вложенную прошивку с MacOS для конфигурации модуля 2.0 (можно и для 3.1/4.0/5.1, только не для 7.1 и более) с установленным и снятым джампером 14.
 

Вложения

Если подключаем к тв
Мне кажется, Ваш телевизор "форсит" режим, в котором не может работать ЦАП. Например, у меня DSP работает в режиме 24bit192KHz, а андроид телефон выставляет 16bit48KHz, из-за чего звук сильно искажен, причем руками выставить другой нельзя. Но это в целом логично и нормально, обратная связь с рефлекса, которая выдает текущий режим у меня и у Вас не используется и поэтому рефлекс никак не может установить настройки DSP/ЦАП'а, они захардкожены на 192KHz (в вашем случае мб на другие). Танцы с генератором Вам скорее всего не помогут, я так понял, два генератора тут только для того, чтобы можно было выбрать правильный множитель частоты (44.1KHz/48KHz)
 
Очень благодарен Вам за важную информацию!
Попробуйте, пожалуйста, вложенную прошивку с MacOS для конфигурации модуля 2.0 (можно и для 3.1/4.0/5.1, только не для 7.1 и более) с установленным и снятым джампером 14.
Протестировал - звук играет отлично. На MacOS отвалилась запись (записывает теперь с таким же треском, как ранее на выходе был, причем с 14-м джампером лучше, но треск всё равно есть на записи), на винде хорошо работает.
 

Евгений

Administrator
Команда форума
Протестировал - звук играет отлично. На MacOS отвалилась запись (записывает теперь с таким же треском, как ранее на выходе был, причем с 14-м джампером лучше, но треск всё равно есть на записи), на винде хорошо работает.
Благодарю за информацию.
 

Lazy_66

Well-known member
Даааааааа...

По большому счёту ЧипоДипы должны КАЖДОМУ активному участнику этой ветки раздавать оборудование даром. Потому как эти человеки совершенно на голом этуазизме отваливают работу тестировщиков. Выискивают баги, пишут развёрнутые комментарии, доводят сырьё до ума...
 

SERG

Well-known member
В первом сообщении этой темы приведены идентификаторы карт и названия драйверов, которые можно найти и скачать.


Это что-то странно. Скриншоты можете сделать? Какая версия ChipStudio и версия прошивки модуля?
Прилагаю скриншоты. ChipStudio 0.99.3 прошивка 1.21 win 7
 

Вложения

  • 40,7 КБ Просмотры: 38
  • 78,9 КБ Просмотры: 38
  • 74,5 КБ Просмотры: 39
  • 184,9 КБ Просмотры: 34

SERG

Well-known member
Подсоединил карту в другой USB, что то увиделось, но при загрузки зависло. Скриншот прилагаю. Если закрыть ChipStudio, то после повторного открытия студии девайс не видится. Для того что бы увиделся нужно вынуть и вставить USB разъем и запустить ChipStudio. .. Повторные действия к результату не приводят так же виснет и все по кругу...
 

Вложения

  • 66,2 КБ Просмотры: 29
Верх