Интерполяция или фильтр?

Долгое время меня беспокоил вопрос, почему слова «интерполяция» и «фильтр» порой употребляются как взаимозаменяемые. Например, билинейная фильтрация и билинейная интерполяция по сути одно и то же явление.

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

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

Читать далее ▸

Nancy — успешный запуск на Mono

На этой неделе, дабы «не отставать от поезда современного программирования», я изучал Visual Studio 14 CTP, OWIN, Katana, ASP.NET vNext и вообще будущее ASP.NET.

Если вкратце, то там назревают революционные изменения, но ничего реально полезного на данный момент попробовать нельзя. Под полезным я понимаю обещанный запуск ASP.NET-приложений без IIS или даже на Mono (как я понял, именно для этого вся движуха и затевалась).

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

(кадр из Города грехов: Нэнси Каллахан и жёлтый ублюдок)

Название фреймворка является остроумной отсылкой к Нэнси Синатра, потому что продукт написан «по мотивам» минималистичного Sinatra для Ruby. Вдобавок название хорошо согласуется с традицией называть порты на .NET словами на букву N.

В статье я опишу путь от создания проекта до его развертывания на Ubuntu с остановками в тех местах, где можно получить по лбу черенком от граблей.

Читать далее ▸

Automatic Gain Control

Несколько раз передо мной вставала задача выравнивания громкости в длинной аудиозаписи — чаще всего это были диджейские миксы, которые, как правило, длятся около часа.

Вообще считается, что DJ должен заботиться об уровне звука в процессе сведения, но это в идеале, а на практике может получиться вот так:

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

Как это исправлять?

Читать далее ▸

Курс джазовой импровизации от Gary Burton на Coursera

Просматривая список онлайн-курсов на Coursera, был приятно удивлен, заметив среди представленных учебных заведений Музыкальный колледж Беркли. Да еще с такими курсами как Introduction to Music Production и Jazz Improvisation.

Курс джазовой импровизации меня привлёк по нескольким причинам.

Во-первых, это очень интересная тема. Являясь музыкантом-любителем, я время от времени брался за изучение импровизации, пытался освоить теорию по книгам (например, The Complete Jazz Guitar Method и ещё одной, в которой гарантировалось, что после разучивания 7 ладов мажорной гаммы сразу начинаешь импровизировать как не в себя), но всякий раз бросал не то что на полпути, а где-то в самом начале.

Во-вторых, инструктор Gary Burton — всемирно известный и уважаемый вибрафонист, которому сейчас уж за семьдесят и который успел поиграть с Астором Пьяццоллой.

В-третьих, мне стало жутко любопытно, как проходит онлайн-обучение таким сугубо-гуманитарным творческим дисциплинам.

Вот вступительное видео к курсу, в котором гитарист Пэт Мэтини и уже слегка мумифицировавшийся Чик Кориа горячо рекомендуют маэстро в качестве педагога и наставника:

Обучение длится 5 недель. Каждый понедельник публикуется очередной урок, состоящий из нескольких коротких видео-лекций (общей длительностью примерно 20 минут) и домашнего задания.

Читать далее ▸

Pseudo-streamng mp3-файлов с помощью Node.js

Речь пойдет о проигрывании mp3-файлов в браузере.

Допустим, лежит у вас в сети mp3-файл, и вы хотите, чтобы с помощью параметра можно было запустить его с любого момента:

http://www.example.com/song.mp3?start=15

У читателя могут возникнуть два вопроса: зачем это вообще нужно и как это реализовать. Отвечу по порядку.

Зачем это вообще нужно?

Сама задача произвольного доступа к медиа-файлу вопросов не вызывает. Если есть длинное аудио (например, часовой диджейский сет или симфония), то функция перемотки без полной буферизации напрашивается сама собой.

Хорошие HTML5-браузеры умеют делать seek с помощью Range-запросов. А вот Flash не умеет, но его приходится использовать до сих пор, потому что не всякий браузер поддерживает mp3. И даже те браузеры, которые поддерживают, имеют вопиющие баги. Чего стоит обнаруженный мной на этой неделе разлом в Chrome 33.

Читать далее ▸