Автор Тема: Цифровое аудио своими руками (интерфейсы, эффекты, процы и подобное).  (Прочитано 15646 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AZG

  • Живу на форуме
  • *******
  • Сообщений: 89816
  • Репутация: +9827/-1413
  • Санкт-Петербург
    • AZG CUSTOM
AntonVIP, Да, типа такой платы. У нас есть из ЧиД похожие. КабЗон тоже на этой платформе построен.

Оффлайн AntonVIP

  • Живу на форуме
  • *******
  • Сообщений: 17441
  • Репутация: +4080/-12
  • Люблю качественную музыку в стиле "мясо"
    • Страница на ютубе
AntonVIP, Да, типа такой платы. У нас есть из ЧиД похожие. КабЗон тоже на этой платформе построен.

Спасибо. Как хорошо, что на эту тему наткнулся. А то копал долго по данному вопросу, уже понесло в сторону strawberry  ;D. Кстати, тоже неплохая вещь, однако, немного не по теме звука

Оффлайн AZG

  • Живу на форуме
  • *******
  • Сообщений: 89816
  • Репутация: +9827/-1413
  • Санкт-Петербург
    • AZG CUSTOM
AntonVIP, По теме, но обычно используют в качестве сетевого транспорта с управлением с мобильника/планшета например. А вот цифровая обработка - сейчас для простых вещей рынок ADAU захватили.

Оффлайн siwufuvi

  • Новичок
  • *
  • Сообщений: 18
  • Репутация: +3/-0
  • GuitarPlayer.Ru fan!
Нарисовал пробную схему интерфейса на обычной PCM2904. Поюзав немного Behringer UCA222 на такой же микросхеме, показалось, что основная проблема там не в только в кодеке (PCM2904, который там кстати был не от TI, а от CoolAudio - V2902)
CoolAudioV2902 - это похоже уже удешевление позже было. Изначально там все же шёл везде PCM2902. Да и в родных ASIO драйверах (которые потом вдруг пропали с их сайта) VID и PID стандартные для TI PCM2902 ищутся (изменение за деньги).
Цитировать
UMA25S, UCA200*, UCA202, UCA222, UFO202, UCG102, iAXE393/624/629 and many more.
*bundled with UMX series, XENYX mixers, PODCASTUDIO USB
This driver does NOT support the following BEHRINGER hardware:
C-1U, BCD2000, BCD3000.
Собственно было интересно проверить установятся ли и будут ли работать эти драйвера со своей поделкой на PCM2902 или есть еще где нибудь проверка (но вроде никаких флешек на фотках платы не видно), но руки так и не дошли :( В итоге и PCM c алишки валяется, и драйвера.. Может когда нибудь. Или кто нибудь другой затестит
« Последнее редактирование: Апреля 29, 2021, 09:49:36 от siwufuvi »

Оффлайн Tander Автор темы

  • Ветеран форума
  • ******
  • Сообщений: 3731
  • Репутация: +475/-0
    • Efremoff
AntonVIP, Да, все более чем просто. Плата - да, такая (ее еще miniDSP / DSPmini называют. В китае вроде как дешевле будет немного).
Ну и свисток для усб - он сволочь дорогой. ) Зато им можно шить много разных плат.
« Последнее редактирование: Апреля 28, 2021, 13:34:31 от Tander »

Оффлайн Tander Автор темы

  • Ветеран форума
  • ******
  • Сообщений: 3731
  • Репутация: +475/-0
    • Efremoff
Я кстати себе под мелкие задачи тоже заказал одну 1701 платку такую-же. С год назад уже заказывал - но недоехало, сделали возврат денег. Заказал еще раз - может какую-то минипедаль сделаю, а то пока я с "процом" начну - все лето пройдет... ))

Кстати - узнал что USBi для сигмалинка делают на платке с Cypress CY7C68013A - под нее есть прошивка, после которой данная платка определяется как оригинальное USBi. статья и файлик прошивки готовый тут

Оффлайн AntonVIP

  • Живу на форуме
  • *******
  • Сообщений: 17441
  • Репутация: +4080/-12
  • Люблю качественную музыку в стиле "мясо"
    • Страница на ютубе
Спасибо, познавательно.

Оффлайн Tander Автор темы

  • Ветеран форума
  • ******
  • Сообщений: 3731
  • Репутация: +475/-0
    • Efremoff
проверил прошивку для Cypress CY7C68013A - действительно после перепрошивки начал определятся как USBi от аналог-девайса, и стал видится в сигмастудии. Чтож отличный вариант. ))

Оффлайн akl

  • Живу на форуме
  • *******
  • Сообщений: 8114
  • Репутация: +2264/-69
  • не шарю ваще
Есть и онлайн конвертеры с вав в тхт, и я написал на питоне скриптик который делает тоже самое, либо с помощью аудасити можно сконвертить вав в таблицу значений.
я чет пилю что-то похожее на си и чет затупил. вот допустим у нас 24 бита звук, то есть по 3 байта на семпл. то есть я беру, и читаю всю эту дату по 3 байта вот так
(нажмите чтобы показать/спрятать)
но как теперь правильно преобразовать эти 3-байты в цифры? и вообще правильно ли так по 3 байта подряд считывать?

