Однострочные (почти) мелодии на STM32

Была сделана демо плата для STM32 с сами знаете какой целью и вот подошло время для проверки ЦАП. В это время читая хабр, я заметил комментарий про однострочные мелодии. Вот источник — http://countercomplex.blogspot.com/2011/10/algorithmic-symphonies-from-one-line-of.html
Здесь все описание и примеры формул и видео, а также онлайн джаваскрипт для всего этого.
Суть в том, что с определенной частотой (чаще всего 8Кгц) в ЦАП поступает значение вычесленное от инкрементируемой переменной по эмпирической “формуле”, чем-то похожей на генератор М-последовательности. Иногда получаются мелодии, вот. На выход цапа (фильтр желателен, хотя…) был подключен простой усилок и динамик.


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

Запись звука

AVR
На AVR'ках можно неплохо работать со звуком. Сделать, например, какой-нибудь диктофончик или плеер.

В этом посте — только про захват звука. Впрочем, если кому-нибудь окажется интересно, можно написать ещё)


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

Светильник со звуковым управлением

Вот уже почти восемь месяцев (чуть ранее, чем с 11 октября 2010) у меня живет светильник со звуковым управлением. По-идее должен реагировать на три хлопка в ладоши, но, по свей глупости, принимает за хлопок любой короткий резкий звук (чем иногда доставляет).

Первые месяца два на хлопки отзывался светильник над рабочим столом. На нем тестировалась схема — было удобно подключать и отключать девайс от светильника. Кстати, лампочка дневного света управлялась симистором (Что как-бы делать нельзя :)). Тогда-же я выяснил, что пьезодинамик прекрасно ловит не только звуки но и вибрации — на тихий стук по полке (на которой был закреплен светильник) отзывался так-же как на хлопки в ладоши.

После того, как прошивка была допилена до такого состояния, что свет включался почти с первой попытки, вся конструкция переселилась в другой светильник — над диваном, где живет до сих пор. Плата с самого начала ни разу не поменялась, а когда нужно было добавить в схему кнопку для ручного включения/выключения света, я просто завесил её на неиспользуемый пин.

acoustic_light_1.JPG

При переезде схемы в маленький светильник, внезапно, выяснилось, что трансформатор (который изначально все питал) туда уже не влезает. Пришлось приколхозить кусок зарядника для телефона — уж больно лениво было переделывать плату.

По-хорошему надо было переделать схему под микрофон, ибо совковый пьезодинамик, торчащий а проводках из красивого светильника, выглядел «немного не в тему». Но дело спасла обычная белая мышь, которая теперь держит пищалку в лапах и гордо смотрит в потолок.

acoustic_light_2.JPG

Для того, чтобы можно было бесшумно включать свет, я повесил выключатель на веревочке.
Да, теперь у меня мультипроцессорная система :)

Что касается работы устройства — ложных срабатываний мало (бывает, если кто-то громко спорит, свтильник паникует и выключается. ЧСХ, после этого обычно следует аргумент типа «ты так громко кричишь, что даже лампочка пугается» :))

Чуть более часто случается противоположная ошибка — светильник ни под каким предлогом не реагирует на команду. Вся фишка в том, что он воспринимает три хлопка с определенным ритмом. Я и домашние уже привыкли, а друзья-знакомые, даже один раз научившись с первого раза рулить лампочкой, через неделю теряют со светильником общий язык. Сидят и хлопают в ладоши как дети малые (что-уже само по себе весело), причем напрочь забывая о том, что таймер, запустившись после 1го хлопка, отмеряет 2сек и только потом принимает решение о том, включать свет или нет. Они-же, хлопнув три раза, и не получив результата — повторяют паттерн снова, чем приводят бедную тиньку в замешательство.

Асло, замечено, что некоторым персонажам сам факт включения света хлопком в ладоши доставляет немало лулзов. Они мучают несчастный светильник, а он вынужден подчиняться, ибо МК созданы, чтобы служить людям. Эх, надо-бы припилить к нему говорилку, да разрешить светильнику, при слишком большом количестве команд-в-минуту, посылать всех на йух. Но для этого точно придется переделывать плату… а мне лень :)

Воспроизведение звука на STM32-Discovery при помощи Speex

Многие уже воспользовались известным конкурсом, и заказали себе плату STM32-Discovery. Я тоже заказал себе такую. Захотелось сделать на ее основе какую либо конструкцию. Меня заинтересовал AN2812 от ST, в котором описывалось воспроизведение звука с использованием библиотеки Speex для STM32. Однако недостатком аппноута было то, что в нем использовалась stm32f103, более мощная чем stm32f100, установленная в discovery. Также аппноут рассчитан на работу с более сложной отладочной платой. Поскольку я только начинал изучать STM32 (это мой первый проект, до этого я только светодиодом мигал), я решил не пытаться запустить код аппноута, а собрать весь проект с нуля. Проект был создан в IAR.
Вид получившейся конструкции:




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

Сжатие звука в IMA ADPCM

Есть такой аудиокодек — IMA ADPCM. Сжимает аудио в 4 бита на сэмпл (250 кбит/с при частоте дискретизации 32 кГц, стерео), после чего, достаточно достоверно восстанавливает. А главное, очень быстро. Около 100 тактов на сэмпл на ядре AVR.

Как это работает?


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