Важная информация

User Tag List

Страница 1 из 6 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 53

Тема: 12-бит, стерео.

  1. #1
    Guru Аватар для Denn
    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    2,220
    Спасибо Благодарностей отдано 
    473
    Спасибо Благодарностей получено 
    899
    Поблагодарили
    591 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    Cool 12-бит, стерео.

    На волне всеобщего помешательства на ковоксах, подумалось вот что... 4-х или 8-битный звук это же совсем "порнография" !
    У нас в Орионе имеется порт, который умеет выводить аж целых 24 бита. Понятное дело, что труъ 24-битный ЦАП на рассыпухе резисторов - это бесперспективняк, но оно и не нужно. А вот если разбить имеющийся ресурс пополам, то получается два канала по 12 бит на каждый, и это мне уже кажется интересным. Во-первых, 12 бит - это 144 уровня квантования, против 64-х при 8 битах, т.е. качество звука ощутимо подрастёт. Во-вторых, два канала - это стерео, приемущества которого очевидны.

    Итого, делается стерео вариант 12 битного ковокса (горстка резисторов).
    Звуковой файл содержит трёхбайтовые отсчёты сразу обоих каналов, код для воспроизведения которых на О-128 примерно такой:

    Код:
    ; в паре [DE] буфер WV-файла
    ; взятие трёх байт отсчёта
    LDAX D
    INX D
    MOV L,A
    LDAX D
    INX D
    MOV H,A
    LDAX D
    INX D
    ; вывод их в порт
    SHLD 0F600H
    STA 0F602H
    ; задержка, проверка на конец, го в начало
    Понятное дело, что нужно для писи написать конвертер обычных писишных WAV'ов в новый орионовский формат (пусть это будет *.WV), решить некоторые вопросы чтения больших файлов на Орионе, но это уже всё дело техники (некоторого кол-ва жопочасов кодинга).

    Для уменьшения объёма звукового файла, можно вместо самих отсчётов хранить только дельты для каждого канала, это сократит объём в 1,5 раза. А на Орионе-ПРО с его 10 МГц можно уже подумать в сторону алгоритмов компрессии...

    У кого какие мысли? Какие могут быть подводные камни у такой затеи?


    П.С. вариант: два 10-битных канала + 4 битный сабвуфер чур не предлагать )))
    Последний раз редактировалось Denn; 03.08.2016 в 13:40.
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Думаю, подводный камень тут только один (на который с плеерами от ivagor-а уже наступали) - большие объемы WAV-ов. При этом чтобы подгружать их с носителя не хватает ресурсов (нужен контроллер носителя, отдающий по DMA), а если грузить файл целиком в память, то всей памяти ориона хватает примерно на 1 минуту моно 12-бит. Возможно, проблему решит упаковка/распаковка.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  4. #3
    Veteran Аватар для Hacker VBI
    Регистрация
    05.03.2013
    Адрес
    г. Канев, Украина
    Сообщений
    1,596
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Error404, а это резко уменьшит частоту вывода
    вот проигрывать небольшие семплы - хватит

  5. #4
    Guru Аватар для Denn
    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    2,220
    Спасибо Благодарностей отдано 
    473
    Спасибо Благодарностей получено 
    899
    Поблагодарили
    591 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Мысли в сторону алгоритмов компрессии. Предположим, что вот прям совсем быстро (на всю шкалу +/-128) последующий отсчёт измениться не может (звук - он медленный в масштабах компа ) и вполне хватит +/-8, поэтому достаточно будет одного байта для кодирования дельты обоих каналов (по 16 на каждый). Т.е. это уже в 3 раза сократит объём.
    На случай внезапных крутых скачков можно предусмотреть т.н. key-frames, например через каждые 256 байт, т.е. иногда всё же синхронизироваться с абсолютными значениями отсчётов для надёжности.

    - - - Добавлено - - -

    По поводу продолжительности звучания. Понятное дело, что "любимый концерт миталики в хай-рез" послушать не получится, сабж не для этого. Какие-то короткие звуковые фрагменты, типа заставок или звуки/эффекты в играх вполне можно запихнуть даже в <64 Кб.
    Последний раз редактировалось Denn; 03.08.2016 в 13:59.
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

  6. #5
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Частота семплов при декомпрессии "на лету" (когда файл в память кладем упакованным, а при воспроизведении разжимаем и тут же выкидываем в поток) конечно уменьшится, но учитывая что даже 16-битные семплы воспроизводили, то у 12битных какой-никакой свободный ресурс проца есть. Т.е. возможно все получится, тут надо поискать метод упаковки по принципу "неважно какой сложности упаковщик, лишь бы распаковщик был быстр и линеен", а паковать такие файлы на PC. А если на Z80, то все равно же скорость упаковки не важна - один раз запаковал, и на носителе WAVы хранятся уже пакованные.
    Последний раз редактировалось Error404; 03.08.2016 в 13:56.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  7. #6
    Guru Аватар для Denn
    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    2,220
    Спасибо Благодарностей отдано 
    473
    Спасибо Благодарностей получено 
    899
    Поблагодарили
    591 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Упаковывать в менее одного байта на отсчёт думаю смысла нет, т.к. в этом случае по любому будет сложная математика при декомпресии, т.е. скорее всего не хватит ресурсов для получения приемлемого битрейта.

    Самое простое, что называется с ходу, это попробовать "внагляк" предположить, что для кодирования дельты между соседними отсчётами одного канала достаточно будет 2-х бит (-2..+2), тогда в один байт влезут аж целых два стерео отсчёта! Компрессия в ~6 раз. Примерно потому что key-фрэймы точно понадобятся, и возможно довольно часто.
    Тут надо проводить исследование реальных звуковых файлов, сконвертированных под 12 бит, смотреть насколько различаются соседние отсчёты и насколько фатальны для качества звука будут ошибки и их исправления key-фрэймами.

    - - - Добавлено - - -

    Думаю по поводу реализации железной части. 48 резисторов - это конечно жесть. Может есть в природе готовые 12-битные ЦАПы? Или взять 16-битные, а младшие 4 бита кинуть на землю...

    Из готовых железок наковырял следующие варианты:

    http://www.chipdip.ru/product/kr572pa2a/

    http://www.chipdip.ru/product/594pa1/

    http://www.chipdip.ru/product/dac8562fs/

    Всё же красава вот этот - http://ru.mouser.com/search/ProductD...lkeyDAC8562FSZ
    Но цена ваще ужас ((

    Что-то уже склоняюсь к мысли, что лучше заморочиться с резисторами
    Последний раз редактировалось Denn; 03.08.2016 в 15:04.
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

  8. #7
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,806
    Спасибо Благодарностей отдано 
    642
    Спасибо Благодарностей получено 
    1,773
    Поблагодарили
    1,023 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Надеюсь Дмитрий2012, который накопил немало опыта в практической реализации ковоксов, меня извинит, что лезу поперек него и дополнит. 8битный у него в итоге получился очень хорошо (на резисторах было не так хорошо). Может ли кто-нибудь навести на хорошо работающую схему >8 битного ковокса?

  9. #8
    Guru Аватар для Denn
    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    2,220
    Спасибо Благодарностей отдано 
    473
    Спасибо Благодарностей получено 
    899
    Поблагодарили
    591 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    8битный у него в итоге получился очень хорошо (на резисторах было не так хорошо)
    Это как? Ковокс - это по определению пассивный девайс на резисторах. Не на резисторах - это значит на специализированных м/сх ЦАП, это уже не ковокс.

    - - - Добавлено - - -

    В общем, надо проверить идею на резисторах, обкатать ПО, а потом всё таки разработать полноценную "звуковушку" на нормальных ЦАП, с аналоговыми фильтрами на выходе, грамотной разводкой и всеми плюшками. Оформить в виде карты расширения, со своей отдельной "защёлкой" ВВ55.

    П.С. посмотрел у нас в Микронике высокоточные выводные резисторы стоят 30 руб/шт. Итого надо 48 шт. - это 1440 руб! о_О
    Макетка 200+ руб, и примерно столько же разъём DIN. В общем, нуна два штукаря на проверку идеи с резисторами
    Последний раз редактировалось Denn; 03.08.2016 в 17:23.
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

  10. #9
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,395
    Спасибо Благодарностей отдано 
    304
    Спасибо Благодарностей получено 
    594
    Поблагодарили
    440 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Denn Посмотреть сообщение
    Во-первых, 12 бит - это 144 уровня квантования, против 64-х при 8 битах, т.е. качество звука ощутимо подрастёт.
    Всегда считал, что 4 бита это 16 уровней (2^4), 8 бит это 256 уровней (2^8) и 16 бит это 65536 уровней (2^16). 12 бит это по идее 4096 уровней (2^12). Или я что-то упустил?

    Так же, ADPCM скорее всего спасет гигантов мысли. У SNES аудиосистема построена на основе SPC700 от Sony, подпёртого 64КБ ОЗУ. Этого объема хватало для хранения модульной мелодии (плеер + рифы + сэмплы) с относительно приличным звучанием.
    SPC700 представляет собой микропроцессор, который управляет работающим в паре с ним сигнальным процессором, который обеспечивает воспроизведение семплов из 2x32kb ОЗУ. Внутри Super Famicom/SNES микросхема SPC700 находится над микросхемой сигнального процессора, на левой стороне звукового модуля.

    SPC700 имеет шесть регистров, и набор из 256 команд, очень похожий на набор команд семейства процессоров 6502, но содержащий несколько дополнительных операций. Среди них такие операции, как XCN (eXChange Nibble, обмен полубайт), меняющую местами содержимое старших и младших 4-битовых половин 8-разрядного аккумулятора; и умножение двух 8-разрядных чисел с 16-разрядным результатом. Тактовая частота процессора — 1.024 МГц. Встроенное ОЗУ состоит из двух микросхем по 32кб итого 64 КБ, в нём хранится управляющая программа (плеер) , а также семплы и эхо в сжатом с помощью Bit-reduction (ADPCM-подобного) алгоритма виде.

  11. #10
    Guru Аватар для Denn
    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    2,220
    Спасибо Благодарностей отдано 
    473
    Спасибо Благодарностей получено 
    899
    Поблагодарили
    591 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    16 бит это 65536 уровней (2^16)
    Допустим у нас питание ЦАПы 5 Вольт. Тогда при такой математике получается, что младший уровень 5/65536 составляет 0,0000762939453125 Вольт... т.е. 76 мкВ... такое реально?

    П.С. Если совсем честно, то про 64 уровня для 8 бит я вычитал у авторов ковокса для Ориона: "Собранный COVOX необходимо
    проверить на линейность и наличие 64 ступенек уровней квантования, наблюдая осциллографом "пилу" на выходе."
    Цитата отсюда - http://denn.ru/8bit/orion/128/covox/covox.txt

    П.П.С. с другой стороны здесь пишут: "Таким образом, восьмибитный ЦАП способен выдать 256 различных напряжений с шагом около 20 милливольт", значит всё таки действительно получается разница 256 vs. 4096 уровней квантования! Так это вообще просто праздник!!
    Последний раз редактировалось Denn; 17.12.2017 в 13:59. Причина: Изменение пути ссылки
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

Страница 1 из 6 12345 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Компактный стерео микшер
    от andrew_curds в разделе Звук
    Ответов: 29
    Последнее: 30.01.2017, 23:15
  2. продам Ореанда РМД-204-стерео
    от sem в разделе Барахолка (архив)
    Ответов: 0
    Последнее: 28.03.2010, 21:23
  3. Стерео звук в Atari XL/XE
    от m.d. в разделе Atari
    Ответов: 0
    Последнее: 14.11.2009, 15:07
  4. Стерео на Sega ?
    от AAA в разделе SEGA
    Ответов: 12
    Последнее: 17.08.2008, 13:24
  5. Ответов: 1
    Последнее: 18.05.2005, 12:11

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •