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

User Tag List

Страница 29 из 32 ПерваяПервая ... 2526272829303132 ПоследняяПоследняя
Показано с 281 по 290 из 313

Тема: Новый, более эффективный кассетный формат

  1. #281
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,058
    Спасибо Благодарностей отдано 
    220
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Оптимизация частоты нулей и единиц

    Я тут провёл небольшое исследование на тему оптимального соотношения нулей и единиц в стандартном кассетном формате.

    Известно, что стандартный формат записывает бит "0" последовательностью кодированных бит "10", а бит "1" - последовательностью "1100", которая в 2 раза длиннее. Таким образом, файл, состоящий из одних нулей, будет загружен в 2 раза быстрее файла, состоящего из одних единиц (или #FF).

    Разумеется, файл с нулями или FF-ами не несёт никакой информации. Обычно, если файл скомпрессирован или состоит из случайных данных - то количество нулевых бит в нём примерно равно количеству единиц. Таким образом, получается, что средняя скорость записи случайных данных равна среднему арифметическому между скоростями записи одних нулей и одних единиц.

    Если изменить соотношение нулей и единиц в файле; скажем, сделать так, чтобы только 20% всех бит были равны единице - то средняя скорость записи возрастёт. Хотя останется неясным, сколько же информации можно передать таким способом. Я рассмотрел вопрос с точки зрения энтропии по Шеннону.

    Для двоичного сигнала энтропия (т.е. информационная ёмкость) каждого бита H0 = -p*log2(p)-(1-p)*log2(1-p), где p - вероятность того, что бит равен 1. Легко проверить, что при p=0.5 энтропия равна 1, а также то, что при этом p достигается максимальная информационная ёмкость сигнала.

    При рассмотрении энтропии не полезного, а кодированного сигнала, записываемого на кассету в стандартном спектрумовском формате, нужно учесть, что нули и единицы имеют разную длительность. Длительность каждого кодированного бита равна в среднем 2+2*p, где за единицу измерения взят минимальный интервал между фронтами. Таким образом, энтропия кодированного сигнала на этом интервале равна H1=(-p*log2(p)-(1-p)*log2(1-p))/(2+2*p)

    Для нахождения процентного соотношения нулей и единиц, при котором H1 достигает максимума, нужно найти производную H1 и приравнять её к нулю. Производная H1' = (-log2(p)+2*log2(1-p))/(2*(1+p)^2). Решая уравнение H1'=0, находим два корня, один из которых соответствует p>1, и потому не подходит, а второй корень равен p*=(3-sqrt(5))/2, что примерно равно 38.2%. Таким образом, когда примерно 38% всех бит в файле равны 1, а остальные равны 0, достигается максимальная энтропия на единицу времени кодированного сигнала и тем самым максимальная плотность записи в спектрумовском формате. Подставив значение p* в формулу для H1, находим, что H1*~=0.347, что несколько выше значения H1 при p=0.5, которое составляет 0.333.

    Таким образом, оптимизация соотношение нулей и единиц в файлах стандартного формата позволяет повысить плотность записи информации, хотя лишь незначительно - на 4.1%.

    Ввиду незначительности выигрыша, я не вижу смысла в разработке программной реализации. Но, чисто теоретически, она могла бы выглядеть так:
    1) Компрессия файла наилучшим возможным образом
    2) Обработка преобразованием, меняющим частоту нулевых и единичных бит. Длина файла при этом в среднем вырастет на 4.2%, однако загрузится такой файл на 4.1% быстрее, чем если сохранить исходную информацию без преобразования.
    3) Сохранение обработанного файла
    При загрузке обработка идет в обратной последовательности:
    4) Загрузка
    5) Преобразование, обратное проведенному на шаге 2)
    6) Декомпрессия.

    Полученный результат имеет ту ценность, что спектр кодированного сигнала наиболее близок к белому шуму при соотношении нулей и единиц, равному p*.
    Привожу получившиеся картинки и исходный код программы для расчета. Программа работает под GNU Octave, также можно ее запускать на Matlab. С помощью программы можно поэкспериментировать и убедиться, что найденное соотношение кол-ва нулей и единиц действительно является оптимальным. Также для тех, кто еще не видел спектрального анализа сигналов, записанных в стандартном спектрумовском формате, в аттаче находится спектрограмма.
    Вложения Вложения
    Последний раз редактировалось Barmaley_m; 30.07.2018 в 16:57.

  2. #282
    Junior
    Регистрация
    24.07.2018
    Адрес
    г. Москва
    Сообщений
    16
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Известно, что стандартный формат записывает бит "0" последовательностью кодированных бит "10", а бит "1" - последовательностью "1100", которая в 2 раза длиннее. Таким образом, файл, состоящий из одних нулей, будет загружен в 2 раза быстрее файла, состоящего из одних единиц (или #FF).

    1) Компрессия файла наилучшим возможным образом
    2) Обработка преобразованием, меняющим частоту нулевых и единичных бит. Длина файла при этом в среднем вырастет на 4.2%...
    Есть ломанные игрушки, те, что с надписью "M1 LOADING". Они запакованы. Что касается преобразования... Можно использовать табличку преобразований из 256 значений (наверное, можно сократить), заменив наиболее часто встречающиеся в потоке значения с большим количеством единиц на значения с минимальным количеством единиц. Но это лишь возможность. Есть хорошие шансы, что понесенные расходы будут напрасными.

    Еще можно сохранять не сами значения, а результат по "исключающему или" относительно предыдущего значения... Так для картинок, где может быть много одинаковых подряд значений, состоящих из единиц, можно получить больше нулей, и сл-но более быструю загрузку (например, заставка к игре "XCEL", состоящая из кучи единиц, загрузится точно быстрее)...
    Последний раз редактировалось cafedead; 30.07.2018 в 12:57.

  3. #283
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,058
    Спасибо Благодарностей отдано 
    220
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В сообщении выше я ошибся - выигрыш от оптимизации соотношения нулей и единиц составляет не 1.4%, как я писал ранее, а целых 4.1%. Подправил в сообщении выше. Впрочем, этот выигрыш тоже слишком мал для того, чтобы заморачиваться с преобразователем.

  4. #284
    Activist Аватар для AzAtom
    Регистрация
    05.04.2015
    Адрес
    г. Майкоп
    Сообщений
    292
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от weiv Посмотреть сообщение
    Конечно, оригинальный формат работал и на обычных советских кассетах, с обычной записью. Но у многих людей и с ним были проблемы.
    Часто загрузка прерывалась. Тогда на магнитофоне подкручивал почти до максимума регулятор усиления и загрузка проходила хорошо. Позже, записав на PC, я увидел, в чём проблема - одна волна или полуволна оказывались с очень низким уровнем и в спеке не происходило смены 0-1 на входе с магнитофона.

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

    Цитата Сообщение от cafedead Посмотреть сообщение
    как вариант, по входящим данным считается скользящая средняя необходимой глубины, которую можно принять за середину, все что выше нее принимается за 0 для порта, все что ниже - за 1, ну или наоборот.
    Это и так делается фильтром высоких частот, встроенным в звуковую. Если подать на вход постоянный уровень, то на оцифровке уровень поднимется или опустится и затем опустится или поднимется до 0.

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

    Цитата Сообщение от cafedead Посмотреть сообщение
    У реала он выражается в некотором фиксированном значении напряжения, которое задается электронными компонентами.
    Конденсатор на входе убирает постоянную составляющую. Например, в моём клоне спека после конденсатора идёт усилитель на ЛН1 и сигнал "пляшет" около значения, которое этот усилитель считает границей между 0 и 1, далее сигнал идёт на ещё один усилитель на таком же элементе ЛН1 и, вроде, там организуется небольшой гистерезис, после второго усилителя сигнал уже прямоугольный и достаточно хорошо разделён на 0 и 1 без ложных срабатываний и искажений скважности. Последнее, конечно, зависит от изначально записанного сигнала, но на стандартной выгрузке проблем нет.

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

    Цитата Сообщение от cafedead Посмотреть сообщение
    Что, у пилота прям одинаковые красно-голубые полосы были? Потрясающе.
    На моём спеке - да, всё было одинаковой ширины.
    Последний раз редактировалось AzAtom; 31.07.2018 в 22:03.

  5. #285
    Master
    Регистрация
    04.07.2012
    Адрес
    г. Москва
    Сообщений
    552
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    83
    Поблагодарили
    39 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Barmaley_m, Почту от Вас ещё не получал. Но записал Ваш tzx файл на кассету, и попытался загрузить. Первая картинка - это +2 через встроенный мафон, вторая - это +3 с той же деки, на которую это писалось. Basic грузится отлично, loader грузится отлично, как только попытка грузить нестандартный формат - мгновенно ошибка. Моя аппаратура - звуковая карта Lynx Studio E22 - аудиофильская звуковая карта, дека - JVC TD-W7SD - hi-fi дека топового уровня в отличном состоянии, прекрасно играет музыку, кассета That's MG-A100 - очень хорошая кассета типа 4, новая из пачки. Я это пишу для того, чтобы снять вопросы про несоответствие классу 4 аппаратуры СССР, аппаратура хорошая, лучше долго искать будете :-) В общем, что-то не так.



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

    Вот видео
    http://www.sanarin.ru/pic/tape_test/...0731222442.mp4
    Последний раз редактировалось haywire; 31.07.2018 в 23:11.

  6. #286
    Junior
    Регистрация
    24.07.2018
    Адрес
    г. Москва
    Сообщений
    16
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AzAtom Посмотреть сообщение
    Это и так делается фильтром высоких частот, встроенным в звуковую. Если подать на вход постоянный уровень, то на оцифровке уровень поднимется или опустится и затем опустится или поднимется до 0.
    Вы, видимо, про фильтр низких частот?!! Ну это смотря чего откуда читается... Можно слушать, например, то, что генерирует открытый параллельно эмулятор, и тогда ничего никуда никаким входным фильтром не изменится, а задача, тем не менее, для эмулятора, или программы оцифровки состоит в том, чтобы "Прочитать частотную модуляцию", и справиться с этим лучше, чем это смог бы сделать реал с однобитовым АЦП, принимая во внимание любые возможные искажения, как, например, еще одна замешанная волна.

    Цитата Сообщение от AzAtom Посмотреть сообщение
    Конденсатор на входе убирает постоянную составляющую. Например, в моём клоне спека после конденсатора идёт усилитель на ЛН1 и сигнал "пляшет" около значения, которое этот усилитель считает границей между 0 и 1, далее сигнал идёт на ещё один усилитель на таком же элементе ЛН1 и, вроде, там организуется небольшой гистерезис, после второго усилителя сигнал уже прямоугольный и достаточно хорошо разделён на 0 и 1 без ложных срабатываний и искажений скважности. Последнее, конечно, зависит от изначально записанного сигнала, но на стандартной выгрузке проблем нет.
    Да хоть сто усилителей. А потом дело доходит до логического элемента, и красивая история заканчивается кривыми полосами, которые я наблюдал не раз, и не два. Ну ничего, давайте и на это забьем. Ну подумаешь... Слушайте, а у меня были самые убогие клоны, да и магнитофоны не лучше, и при записи в результате вообще такой шум шел между сигналами, что я вообще поражался, как оно это грузило... Но конечно, мы ведь здесь не говорим о надежности, мы будем представлять себе идеальную систему, где никаких посторонних шумов нет, никаких искажений нет, ноль - это ноль, а волны могут быть кривыми, что также не повлияет ни на что... Но, друзья, так вы ни к чему не придете. Впрочем, тут, видимо, получают удовольствие от самого процесса обмена кассетами... -)

    Это ведь не у меня, надеющегося на фильтры и чудо, что-то не работает... Это ведь не я заявляю о надежности, т.е., расшифрую, когда читается в большинстве возможных случаев, а не в каких-то частных ситуациях... Я свои мысли изложил не для того, чтобы поспорить... Использовать это, хотя бы изучить это, или вообще забить на это - дело автора. И если честно, мне все равно. Я уже для себя понял, что автор - это какой-то мечтатель, фанат матлаба и теорий. Это вовсе не плохо. Ну а у меня, будем считать, некое извращенное понимание надежности...

    Нажмите на изображение для увеличения. 

