интересное для программистов
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-уровнем. Это возможно звучит довольно сухо, но я, никоим образом не аудиофил, был заворожен этим видео - исключительно ясные объяснения, на редкость наглядные демонстрации с помощью аналоговых генератора сигнала и осциллоскопа итд. Особенно понравилось объяснение того, почему концептуально неверно рисовать цифровой сигнал в виде "лесенки", и почему все равно это всегда делают. Очень круто.
Re: про цифровой
Date: 2017-08-30 11:41 pm (UTC)> точки кривую ограниченного спектра?!
Цифровая. Ей никто не мешает посчитать значения сигнала в промежуточных точках, а потом вывести результат на ЦАП с каким угодно качеством.
Считать просто: БПФ раскладывает сигнал на синусоиды, sin(x) компьютер считать умеет.
Re: про цифровой
Date: 2017-08-31 10:24 am (UTC)Re: про цифровой
Date: 2017-08-31 11:16 am (UTC)Может по-разному происходить. Например, можно реконструировать сигнал из той самой 16-битной лесенки. Можно и иначе, например, пересчитав сигнал в однобитный, но с более высокой частотой дискретизации (т.н. сигма-дельта-модуляция). Это целая наука, которой он вовсе не касается.
"откуда берётся декларированное докладчиком ограничение полосы пропускания"
Из аналогового фильтра нижних частот *на входе* системы, перед АЦП.
На выходе тоже ставят аналоговый фильтр нижних частот, который убивает высокочастотные компоненты, имеющиеся в лесенке или в сигма-дельта-сигнале и преобразует ее из лесенки в исходную синусоиду. Но его назначение другое --- защищать *аналоговый* тракт (усилитель, который после ЦАП) от нежелательной высокочастотной составляющей. В теории ее не должно быть слышно, но на практике из-за нелинейности усилителя будут неприятности.
Re: про цифровой
Date: 2017-08-31 01:34 pm (UTC)RE: Re: про цифровой
Date: 2017-08-31 01:50 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 02:14 pm (UTC)На практике, конечно, очень трудно отрезать без остатка все выше 22.4 кГц и оставить без изменения все ниже 20 кГц. Поэтому и здесь тоже повышают частоту, с которой ЦАП выдает свою лесенку (заодно можно понизить разрядность). Промежуточные значения вставляют какие надо, чтобы частоты выше 20 кГц не появлялись на выходе (DSP их считает). Получается, что теперь надо отрезать не все, что выше 22.4 кГц, а все, что выше, например, 1 МГц, при этом опять же оставить без изменения только то, что ниже 20 КГц. А это уже гораздо проще.