интересное для программистов
Aug. 30th, 2017 07:12 pmТри интересные статьи, из увиденного недавно.
1. How it feels to learn Javascript in 2017. Дает некое представление о том, как устроены популярные фреймворки последних лет - с виртуальными DOMами, современным синтаксисом ES6, HTML внутри джаваскрипта (JSX). Я довольно далеко от этого мира, и во многом отношусь к нему скептически, но эта небольшая, живо и инересно написанная статья меня покорила.
2. Fizzlefade. Рассказ о том, как в классической игрушке Wolfenstein 3D был сделан эффект "экран постепенно покрывается красными точками, символизирующими кровь, пока целиком не становится красным". Есть исходники на 16-битном ассемблере и эквивалент на C, для тех, кто не хочет вспоминать ассемблер. Очень советую вчитаться как следует и разобраться для себя в том, как устроен LFSR, и особенно - почему "Галуа"-версия LFSR, которая обходится всего одним XOR'ом, эквивалентна обычной. Там весьма элегантный хак.
В качестве бонуса - статья Антиреза Doing the FizzleFade effect with a Feistel network, о совершенно другом способе добиться того же эффекта.
3. Digital Show & Tell - захватывающее видео о некоторых заблуждениях насчет того, как работает аналогово-цифровое конвертирование и наоборот, и почему самплинг типа "24 бита, 192кгц" не дает дополнительных преимуществ в сравнении с обычным CD-уровнем. Это возможно звучит довольно сухо, но я, никоим образом не аудиофил, был заворожен этим видео - исключительно ясные объяснения, на редкость наглядные демонстрации с помощью аналоговых генератора сигнала и осциллоскопа итд. Особенно понравилось объяснение того, почему концептуально неверно рисовать цифровой сигнал в виде "лесенки", и почему все равно это всегда делают. Очень круто.
1. How it feels to learn Javascript in 2017. Дает некое представление о том, как устроены популярные фреймворки последних лет - с виртуальными DOMами, современным синтаксисом ES6, HTML внутри джаваскрипта (JSX). Я довольно далеко от этого мира, и во многом отношусь к нему скептически, но эта небольшая, живо и инересно написанная статья меня покорила.
2. Fizzlefade. Рассказ о том, как в классической игрушке Wolfenstein 3D был сделан эффект "экран постепенно покрывается красными точками, символизирующими кровь, пока целиком не становится красным". Есть исходники на 16-битном ассемблере и эквивалент на C, для тех, кто не хочет вспоминать ассемблер. Очень советую вчитаться как следует и разобраться для себя в том, как устроен LFSR, и особенно - почему "Галуа"-версия LFSR, которая обходится всего одним XOR'ом, эквивалентна обычной. Там весьма элегантный хак.
В качестве бонуса - статья Антиреза Doing the FizzleFade effect with a Feistel network, о совершенно другом способе добиться того же эффекта.
3. Digital Show & Tell - захватывающее видео о некоторых заблуждениях насчет того, как работает аналогово-цифровое конвертирование и наоборот, и почему самплинг типа "24 бита, 192кгц" не дает дополнительных преимуществ в сравнении с обычным CD-уровнем. Это возможно звучит довольно сухо, но я, никоим образом не аудиофил, был заворожен этим видео - исключительно ясные объяснения, на редкость наглядные демонстрации с помощью аналоговых генератора сигнала и осциллоскопа итд. Особенно понравилось объяснение того, почему концептуально неверно рисовать цифровой сигнал в виде "лесенки", и почему все равно это всегда делают. Очень круто.
no subject
Date: 2017-08-30 05:02 pm (UTC)no subject
Date: 2017-08-30 05:08 pm (UTC)no subject
Date: 2017-08-30 05:20 pm (UTC)no subject
Date: 2017-08-30 05:40 pm (UTC)no subject
Date: 2017-08-30 06:33 pm (UTC)no subject
Date: 2017-08-30 07:53 pm (UTC)Вот этого я как-то там не увидел. Наоборот, говорится о том, что чем ниже битность, тем больше шум.
no subject
Date: 2017-08-30 07:55 pm (UTC)no subject
Date: 2017-08-30 08:21 pm (UTC)no subject
Date: 2017-08-30 08:33 pm (UTC)no subject
Date: 2017-08-30 08:39 pm (UTC)про цифровой
Date: 2017-08-30 08:47 pm (UTC)no subject
Date: 2017-08-30 08:51 pm (UTC)mov es:[bx-1],color
(в полтора килобайта за пределами видимого экрана можно писать без зазрения, потому что они всё равно не используются).
no subject
Date: 2017-08-30 09:06 pm (UTC)24 бита и 192 кГц полезны как промежуточный формат при цифровой обработке, именно чтобы не париться по поводу ошибок округления и упростить фильтрацию. (А честные 24 бита из исходных аналоговых сигралов всё равно никак не извлечь.)
no subject
Date: 2017-08-30 09:19 pm (UTC)Нынешняя куда оптимистичней и слегка вернула мне веру в прогресс.
Re: про цифровой
Date: 2017-08-30 09:21 pm (UTC)no subject
Date: 2017-08-30 10:04 pm (UTC)no subject
Date: 2017-08-30 10:49 pm (UTC)Re: про цифровой
Date: 2017-08-30 11:41 pm (UTC)> точки кривую ограниченного спектра?!
Цифровая. Ей никто не мешает посчитать значения сигнала в промежуточных точках, а потом вывести результат на ЦАП с каким угодно качеством.
Считать просто: БПФ раскладывает сигнал на синусоиды, sin(x) компьютер считать умеет.
no subject
Date: 2017-08-30 11:46 pm (UTC)no subject
Date: 2017-08-31 01:31 am (UTC)Именно, но процесс передачи информации и есть промежуточный этап, когда неизвестно какого качества будет DAC в декодировании, есть смысл облегчить ему жизнь.
no subject
Date: 2017-08-31 02:24 am (UTC)1. Выше 20 кГц ни один человек реально не слышит - порог слышимости становится выше олевого порога. Любой сигнал со спектром до 20 кГц совершенно точнно передаётся при дискретизации 44.1 или 48 кГц. Ультразвук (возможностью передачи которого только и отличается 192 кГц) в лучшем случае ничего не добавляет к тому, что слышим, в худшем - ухудшает слышимый сигнал из-за нелинейностей тракта.
2. 16-битной квантизацией можно представлять сигналы с разностью уровней более 100 дБ, что соответствует разности между писком комара в комнате и звуком отбойного молотка на расстоянии 1 метр. Это намного превышает любой полезный разброс уровней в записи.
3. Представление 24 бита, 192 кГц имеет определённый смысл для промежуточных этапов работы со звуком, но совершенно бесполезно для окончательного проигрываемого трека. Это консенсус специалистов, многократно подтверждённый двойыми слепыми исследованиями.
no subject
Date: 2017-08-31 03:53 am (UTC)https://hackernoon.com/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f
no subject
Date: 2017-08-31 06:04 am (UTC)http://www.osdever.net/FreeVGA/vga/graphreg.htm
no subject
Date: 2017-08-31 07:23 am (UTC)no subject
Date: 2017-08-31 07:42 am (UTC)1.
Динамический диапазон имеет у уха человека "динамическую" же природу. Все вот эти самые "косточки и стремечки".
Да типа "большой кондер на входе" это как то там эмулирует. Но ключевое слово "как то там".
Если за вас в ресторане прожевали кашку и подали на стол... пусть даже прожевал шеф повар... наверное что то не так?
Ну так и в аппаратуре динамический диапазон очень важен.
Это окно в 12 децибел постоянно "бегает" по "шкале усиления" у человека. И реальная картина по разрешению куда как круче. В отсутствии громкого звука вы различаете самый тихий шепот, а в полной тишине слышите как течет кровь по сосудам. У аппаратуры альтернатива "тупому конденсатору" это делать очень широкий дипазон динамический (ну или синтезировать его записывая сигнал сразу на нескольких уровнях усиления как в фотографии).
2.
Про осциллограф смешно.
Представим сигнал состоящий из кучи взаимодействующих между собой "синусов" частотой лежащих выше 20 кГц и _активно_ "шевелящих фазой". Вы что поверили этому перцу, что ничего не будет регистрироваться ниже?
Это _динамически_меняющийся_по_времени_ звук, его динамический диапазон шире чем можно смоделировать размещая синусоиды со стабильной фазой.
Ergo: Разрешение "по времени" нужно не только для того что бы зафиксировать частоты звуков, но и что бы отразить их динамику (фронты и вот это вот всё).
no subject
Date: 2017-08-31 09:36 am (UTC)1. шум дискретизации, конечно, можно услышать в идеальных условиях. хоть 16-битный, хоть 48-битный. задача не в том, чтобы сделать его неслышимым никогда. задача в том, чтобы сделать его неслышимым на фоне имеющихся постоянных аналоговых шумов. а для этого 16 бит достаточно. ну если весь ваш аналоговый тракт, от входного каскада микрофонного усилителя до выходного каскада усилителя мощности, охлаждать жидким азотом, то может быть и недостаточно. но у меня такого тракта нет. а раз нет, то дополнительные биты сверх 16 будут кодировать шум, а не сигнал.
2. если высокочастотный сигнал будет шевелить фазой с частотой, например, 50 герц, то естественно в нем появятся спектральные составляющие, кратные 50 герц. и вы их прекрасно услышите. как гудение с частотой 50 герц. что в этом такого странного или ужасного или противоречащего каким-нибудь выводам?
Re: про цифровой
Date: 2017-08-31 10:24 am (UTC)no subject
Date: 2017-08-31 10:52 am (UTC)Re: про цифровой
Date: 2017-08-31 11:16 am (UTC)Может по-разному происходить. Например, можно реконструировать сигнал из той самой 16-битной лесенки. Можно и иначе, например, пересчитав сигнал в однобитный, но с более высокой частотой дискретизации (т.н. сигма-дельта-модуляция). Это целая наука, которой он вовсе не касается.
"откуда берётся декларированное докладчиком ограничение полосы пропускания"
Из аналогового фильтра нижних частот *на входе* системы, перед АЦП.
На выходе тоже ставят аналоговый фильтр нижних частот, который убивает высокочастотные компоненты, имеющиеся в лесенке или в сигма-дельта-сигнале и преобразует ее из лесенки в исходную синусоиду. Но его назначение другое --- защищать *аналоговый* тракт (усилитель, который после ЦАП) от нежелательной высокочастотной составляющей. В теории ее не должно быть слышно, но на практике из-за нелинейности усилителя будут неприятности.
no subject
Date: 2017-08-31 12:04 pm (UTC)еще кстати, в этом видео без внимания джитер тактовой - вот у тех же аудиофилов принято брать какие-то спец. кварцы с термокомпенсацией и т.п. они утверждают, что слышат дефекты от обычного 30ppm! кварца
no subject
Date: 2017-08-31 12:28 pm (UTC)no subject
Date: 2017-08-31 12:51 pm (UTC)А не брехня ли это? Я сейчас навскидку посмотрел пару моделей, лучшее - 76 дБ. Добавить к этому ещё 54 дБ - что-то я сомневаюсь, что реально. А вот написать на коробке циферку побольше - это легко.
Опять же, 0 дБ - это порог слышимости. Особо ниже не опустишься, какие бы уши ни были: у человека есть внутренние шумы от кровеносной системы. А 120 дБ - это болевой порог.
> они утверждают, что слышат дефекты от обычного 30ppm!
> кварца
А это, случайно, не понты? А то бывали случаи, когда на слепом прослушивании аудиофил начинал втирать про джиттер и направленные не в ту сторону провода, а за ширмочкой сидел живой оркестр.
no subject
Date: 2017-08-31 12:52 pm (UTC)Re: про цифровой
Date: 2017-08-31 01:14 pm (UTC)Выдать на выход ЦАП сигнал "лесенкой", а потом каким-нибудь аналоговым фильтром (reconstruction filter) сгладить его можно, но результат будет отличаться от "математически правильного". Впрочем, "математически правильный" сигнал ограниченного спектра может быть только периодическим, так что в реальной жизни от строгой математики рано или поздно приходится отходить.
Re: про цифровой
Date: 2017-08-31 01:20 pm (UTC)2) ---
Re: про цифровой
Date: 2017-08-31 01:34 pm (UTC)RE: Re: про цифровой
Date: 2017-08-31 01:50 pm (UTC)no subject
Date: 2017-08-31 02:06 pm (UTC)предположу, что в старые добрые аналоговые времена недостающие децибелы добирали мастерством аудиорежисеров, которые крутили ручки усилителей, сводили много дорожек в одну, умудрившись впихнуть в 70дБ супер-звук путем длительных итераций.
а сейчас есть микрофон, есть цифровалка 24бит (пусть с 18-20 эффективными) любой школьник может сделать за 5мин то, что раньше месяцами делали профи.
может так?
Re: про цифровой
Date: 2017-08-31 02:14 pm (UTC)На практике, конечно, очень трудно отрезать без остатка все выше 22.4 кГц и оставить без изменения все ниже 20 кГц. Поэтому и здесь тоже повышают частоту, с которой ЦАП выдает свою лесенку (заодно можно понизить разрядность). Промежуточные значения вставляют какие надо, чтобы частоты выше 20 кГц не появлялись на выходе (DSP их считает). Получается, что теперь надо отрезать не все, что выше 22.4 кГц, а все, что выше, например, 1 МГц, при этом опять же оставить без изменения только то, что ниже 20 КГц. А это уже гораздо проще.
no subject
Date: 2017-08-31 02:40 pm (UTC)Пример: ветка, открытая уважаемым a_shen, под названием "про цифровой".
У меня это так на лаптопе и на телефоне. Кто-нибудь еще это наблюдает?
no subject
Date: 2017-08-31 05:04 pm (UTC)no subject
Date: 2017-09-04 02:59 pm (UTC)В действительности закрашивается не весь экран целиком, а только viewport; рамка вокруг него (чем меньше viewport, тем быстрее работает игра) и статусбар внизу экрана остаются незакрашенными.
Вот для этого клиппинга и нужно разделение
rndvalна координаты, и проверка их по отдельности.Кстати, никакая "сишная функция для отрисовки пикселя" не вызывается -- это тоже упрощение, сделанное автором блогпоста. В фактическом коде самый что ни на есть
asm mov [es:di],alno subject
Date: 2017-09-04 03:16 pm (UTC)https://habrahabr.ru/post/337036/
no subject
Date: 2017-09-05 04:18 am (UTC)Зато появился другой вопрос -- судя по коду рисования пикселя, они там используют mode X вместо mode 13h. Нафига создавать себе лишние трудности, если разрешение всё равно 320x200? Или изначально хотели 320x240, но скорости не хватило?
no subject
Date: 2017-09-06 05:46 am (UTC)no subject
Date: 2017-09-06 03:12 pm (UTC)