кстати, если знаешь то можешь дать ссылку на какой-нибудь подобный онлайн-конвертер, а то все что я смог нагуглить походу делает что-то не то (речь там распознает или типа того)

... и добавил:

предполагаю что надо их тупо собрать в 32-битное число положительное, а потом пропорционально натянуть так чтобы 0 это было -1, а 16777215 это было +1 :hmmm:

... и добавил:

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

... и добавил:

то есть как будто это 24-битное число со знаком. че с этим делать цветочек знает.

... и добавил:

о кажется нагуглил то что надо https://coderoad.ru/2916191/C-C-%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-24-%D0%B1%D0%B8%D1%82%D0%BD%D0%BE%D0%B3%D0%BE-%D1%86%D0%B5%D0%BB%D0%BE%D0%B3%D0%BE-%D1%87%D0%B8%D1%81%D0%BB%D0%B0-%D1%81%D0%BE-%D0%B7%D0%BD%D0%B0%D0%BA%D0%BE%D0%BC-%D0%B2-float

... и добавил:

но было бы неплохо проверить результаты. так что если кто-то знает какой-нибудь онлайн-конвертер который делает это - подскажите пожалуйста
« Последнее редактирование: Мая 06, 2021, 18:05:26 от akl »

Оффлайн Tander Автор темы

  • Ветеран форума
  • ******
  • Сообщений: 3731
  • Репутация: +475/-0
    • Efremoff
http://s.shift-line.com/wav2fir/ - я ориентировался на данный конвертор, когда писал свое. под Python есть библиотека https://pypi.org/project/SoundFile/ которая при считывании файла возвращает массив значений нужных, т.е. мне осталось только распарсить массив в набор отдельных строк и записать их по очереди в файл. Посмотри внутренности библиотеки (библиотеки питона - открытый и понятный код, а не скомпиленная длл-ка) - может будет понятнее что и как она делает.

И да - нашел тот же тред в исходном варианте - https://stackoverflow.com/questions/2916191/c-c-convert-24-bit-signed-integer-to-float - в оригинале более понятно написано, чем при автоматическом переводе на русский.



... и добавил:

Я бы попробовал что-то в таком стиле:

float convert(const unsigned char* byteData)
{
    int fromStream =
        (0x00 << 24) +
        (byteData[2] << 16) +
        (byteData[1] << 8) +
         byteData[0];

    return (float)fromStream;
}

Данная функция будет возвращать десятичные значения твоих трех байтов. После чего возможно нужно будет сделать нормализацию от -1 до 1.
« Последнее редактирование: Мая 07, 2021, 10:46:57 от Tander »

Оффлайн akl

  • Живу на форуме
  • *******
  • Сообщений: 8114
  • Репутация: +2264/-69
  • не шарю ваще
короче если сравнивать с этим http://s.shift-line.com/wav2fir/index.php то вот такая формула точно такие же результаты дает:
double convert(const unsigned char* src){
    int i = ((src[2]<<24)|(src[1]<<16)|(src[0]<<8))>>8;
    return ((double)i)/8388608.0;
}
8388608 это 0x800000

кстати в этом онлайн-конвертере серьезный недостаток - он дает только тыщу результатов, а это что-то около 22 мс

а библиотека питоновая если это вот она https://github.com/bastibe/python-soundfile/blob/master/soundfile.py
то блин там ваще ниче непонятно где что и как оно считает :D :lam:
« Последнее редактирование: Мая 07, 2021, 12:48:33 от akl »

Оффлайн Tander Автор темы

  • Ветеран форума
  • ******
  • Сообщений: 3731
  • Репутация: +475/-0
    • Efremoff
Онлайн конвертор этот для кабзона - там больше 1000 и не требуется.
Код твой - да, вроде норм.

библиотека питона - там есть функция read - там немного расписано, как оно работает, плюс написано что он использует стандартную библиотеку numpy (вот оно - ооп в действии так сказать..) которая собственно и занимается парсингом байтов из Wav в массив числовых значений.

Оффлайн akl

  • Живу на форуме
  • *******
  • Сообщений: 8114
  • Репутация: +2264/-69
  • не шарю ваще
проверил прошивку для Cypress CY7C68013A - действительно после перепрошивки начал определятся как USBi от аналог-девайса, и стал видится в сигмастудии. Чтож отличный вариант. ))

кстати, а если перепрошивать эти штуки можно только через этот USBi (еще и наверно только при помощи сигма-студии), то как делается перепрошивка например во всяких кабсимах, где например альтернативные импульсы можно подоткнуть на флешке и они каким-то образом будут скормлены ADAU? как такое возможно

Оффлайн Tander Автор темы

  • Ветеран форума
  • ******
  • Сообщений: 3731
  • Репутация: +475/-0
    • Efremoff
Во всяких штуках обычно стоит микроконтроллер, который просто по spi записывает в нужные регистры памяти определенные значения, или как-то подобно.

Оффлайн akl

  • Живу на форуме
  • *******
  • Сообщений: 8114
  • Репутация: +2264/-69
  • не шарю ваще
Во всяких штуках обычно стоит микроконтроллер, который просто по spi записывает в нужные регистры памяти определенные значения, или как-то подобно.
если так, то это нифига не просто - нужен некий реверс-инжиниринг чтобы понять где там в памяти лежат эти нужные регистры