Объявление форума |
Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС. |
Полигон-2 » Калькуляторы, арифмометры, PDA, HPC » Свисток для Д3-28 |
<<Назад Вперед>> | Страницы: 1 * 2 3 | Печать |
xoiss
Advanced Member
Всего сообщений: 711 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 30 окт. 2013 |
Sergei Frolov написал: поверхностный ответ: питон - это скриптовый/интерпретируемый язык, программы распространяются в исходном коде А скомпилированного файла нет? более детальный ответ: - в принципе я мог бы сделать скомпилированный дистрибутив exe/bin с интегрированным питоном - но такой вариант сильно ограничил бы кроссплатформенность — линукс/виндоуз, 32/64 бит, версия libc - поэтому я сделал дистрибутив с исходным кодом — это более правильный путь для программ на питоне - на самом деле, если бы я хотел скомпилированный вариант, то я бы написал на C++ или Java - в данном случае питон был выбран по договорённости с создателями сайта d3-28.ru — т.к. они уже используют питон для похожей задачи (ну, как я понял) - если будут массовые мотивированные пожелания перейти на другой язык, то мне лично до без разницы — могу переписать на другой скачать питон можно здесь: https://www.python.org/downloads/ // конкретно на виндоуз я проверял с версией 3.4.4, но, думаю, и с последней тоже должно работать для линукс — ну, если убунту/дебиан — то надо установить пару пакетов: - python или python2.7 или python3.4 - python-pip // здесь я проверял с версией 2.7.5 если питон уже установлен, то узнать его версию можно, набрав в консольке python --version |
Sinus
Newbie
Откуда: СПб Всего сообщений: 30 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 7 авг. 2016 |
xoiss, а можно хоть одним глазком взглянуть для примера на готовый wav? Может, и народу готовый wav пригодится. Например, вот был в теме про Д3-28 файлик "myfile.dat" с простенькой программкой для голой Д3-28, без периферии: 7-11-2017_tablo-XY-test__KP-637_N-36.txt И даже ещё короче вот программка - просто счётчик, выводит с паузой числа 1, 2, 3, ... на Y-табло машинки: 0700 0604 0701 0600 0412 0615 1402 0004 0512 (набирать надо, конечно, столбиком). (Очень хочется ошибаться, но сомнение гложет: станет ли кто из раз-два и обчёлся владельцев работающей машинки мало того, что экспериментировать с записыванием кассеты, так до того ещё питон ставить, программу ставить, и с myfile.dat разбираться... ) |
xoiss
Advanced Member
Всего сообщений: 711 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 30 окт. 2013 |
День добрый! 7-11-2017_tablo-XY-test__KP-637_N-36.wav https://yadi.sk/d/PoI3IKdw3Vxjzo 1-2-3.wav (ну, не придумал, как лучше его назвать) https://yadi.sk/d/2d8Kyyqq3Vxk24 Наверное, можно попробовать их записать на кассету, а потом прочитать-оцифровать полученную запись и попробовать разобрать её в Вашей программе для Маткада. Я сам пока не могу с кассетой весь цикл пройти. Дома ни одной аудиокассеты нет (были, да, куда-то все делись, включая пару с Бейсиком для Д3-28 — уже 2 года никак нигде не могу их отыскать... боюсь жена выбросила как мусор). И со шнурком тоже разбираться надо. На ноутбуке jack с пиктограммой "наушники"... Может ли он работать как вход — не знаю. Надо чем-нибудь проверить. Магнитофон стерео есть, но у него нет линейного входа-выхода. Есть только под микрофон/наушники (а это "не совсем то"). Да и головку у него не покрутишь. В общем, если Вы можете на Вашем комплекте опробовать, то было бы здорово. И, кстати, попробуйте поставить Питон. На самом деле сложного ничего нет — скачали/запустили и всё. Маткад - и то в 100 раз сложнее ставить. |
Sinus
Newbie
Откуда: СПб Всего сообщений: 30 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 7 авг. 2016 |
xoiss, спасибо. Попробую "цикл пройти", если мой старый м/ф "Романтик", ещё способен записывать, в чём я очень не уверен; и да, тоже ведь надо ещё запись с компа наладить, - возможно, не очень скоро выйдет, если выйдет. Завтра начну, сейчас ночь. Графики сигналов Ваших я посмотрел. Интересно, как дело пойдёт с такими прямоугольниками (чисто вертикальные фронты! Может, лучше их подзавалить? Ладно, попробуем посмотреть, во что их превратит АЧХ магнитофона). |
xoiss
Advanced Member
Всего сообщений: 711 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 30 окт. 2013 |
Sinus написал: Там не просто ровные прямоугольники — там ОДИН сэмпл на один такой "прямоугольник" — потому он такой прямоугольный. Интересно, как дело пойдёт с такими прямоугольниками (чисто вертикальные фронты! Может, лучше их подзавалить? То есть в этом файле частота дискретизации не 44.1 кГц, например, а всего лишь 1 кГц. Ну, для синтеза этого должно быть достаточно. Зато файл в 40 раз меньше. Заваливать... ну, имхо, смысла нет — только алгоритм усложнится, и файл вырастет на порядок. Меня больше напрягают другие вещи: - я использовал 8 бит на канал вместо 16. В принципе там и 1 бита хватило бы, но меньше 8 сделать нельзя. Однако, в зависимости от плеера, это может иметь побочные эффекты в виде непойми-откуда-берущихся шумов воспроизведения. Если использовать FloatPoint-кодирование, то такие шумы не наблюдаются. Для 16 бит — не проверял. В общем, надо посмотреть, будут ли они возникать. Если будут, то перейдём на FloatPoint - я использовал плавное введение/выведение уровня "ноль" — собсна, процесс занимает +1 сек. в начале и +1 сек. в конце. Ну, это долго объяснять. В общем, может, будет лучше введение уровня делать единомоментным скачком (за N секунд до начала записи), а выведение и вовсе не делать. Если по второму варианту, то, конечно, при воспроизведении есть щелчки, которые нужно будет убрать мануально (т.е. кнопкой Пауза магнитофона), но второй вариант проще в реализации и у него шумов, вроде как, меньше. Короче, это тоже надо смотреть по факту Вот. --- А так, конечно, лучше бы как-то нарыть отдельный ЛПМ и прилепить к нему нативную схему усилителя записи/воспроизведения от Д3-28. Я не говорю, что прям вот надо туда ещё и микроконтроллер засандалить — это лишнее, — но как бы хотя бы аналоговую часть сделать, как в оригинале. |
Sinus
Newbie
Откуда: СПб Всего сообщений: 30 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 7 авг. 2016 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 17 мая 2018 0:58 Сообщение отредактировано: 18 мая 2018 13:20
xoiss Возможно на хорошей аппаратуре у кого-нибудь всё более-менее получится. Но у меня пока только самый первый блин не комом вышел: каким-то чудом первая попытка оказалась удачной (см. ниже отчёт). А все остальные копии, которые я сделал для набора статистики, получились с какими-то "непонятно что". Даже не могу никак толком объяснить эти артефакты; удивляюсь сам себе... Предполагаю пока, что АРУ (в магнитофоне и, может быть, в компюьтере) вызывает некие длительные пертурбации в тракте. Может быть и длительное нарастание (введение) "постоянного уровня" негативно повлияло. Во всяком случае, тот факт, что АРУ срабатывало, было слышно при записи. Надо придумать проверки и способы борьбы с АРУ, и ещё поэкспериментировать. Здесь отчёт: test-1_16-05-2018.pdf Поправка: на более чувствительном входе магнитофона резистивный делитель напряжения был не 30к/(82к+30к) (это меня склероз подвёл), а 30к/(13к+30к) - так нарисовано в схеме; параллельно к 30ком подключено управляемое сопротивление АРУ на полевиках. Качественно это количественное уточнение сути дела не меняет. К сожалению, я только после этого мероприятия заметил, что у меня в компе была включена галка "Auto Gain Control" (все эффекты отключил, а про эту АРУ я в суете или забыл или нечаянно включил, вместо того чтобы выключить). Завтра-послезавтра повторю без этой галки, и напишу, влияет ли она и как. |
xoiss
Advanced Member
Всего сообщений: 711 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 30 окт. 2013 |
... мда, как говорицца, непрокатило боюсь, "цифрой" это никак не улучшить... особенно на участках, где в канале длительное время нет активности "Романтик" у Вас какой? М-201С? М-309С? М-311? ... уточните, пожалуйста, модель — я хотел бы глянуть схему его канала записи // ну, или если есть сразу в готовом виде скан его принципиалки — то пришлите, пожалуйста |
Sinus
Newbie
Откуда: СПб Всего сообщений: 30 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 7 авг. 2016 |
xoiss Почему плохо записался маткадный сигнал "проба" с пологими фронтами, я пока ещё не понял. (Буду выяснять, опыты с пологими фронтами собираюсь продолжить.) Но уже убедился, что "прямоугольный" сигнал с частотой дискретизации 1000 Гц не годится: известная в ЦОС теорема Котельникова и практика ЦОС против таких сигналов резко протестуют; вот подтверждающие опыты: test-2_17-05-2018.pdf Это опыты без магнитофона, только с компом. Если у Вас будет желание и время, то попробуйте, пожалуйста, проделать их тоже: интересно посмотреть, как сильно зависит результат от звукового чипа в компьютере (или от звуковой карты, если она есть). xoiss написал: "Романтик М-309С-1"; схема есть здесь: "Романтик" у Вас какой? М-201С? М-309С? М-311? ... http://rw6ase.narod.ru/00/mg_kp1/romantik_m309.html |
xoiss
Advanced Member
Всего сообщений: 711 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 30 окт. 2013 |
Добрый день! (1) Да, я посмотрел Ваш отчёт — Вы всё правильно там изложили. Я не учёл, что в потоке может быть нечётное (три, например) количество сэмплов с одинаковым уровнем. Из-за этого возникает мгновенная инверсия фазы. Ну, если не вдаваться в детали, то это так. Разные реализации алгоритмов могут иметь свои сайд-эффекты в таком случае, когда приходится склеивать разрыв фазы. В частности, декодер ffmpeg (который в общем можно считать стандартом) в таком месте добавляет "лишний" импульс. Полагаю, аудио-чип у Вас в компьютере, порождает примерно похожий дефект. Ну, такой дефект — лишний импульс — конечно, никак нельзя устранить аналоговыми цепочками. Вот здесь этот дефект виден на отсчётах 1361 и 1650: https://yadi.sk/i/0dWD0doa3W7sPq - синий — это "эталонный" сигнал — сигнал, изначально синтезированный на 48000 Гц - оранжевый — это сигнал, синтезированный на 1000 Гц и потом ресемплированный при помощи ffmpeg на 48000 Гц ИТОГО: ---- Ок, согласен, 1000 Гц никак не годится. (2) Изначально, когда проверял это всё, я взял слишком короткий пример (емнип, что-то около 9 семплов), и в нём, увы, надо полагать, не было цепочки из трёх одинаковых битов подряд. Ну, вынужден признать, проглядел я этот дефект, а "чистую теорию" — наверное, уже подзабыл я все эти чётности-нечётности, тетроды-пентоды. ... и шо ж таперь делать??? Увеличивать размер файла в 48 раз (до 48000 Гц) и страдать? Ну уж нет!! Коли наши логарифмы не любят моментальную инверсию фазы — избавим их от этой напасти. Сделаем частоту дискретизации 2000 Гц вместо 1000 Гц. Как следствие непрерывные цепочки из нечётного числа одинаковых сэмплов более встречаться не будут — они все умножатся на 2 и станут чётными. Вот здесь это видно — "лишние" импульсы теперь не возникают, т.к. фаза теперь нигде на 180 градусов мгновенно не инвертируется: https://yadi.sk/i/9d_Lu4ZG3W7sPx - синий — "эталонный" сигнал, изначально синтезированный на 48000 Гц (как и в п.1) - оранжевый — это сигнал, синтезированный теперь уже на 2000 Гц и потом ресемплированный при помощи ffmpeg на 48000 Гц (3) Вот. Предлагаю Вам четыре файла, синтезированные на сетке 2000 Гц: 1-2-3--sample_rate=2000--soft_ends=True.wav https://yadi.sk/d/126v64hQ3W82jF 1-2-3--sample_rate=2000--soft_ends=False.wav https://yadi.sk/d/EpX0vqCw3W82j8 7-11-2017_tablo-XY-test__KP-637_N-36--sample_rate=2000--soft_ends=True.wav https://yadi.sk/d/7s6sveA93W82jU 7-11-2017_tablo-XY-test__KP-637_N-36--sample_rate=2000--soft_ends=False.wav https://yadi.sk/d/uTN6uZEc3W82jN Посмотрите, пожалуйста. Здесь: - soft_ends=True — вариант с плавным введением/выведением уровней в начале и конце записи - soft_ends=False — вариант со скачкообразным введением уровня в начале и удержанием неизменного уровня в конце записи // хотя, честно, я не думаю, что это будет иметь какое-либо влияние на "середину" файла — ну, таки пусть будет, уж если Вы спрашивали ранее (4) Какие ещё дефекты здесь остались? А вот такие: 1. заваливание фронта/среза импульса с огибающей 1000 Гц (для сетки дискретизации 2000 /в секунду) 2. постоянное +90° смещение фазы — т.е. постоянное опережающее смещение фронта/среза импульса в обоих каналах примерно на 30-50% от ширины импульса 3. небольшие гармонические выбросы на полках импульсов в направлении нуля -- 4. ---- устранён дефект "лишние импульсы" в точке инверсии фазы ---- Что с ними делать? Ну, примерно вот что: 1) усилитель записи в магнитофоне и так завалит резкие фронты/спады — поэтому, думаю, первый дефект не очень суть критичен. Максимум, что из-за него может быть, - это недостаточная амплитуда считанного импульса (недостаточная величина производной). Если это будет критическим моментом, то можно будет попробовать увеличить сетку синтезатора до 4, 6, 8... кГц 2) постоянное смещение всех перепадов в одном направлении в обоих каналах — это в принятой схеме кодирования вообще некритично 3) выбросы на полках импульсов — полагаю, их можно будет подчистить, просто введя усилитель записи магнитофона в режим перегрузки по входу (ну, хватит 30% перегрузки, думаю). Кстати, перегрузка усилителя записи по входу должна также помочь и против дефектов типа (1) и (2) Таким образом — универсальное решение: перегрузить усилитель записи по входу на 30-50%. (5) И чтоб дважды не вставать, высылаю Вам ещё четыре файла, синтезированные на сетке 48000 Гц: 1-2-3--sample_rate=48000--soft_ends=True.wav https://yadi.sk/d/Im6UnDV-3W6cL7 1-2-3--sample_rate=48000--soft_ends=False.wav https://yadi.sk/d/D35lGjWv3W6cL2 7-11-2017_tablo-XY-test__KP-637_N-36--sample_rate=48000--soft_ends=True.wav https://yadi.sk/d/_vPAsnDX3W6cLF 7-11-2017_tablo-XY-test__KP-637_N-36--sample_rate=48000--soft_ends=False.wav https://yadi.sk/d/s2hbmKHo3W6cLB Зачем? Ну, так, для сравнения с теми, что на 2000 Гц. // честно говоря, мне ОЧЕНЬ не хотелось бы поднимать частоту до 48 кГц без крайней на то надобности, ибо файлы получаются ну уж очень большими (6) В своей программе я немного подкрутил алгоритм — теперь можно устанавливать sample_rate любым, кратным 2000 (ну, частота, кратная 1000, нас не устраивает из-за чётностей-нечётностей). Это позволяет установить стандартные частоты, например, 48 кГц. Я не стал делать поддержку частот типа 44100 Гц или 22050 Гц, т.к. это потребовало бы значительную переделку алгоритма, который изначально был рассчитан на сетку 1000 Гц. А так я просто вместо одного кадра вставляю N копий такого кадра, чтобы получить N кГц вместо 1 кГц — простое решение. (7) Для всех научных опытов я использую программу ffmpeg — это такой аудио-видео-медиа "кухонный комбайн" — который может абсолютно всё, и даже то, чего не может Чак Норрис. // а если он чего-то всё-таки не может, то мы тут для него пишем плагины Собсна, самый простой опыт — это сделать с её помощью ресемплирование 2000 Гц-сигнала на 48000 Гц — и посмотреть, что получится: ffmpeg -i myfile_2000.wav -c:a pcm_u8 -ar 48000 myfile_resampled_2000_to_48000.wav Вот. ffmpeg в режиме ресемплера позволяет избежать необходимости стыковать две отдельные программы (плеер и рекордер) через аудиосистему компьютера. На выходе (файл) Вы получаете математически строгий результат, хотя и используете при этом не абстрактную матмодель, а вполне "промышленные" библиотеки аудио-кодеков. (8) Вот. Ну и ещё хотелось бы отметить такой момент: Как я и ожидал, в схеме усилителя записи "Романтика" есть элементы, подавляющие постоянную составляющую сигнала. Это крайне не дружит с битстримом, в котором могут наблюдаться ооооооооооочень длинные цепочки из одинаковых бит. В случае с Д3-28 получается следующее: - если есть участок памяти, забитый "0000", то за период XX * 9 бит (XX байт) в канале "1" не будет ни одной смены уровня - сотвесна, если после такого длинного участка в XX нулевых байт придёт байт, содержащий "1", то величина записанного импульса будет, ну, наверное, в два раза ниже, чем должна была бы быть Ну, будем надеяться, что это не повлечёт концептуальных проблем при воспроизведении. Однако, чисто на пробу высылаю Вам один файлик, в котором вот специально вставлены длинные цепочки "нулей" или "единиц": long-stalls.dat https://yadi.sk/d/zZao8-8W3W82sy long-stalls--sample_rate=2000--soft_ends=True.wav https://yadi.sk/d/rKXcsnB23W82uA long-stalls--sample_rate=48000--soft_ends=True.wav https://yadi.sk/d/DRwKodL03W82uy В этом файле вставлена цепочка "0000" из 4 байт, потом цепочка "1515" из 4 байт, потом такие же пары цепочек, но уже из 8 байт и из 16 байт ---- всего 6 цепочек. Цепочки разделены маркёрами "1010 0505". Спасибо! С уважением, Александр. |
Sinus
Newbie
Откуда: СПб Всего сообщений: 30 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 7 авг. 2016 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 19 мая 2018 1:27 Сообщение отредактировано: 19 мая 2018 1:32
xoiss, спасибо. О результатах на моём компе: 1. Без магнитофона, вроде, всё нормальноно выглядит (если не обращать внимания на обсуждавшиеся выше "осцилляции Гиббса"). Картинки для разных примеров похожи, привожу только две, для: 1-2-3--sample_rate=2000--soft_ends=True.wav 1-2-3--sample_rate=48000--soft_ends=True.wav https://yadi.sk/i/_6TfPuJ33W9YFb (test-3_no_mag__18-05-2018.jpg) 2. С "Романтиком" плохо понимаю, что происходит. Трижды записывал (пока он, гад, ленту не зажевал). Сначала артефакты оставались, но когда я поменял плеер, и при записи (через менее чувствительный вход, т.е. с делителем 30/(820+30)) уровень громкости компьютера убавил наполовину, то вроде стало лучше. Но всё-таки кое-где артефакты появляются. Описывать результат в картинках поленюсь, вот сам конечный wav-файл, в который аудиоредактором записан сигнал с магнитофона: https://yadi.sk/d/3toggyID3W9YSY (test-3_18-05-2018.wav; примерно 2.5 мегабайта) Там 18=6·3 записей - на "Романтик" были записаны Ваши 6 сигналов (каждый сигнал по 3 раза подряд) в следующей последовательности: 1-2-3--sample_rate=2000--soft_ends=True.wav 7-11-2017_tablo-XY-test__KP-637_N-36--sample_rate=2000--soft_ends=True.wav 1-2-3--sample_rate=48000--soft_ends=True.wav 7-11-2017_tablo-XY-test__KP-637_N-36--sample_rate=48000--soft_ends=True.wav long-stalls--sample_rate=2000--soft_ends=True.wav long-stalls--sample_rate=48000--soft_ends=True.wav Для сигналов с soft_ends=False, как Вы и говорили, всё примерно так же (только с "щелчком" на концах, а "середина" такая же; поэтому результат не привожу). 3. Один канал в "Романтике" (верхний на рисунках, т.е. "канал нулей") работает хуже другого. Он и стирает хуже, и в нём между импульсами возникает паразитное низкочастотое переколебание ("горб"), на фоне которого величина полезных импульсов оказывается очень малой - машинка их не увидит. (Наверное, АРУ реагирует на паразитный НЧ "горб" между импульсами как на сигнал, поэтому полезный перепад уровня оказывается подавленным). Кроме того, может быть, когда в одном канале долго нет активности, то АРУ повышает его чувствительность, и в него начинает проникать помеха из другого канала. 4. Думаю в итоге, что Ваш метод работоспособен, однако нужен хороший магнитофон; желательно без АРУЗ, с ручной регулировкой уровня записи. И хорошо бы проверять результат на Д3-28: всё-таки машинка в этой игре главный судья. 5. Малый размер wav-файла, думаю, не должен быть самоцелью; качество записи важнее. Важно, чтобы самодельную запись на кассете хотя бы один раз удалось загрузить в Д3-28; тогда можно будет записать хорошие копии самой машинкой, в любом количестве. |
<<Назад Вперед>> | Страницы: 1 * 2 3 | Печать |
Полигон-2 » Калькуляторы, арифмометры, PDA, HPC » Свисток для Д3-28 |
1 посетитель просмотрел эту тему за последние 15 минут |
В том числе: 1 гость, 0 скрытых пользователей |
Последние | |
[Москва] LIQUID-Акция. Сливаются разъемы CF МС7004 и 7004А на AT и XT Пайка термотрубок Проммать s478 PEAK 715VL2-HT ( Full-Size SBC) Подскажите по 386 материке по джамперам. |
Самые активные 5 тем | |