Название:	wave1.jpg 
Просмотров:	205 
Размер:	57.7 Кб 
ID:	65879Нажмите на изображение для увеличения. 

Название:	wave2.jpg 
Просмотров:	146 
Размер:	54.2 Кб 
ID:	65880

    Ну не будет вот такое читаться через аналоговые преобразования, сколько вы тут ни бейтесь... Это утопия. Ну разве что современный АЦП + программа распознавания с улучшайзерами, или эмулятор. Нужно хотя бы отдаленно выдерживать волны... А тут полу-волна в 2 и даже в 3 раза короче соседней полуволны. И таких целый ряд. Ну это не серьезно. Полу-волны должны быть длиннее, для более длинной - такие же более длинные обратные полу-волны соизмеримого размера для 0 и 1... Тогда, возможно, что-то и получится.

    Цитата Сообщение от haywire Посмотреть сообщение
    звуковая карта Lynx Studio E22 - аудиофильская звуковая карта, дека - JVC TD-W7SD - hi-fi дека топового уровня в отличном состоянии, прекрасно играет музыку, кассета That's MG-A100 - очень хорошая кассета типа 4, новая из пачки.
    Просто огонь... -)
    Последний раз редактировалось cafedead; 01.08.2018 в 02:15.

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

  8. #287
    Activist Аватар для AzAtom
    Регистрация
    05.04.2015
    Адрес
    г. Майкоп
    Сообщений
    292
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Уровень 0 на оцифровке можно брать между прошлым и текущим max min в пределах ожидаемого периода. Так не пробовали детектировать? Ещё можно вновь вычисленный уровень 0 не устанавливать сразу, а постепенно приближаться к нему в течение 2-3 периодов.

  9. #288
    Master
    Регистрация
    04.07.2012
    Адрес
    г. Москва
    Сообщений
    552
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    83
    Поблагодарили
    39 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AzAtom Посмотреть сообщение
    Уровень 0 на оцифровке можно брать между прошлым и текущим max min в пределах ожидаемого периода. Так не пробовали детектировать? Ещё можно вновь вычисленный уровень 0 не устанавливать сразу, а постепенно приближаться к нему в течение 2-3 периодов.
    Может быть, и можно. Но от реального спектрума этого добиться не возможно. Его 1бит АЦП как работает, так и работает, и ничего с этим не сделать.

  10. #289
    Junior
    Регистрация
    24.07.2018
    Адрес
    г. Москва
    Сообщений
    16
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AzAtom Посмотреть сообщение
    Уровень 0 на оцифровке можно брать между прошлым и текущим max min в пределах ожидаемого периода. Так не пробовали детектировать? Ещё можно вновь вычисленный уровень 0 не устанавливать сразу, а постепенно приближаться к нему в течение 2-3 периодов.
    Быстрее и проще скользящую среднюю считать, и с этой величиной сравнивать значения... Это и есть "постепенно приближаться к нему в течение 2-3 периодов". Ну да не суть... Я о том и говорю, что на эмуляторе, или при оцифровке можно сделать много чего, и делается... Поэтому основываться лишь на том, что вот у тебя в эмулятор, или в программу оцифровки, читалось - ну это странно. Это идеальные условия. Так же как и тесты только на идеальных клонах...

  11. #290
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,774
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    1,179
    Поблагодарили
    775 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

Страница 29 из 32 ПерваяПервая ... 2526272829303132 ПоследняяПоследняя

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

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

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

Похожие темы

  1. [Поиск 1] Кассетный интерфейс
    от Tronix в разделе Поиск
    Ответов: 112
    Последнее: 06.02.2024, 08:14
  2. Кассетный магнитофон.
    от Николай в разделе Барахолка (архив)
    Ответов: 1
    Последнее: 03.04.2010, 15:49
  3. Куплю Магнитофон кассетный Электроника-302-1
    от hardrice в разделе Барахолка (архив)
    Ответов: 16
    Последнее: 18.02.2010, 12:13
  4. Ответов: 13
    Последнее: 05.11.2007, 22:48
  5. Ответов: 2
    Последнее: 26.02.2005, 18:17

Ваши права

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