255-голосный pcm звуковой генератор

Звуковой PCM генератор на микроконтроллере ATtiny861. Часть 1. Схема

В статье рассматривается конструкция простого звукового генератора на микроконтроллере. В основе конструкции лежит проект аудиоплеера с SD картой памяти на микроконтроллере ATtiny25/45/85.

Основным элементом рассматриваемого устройства является микроконтроллер ATtiny861 производства компании Atmel, который имеет более быстрый встроенный ШИМ, по сравнению с ATtiny85. Следовательно, микроконтроллер может генерировать более чистый звук, по сравнению с другими устройствами семейства AVR.

Для хранения звуковых файлов и конфигурационного файла используется карта памяти SD (microSD), но возможно использование и карт памяти MMC с соответствующим слотом.

Дополнительно, 20-выводный микроконтроллер имеет много доступных линий ввода/вывода, что позволяет ввести систему управления генератором от внешних сигналов. Благодаря своим компактным размерам, простоте изготовления и управления, данный звуковой генератор может использоваться в качестве звукового модуля для игрушек, музыкального звонка, развлекательного устройства и пр.

Аппаратная часть

Карта памяти (microSD) используется в качестве устройства хранения и подключена к микроконтроллеру по интерфейсу SPI с использованием встроенного аппаратного модуля USI (универсальный последовательный интерфейс). Аудиосигнал генерирует встроенный ШИМ, и поэтому динамик может подключаться непосредственно к выходу ШИМ. Уровень громкости, конечно, не слишком высокий, но при использовании качественных динамиков его будет вполне достаточно.

Блок-схема микроконтроллера ATtiny861

При подключении звукового генератора к усилителю, следует помнить, что необходимо в этом случае использовать фильтр низких частот (Low Pass Filter). Подключать выход ШИМ непосредственно к усилителю нельзя, т.к. можно вывести из строя усилитель и динамик.

Для питания генератора потребуется источник напряжения 3.3 В

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

Как видно по схеме, имеется три различных варианта конфигурации выходного каскада:

  • режим монофонического выхода (файл для прошивки sdsg_mo.hex);
  • режим стереофонического выхода (файл для прошивки sdsg_st.hex);
  • режим монофонического выхода с высоким разрешением (файл для прошивки sdsg_hr.hex);
  • режим монофонического выхода с высоким разрешением и усилителем (файл для прошивки sdsg_hr.hex).

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

Также, следует обратить внимание на установку Fuse-битов при программировании микроконтроллера. Установки Fuse-битов содержаться в каждом .hex файле (sdsg_mo.hex/sdsg_st.hex/sdsg_hr.hex, соответствуют конфигурации выхода), однако не все программаторы поддерживают такой формат файлов. Поэтому, в такой ситуации, пользователю необходимо будет вручную установить конфигурацию Fuse-битов, а также необходимо удалить последние три строчки из .hex файла. О необходимой конфигурации Fuse-битов указано в тексте исходного кода в фале main.c, скачать который можно по ссылке в конце статьи.

Светодиод, по схеме подключенный к порту PB2, является индикатором статуса при воспроизведении звукового файла и индикатором ошибок:

  • две вспышки светодиода свидетельствуют об ошибке файловой системы или аппаратной ошибке;
  • три вспышки светодиода – звуковой файл не найден;
  • четыре вспышки – неверный формат звукового файла.

В следующей части: прошивка микроконтроллера, форматы звуковых файлов, команды управления и режимы работы.

Перевод: Vadim по заказу РадиоЛоцман

255-голосный pcm звуковой генератор

Этот простой звуковой генератор основан на SD аудиоплеере [2], и построен с использованием микроконтроллера ATtiny861 компании Atmel и карты памяти microSD.

Микроконтроллер ATtiny861 имеет на борту выходы аппаратного формирования fast PWM (быстрый ШИМ), так что он, как и ATtiny85, может генерировать более чистый звук по сравнению с другими чипами AVR. В 20-выводном корпусе DIP20 чипа ATtiny861 имеется больше портов ввода/вывода GPIO, что позволяет управлять звуковым генератором внешними сигналами. Поскольку управление генератором очень простое, он может быть использован как звуковой модуль для игрушек, тональных звонков, развлекательных машин и гаджетов.

[Hardware]

В качестве носителя данных для звука использовалась карта microSD, однако с таким же успехом можно применить стандартные SD и miniSD с соответствующим сокетом. Аудиосигнал, выводимый с помощью PWM (ШИМ), может быть подключен напрямую к громкоговорителю (т. е. динамик можно напрямую подключить к выходу PWM микроконтроллера). Такая нагрузка может оказаться слишком большой для порта микроконтроллера, однако максимально допустимый ток никогда не превышает установленного предела при напряжении питания 3.3 V, даже если выходной порт замкнуть на шины питания. При такой схеме подключения звук получается не очень громким, однако он хорошо слышен, если подключить настольные высокоэффективные колонки. Если Вы хотите подключить выход плеера к усилителю, то высокочастотная составляющая ШИМ должна быть отфильтрована фильтром низких частот (ФНЧ, Low Pass Filter, LPF). Не подключайте ШИМ-сигнал напрямую к аналоговому усилителю, потому что это может повредить усилитель или динамики. Выходная схема может быть собрана по трем вариантам, см. рисунок.

Каждый вариант схемы организации вывода звука (Mono-OCL/Stereo/Mono-HR) исключает использование других вариантов, и для каждого варианта написана отдельная модификация программы firmware. Таким образом, каждой конфигурации Mono-OCL/Stereo/Mono-HR соответствует свой HEX-файл (sdsg_mo.hex/sdsg_st.hex/sdsg_hr.hex). Значения фьюзов скомбинированы с HEX-файлами (встроены в них), однако некоторые программаторы AVR могут не поддерживать такой формат HEX. В этом случае просто удалите последние 3 строки их HEX-файла. Необходимые значения фьюзов можно найти в файле main.c.

[Firmware]

Программа firmware, написанная для микроконтроллера ATtiny861, поддерживает только формат RIFF/WAVE LPCM, 8/16bit, mono/stereo, sample rate 8..48 кГц. Звуковые файлы должны называться NNN.wav. Сочетание NNN соответствует диапазону чисел от 001 до 255. Звуковые файлы должны находиться в корневом каталоге карты памяти (root directory).

Команда на проигрывание соответствующего файла выдается через двоичный код, подаваемый на 8 контактов SW1..SW8. Например, SW1 соответствует файлу 001.wav, SW4 соответствует файлу 008.wav, и SW1+SW5 соответствуют файлу 017.wav. Имеется 4 режима работы, определяющие поведение звукового генератора при подаче команд управления, эти режимы конфигурируются с помощью файла 000.txt. Пример такого файла, который задает режим 3:

3 # Trigger mode (0..3)
# 0:Level triggered
# 1:Level triggered (sustained)
# 2:Edge triggered
# 3:Edge triggered (retriggerable)

Каждый из режимов работает следующим образом:

Mode 0 : Level trigger
Воспроизводит с автоповтором звуковой файл, который соответствует входному коду. Когда входной код меняется, меняется также и воспроизводимый файл. Когда на всех входах SW1..SW8 логический 0, то воспроизведение звука прекращается.
Mode 1 : Level trigger (sustained)
То же самое, что и mode 0, но воспроизведение продолжается только либо до окончания файла, либо до момента, когда все входы SW1..SW8 становятся в 0.
Mode 2 : Edge trigger
Однократно воспроизводит звуковой файл, соответствующий входному коду SW1..SW8. Любые изменения входных сигналов SW1..SW8 во время воспроизведения игнорируются.
Mode 3 : Edge trigger (re-triggerable)
То же самое, что и mode 2, однако изменение SW1..SW8 влияет на воспроизводимый файл. Чтобы воспроизвести файл заново, все входы SW1..SW8 должны перейти в 0, и на них должен быть снова выставлен нужный код.

Светодиодный индикатор LED показывает, что в данный момент воспроизводится звуковой файл. Количество миганий и секундная пауза соответствует определенному типу ошибки:

Читайте также  Проводка по полу в гофре

— двойное мигание — I/O error (ошибка аппаратуры или файловой системы).
— тройное мигание — соответствующий звуковой файл не найден.
— четырехкратное мигание — ошибка в звуковом файле, либо он имеет недопустимый формат.

255-голосный pcm звуковой генератор

Цифровой 8 канальный процессор обработки звука

Автор: AntoxaZ18
Опубликовано 19.09.2016
Создано при помощи КотоРед.
Участник Конкурса «Поздравь Кота по-человечески 2016!»

Всем привет, хочу поделиться с вами своим небольшим проектом. Я люблю слушать музыку в машине и дома, поэтому задумался о переходе на схему с поканальным усилением. От обычной схемы заключается в том, что отсутствуют пассивные кроссоверы на выходе усилителя, и на каждый динамик приходится отдельный канал. В чём преимущество такой схемы? Помимо увеличения мощности, улучшается и разрешение акустики за счёт того, что каждый диапазон усиливается своим усилителем. Так же это позволяет более точно настроить акустическую систему, так как каналы независимы друг от друга. Так как акустическая система обычно состоит из нескольких полос НЧ/СЧ/ВЧ, то необходимо разделить сигнал на отдельные полосы для каждого динамика:

Где НЧ — частотная область работы сабвуфера СЧ — область работы среднечастотных динамиков
ВЧ — область работы пищалок (твитеров).

Такую задачу можно решить с помощью перестраиваемых фильтров на операционных усилителях (кроссоверы линквица-райли). Но у этого решения есть недостатки:
большое количество элементов при большом количестве каналов:
1. сложность настройки
2. нет возможности сохранить параметры настроек
3. высокие требования к разводке платы
Плюс ко всему динамики установлены на разном расстоянии, и для выравнивания было бы неплохо ввести разные временные задержки. В связи с этим было принято решение делать обработку в цифровом виде, за одним избавится от крутилок и получить возможность управлять с компьютера/смартфона и сохранять конфигурацию, а также расширять возможности обработки звука: лимиттеры мощности выходного сигнала/эквалайзер, фазолинейные фильтры (КИХ).

Исходя из задач были выдвинуты следующие требования:
12В, гальванически развязанное, чтобы не было земляной петли между источником звука и процессором. Вход REM чтобы в выключенном состоянии не высаживать аккумулятор. Количество выходных каналов: минимум 7 (2 мидбаса, 2СЧ, 2ВЧ, сабвуфер). Качество АЦП/ЦАП желательно такое, чтобы не слышно было присутствие процессора в тракте. Вход: Стерео сигнал с тюльпанов с магнитолы, либо цифровой вход SPDIF или TOSLINK. Подключение к ПК с помощью USB.

Схема

Следующим этапом стало создание схемы устройства и выбор компонентов. В качестве выходного ЦАП я выбрал 8 канальный ЦАП
PCM1861
Dynamic Range: 105 dB
SNR: 105 dB
THD+N: 0.002%

А в качестве источника входного сигнала
АЦП PCM1808
PCM1808: 2 канала 24 бита
THD+N: –93 dB
SNR: 99 dB
Dynamic Range: 99 dB

Компоненты выбирал не очень дорогие, так как это большей степени экспериментальный проект. Сердцем системы стал процессор STM32F745. Почему именно это процессор? Он имеет маленький, легкий для пайки корпус, а также достаточно серьезные возможности в области обработки сигналов. Имеет на борту все что нужно для работы со звуком: 7 каналов I2S + поддержка расширенных аудио протоколов типа TDM, 4 входа SPDIF, i2c, spi, ШИМ, аппаратное вычисление чисел с плавающей точкой и еще куча всего. Очень интересно было проверить его возможности на реальных задачах.

Теперь пройдемся по получившейся схеме устройства:

Она получилось достаточно гармоничной и лаконичной. Полная версия в формате Pcad и картинкой есть в приложении к статье.

Схема подключения процессора: Процессор тактируется от внешнего кварца 8 МГц.

Схема питания: Развязанный DC/DC преобразователь Ирбис. Максимальный ток модуля — 0,5А. Работает от 9 до 18 вольт. Выдает стабилизированное напряжение 6В и имеет вход Remote. Отдельные линейные стабилизаторы-отдельные для процессора, ацп, цап, аналоговой части свыходами 3,3 и 5В. К каждому подключены фильтрующие конденсаторы и ферритовые бусинки-фильтры.

Поключение АЦП/ЦАП: АЦП и ЦАП подключены по шине I2S, в которой есть следующие линии:
SCK — Тактовый сигнал битовой синхронизации
LRCLK — Тактовый сигнал фреймовой синхронизации,
DATA — данные для левого канала (когда LRCLK имеет высокий уровень) и правого канала (LRCLK имеет низкий уровень)
Для ЦАП соответственно 4 линии DATA. АЦП и ЦАП имеют разрешение 24бита, поэтому длина фрейма должна быть минимум 24 такта SCK. Так как процессор 32-битный длину фрейма выбрал 32 бита. Формат данных I2S предусматривает сдвиг данных на 1 такт относительно сигнала LRCLK, но я решил использовать режим синхронной передачи для упрощения отладки. Отладку таких цифровых интерфейсов удобно проводить с помощью китайской копии логического анализатора SALEAE. У него удобный софт с встроенным анализатором практически всех распространенных протоколов.
Для включения и настройки режимов для АЦП необходимо подать высокий и низкий уровень на входы FMT. Так же для работы АЦП/ЦАП необходим сигнал MCLK — тактовая частота для тактирования внутренних цепей АЦП/ЦАП, в том числе i2c. Долго не мог понять почему ЦАП не отвечает по шине I2c =) MCLK в 256 раз больше сигнала SCK. Тактовую частоту генерирует сам процессор, для этого у него есть отдельный генератор с ФАПЧ и выходом на внешние устройства.

Преобразователь USB->UART выполнен на базе микросхемы CP2103. Также с помощью нее осуществляется обновление программы процессора. Для сброса процессора и управления режимом загрузки (вывод BOOT0 процессора) необходимо настроить дополнительные выводы микросхемы.

SPDIF. Импульсы у него двуполярные, поэтому напрямую нельзя подавать на вход процессора. Для преобразования двуполярного в однополярный с помощью инвертора по схеме, которую рекомендует производитель чипов. Так же на входе стоит согласующий резистор 75 Ом.

Конструкция

Так как это проект экспериментальный и многое зависит от качества платы, я решил сэкономить время и заказал 2 шт на заводе Резонит. Саму плату развел с помощью лайт версии отечественной программы трассировщика TopoR, поэтому трассировка имеет некоторые особенности. Файлы платы буду в приложении. Сама плата на двух слоях и толщиной 2мм. Плату разводил с учетом корпуса, с ними у нас большие проблемы. Хотелось красивый корпус за вменяемые деньги и время. В итоге нашел на Алиэкспрессе достаточно неплохие на вид корпуса из алюминиевого профиля. В Китае можно найти разных типоразмеров. Нарезку пластиковых панелек сделали с другом на его мини чпу станочке, в сборе вышло достаточно симпатично.

Плата в корпусе

Программная часть

Программа проста и сложна одновременно. Она должна запрашивать данные у АЦП, копировать на 8 каналов, обрабатывать их и отправлять в ЦАП. Особенность обработки состоит в том, что для реализации как эквалайзера так и кроссовера используются одинаковые фильтры, только с разным набором параметров.
Обычно для кроссоверов используются 3 типа фильтров Бесселя, Батерворта и Линквица-Райли. Фильтр второго порядка состоит из одного фильтра с бесконечной импульсной характеристикой (БИХ) 2го порядка и имеет крутизну 6дб/октаву. Для использования вычислений с плавающей точкой лучше всего подходит транспонированная структура II типа:

Читайте также  Автоматический нч - видеовыход телевизора

Рассмотрим расчет на примере ФНЧ. Для расчета фильтров нам понадобятся 3 параметра: добротность Q, частота среза Fs, усиление/ослабление в дБ (dBgain).

Переводим дБ в разы
V = pow(10, fabs(dBgain) / 20.0);

Рассчитываем параметры фильтра по следующим формулам:
K = tan(PI * Fs);
PI = 3.14

norm = 1 / (1 + K / Q + K * K);
a0 = K * K * norm;
a1 = 2 * a0;
a2 = a0;
b1 = 2 * (K * K — 1) * norm;
b2 = (1 — K / Q + K * K) * norm;

Формула для расчета выходного сигнала:
y[n] = b0 * x[n] + d1;
d1 = b1 * x[n] — a1 * y[n] + d2;
d2 = b2 * x[n] — a2 * y[n];

Для создания фильтра 4 порядка используют последовательно 2 БИХ фильтра, настроенные на одинаковую частоту. Отличаются они только параметром Q (добротностью). Крутизна в данном случае уже составляет 12дб/октаву, аналогично можно продолжить далее. В таблице указаны параметры фильтров до 8го порядка (48 дБ/октава).

Структура фильтра 8го порядка (фильтры 1 структуры):

Тестирования производительности процессора показало возможность использования 25-30 фильтров на каждый канал на частоте дискретизации 48кГц или 12-15 фильтров на частоте дискретизации 96кГц при использовании библиотеки фильтров CMSIS DSP libarm_cortexM7lfsp_math.a кооторую можно скачать на сайте ARM.com. Параметры фильтров процессор хранит во внутренней энергонезависимой FLASH памяти. Исходники так же будут доступны в архиве, но так как проект немного не закончен то желающему воспроизвести мой опыт придется немного его доработать =) Проект написан в среде ECLIPSE компилятор использовался GCC 5.4.

Измерения
Для измерения качество аудиотракта использовал программу SpectraLab и аудиокарту ASUS XONAR D1 112db/DAC 112db/ADC. SNR получился не очень хороший из-за наводок 50Гц. В целом характеристики получились неплохие для таких бюджетных компонентов.

Выход ЦАП при подаче на вход АЦП синуса 1кГц

АЧХ системы без фильтров (на входе белый шум)

АЧХ системы кроссовер линквица-райли 4 порядка, частота среза 500Гц. Благодаря перестраиваемым на лету фильтрам можно задать какую угодно АЧХ.

Выводы
Пока проект не закончен, но эксперимент можно считать доказавшим свою жизнеспособность. Новые процессоры на базе ARM CORTEX M7 показали хорошие результаты по производительности. Благодаря ему стало возможным обработка звука в реальном времени по 8 каналам с хорошим качеством. Первая версия устройства больше экспериментальная для отладки программы для процессора, схемотехники и конструкции.Схема позволяет легко заменить в будущем ЦАП/АЦП на более качественные.
Процессор может использоваться не только в автомобиле, но и дома для проектирования акустических систем с биампингом/триампингом. По spdif его легко подключить к цифровому источнику. Звуком я остался доволен, но аппетит приходит во время еды, поэтому я думаю это было только начало.

Tindie

We are seeing many shipping delays, especially for international orders. Please check individual product pages for details. More info on COVID-19 and Shipping

  • Sell on Tindie
  • Log In
  • Register
  • 0 Cart
  1. Home
  2. Sound

255 WAV PCM Sound FX Generator, 8 triggers, 16bit

Designed by Bobricius in Slovakia

Buy with confidence.

Our Tindie Guarantee protects your purchase from fraud. Learn More

Thanks for your order !

SoundFX Generator

Features max 44khz, 16bit wav supply voltage 3,3V to 5V dimensions 2,5 cm x 5 cm upgradeable firmware, AVR AtTiny861 based board 16bit output created from 2 shifted 8bit PWM channels, good qualit.

Features

  • max 44khz, 16bit wav
  • supply voltage 3,3V to 5V
  • dimensions 2,5 cm x 5 cm
  • upgradeable firmware, AVR AtTiny861 based board
  • 16bit output created from 2 shifted 8bit PWM channels, good quality
  • output for amplifier
  • can driving small speaker, amplifier is recommended
  • all control signals on header active in low
  • 8 buttons for testing (optional sold without)
  • no arduino required, standalone operation
  • micro SD card push-push connector
  • sold without micro SD card
  • recommending 1000uF capacitor to supply voltage to cancel some card reading noise

Trigger Mode

Supported sound file format is RIFF/WAVE in LPCM, 8/16bit, mono/stereo and 8kHz-48kHz. Any other sound files, such as ADPCM, MP3 and AAC, must be converted into the PCM. The sound files must be named NNN.wav. The NNN is three digit number in range from 001 to 255. The sound files must be put into the root directory.

The control command is input as binary code by eight contacts (SW1-SW8) and the corresponding sound file will be played. e.g.

  • SW1 corresponds to 001.wav
  • SW4 corresponds to 008.wav
  • SW1+SW5 corresponds to 017.wav.

There are four operating modes, behavior of the sound generator on control command, can be configured by 000.txt on the root directory.

Each mode works as follows:

Mode 0 : Level trigger Plays a sound file corresponds to the input code in auto-repeat. When the input code is changed, the sound also be changed. When the input goes off(0), the audio output is stopped.

Mode 1 : Level trigger (sustained) Same as mode 0 but the file is played until end of the file and then stopped when the input goes off.

Mode 2 : Edge trigger Plays a sound file corresponds to the input code once. Any code change while a sound will be ignored.

Mode 3 : Edge trigger (re-triggerable) Same as mode 2 but the code change is accepted while the sound. To re-rtigger with the same code, change input to 0 and then input the code again.

Mode 4 : Edge trigger (stop on release) Same as mode 2 but the sound stops when the input goes off(0).

LED indicator

The LED indicates that a sound file is being played. It also flashes on any error. The number of flashes + a second of blank corresponds to the type of errors as follows:

  • Two fhash — I/O error. (hard error or file system error)
  • Three flash — The sound file is not found.
  • Four flash — Invalid sound file.

Based on Elm Chan design. Sound quality is much better than 8bit players but not CD.

No country selected, please select your country to see shipping options.

No rates are available for shipping to .

Enter your email address if you’d like to be notified when 255 WAV PCM Sound FX Generator, 8 triggers, 16bit can be shipped to you:

Thanks! We’ll let you know when the seller adds shipping rates for your country.

Введение

5. Добавляем в sound.c свои мелодии и прописываем названия мелодий в массив melody[].

Файлы

Примеры использования звукового модуля вы можете скачать по ссылкам ниже. Схему рисовать не стал, потому что там все просто. Пьезоизлучатель подключен к выводу PB0, кнопка запуска мелодий подключена к выводу PD3. В проектах определено 4 мелодии. Нажатие на кнопку запускает каждый раз новую мелодию. Используется микроконтроллер atmega8535. Изначально хотел заморочиться на проект с четырьмя кнопками — PLAY, STOP, PAUSE и NEXT, но потом подумал, что это лишнее.

Читайте также  Скрытая проводка в квартире

PS: Модуль не проходил расширенное тестирование и предоставляется “как есть“. Если есть какие-то рациональные предложения — давайте его доработаем.

Related items

  • Библиотека для опроса кнопок
  • Работа с SD картой. Воспроизведение wav файла. Ч3
  • Работа с SD картой. Библиотека Petit FatFs. Ч2
  • Работа с SD картой. Подключение к микроконтроллеру. Ч1
  • AVR315: Использование TWI модуля в качестве ведущего I2C устройства

Comments

Pashgan молодца.
Так держать!
Вот еще пара мелодий:
Code:
Griboedov[] = <
16, 2,
n8,b2, n8,c3, n8,b2, n8,g2, n8,e2, n8,b2, n8,g2, n8,b2, n8,b1, n8,b2, n8,g2, n8,b2,
n8,a2, n8,b2, n8,a2, n8,xf2, n8,xd2, n8,a2, n8,xf2, n8,a2, n8,b1, n8,a2, n8,xf2, n8,a2,
n8,g2, n8,a2, n8,g2, n8,e2, n8,b1, n8,g2, n8,xf2, n8,g2, n8,xf2, n8,c2, n8,a1, n8,xf2,
n8,e2, n8,xf2, n8,e2, n8,xc2, n8,g1, n8,e2, n8,xd2, n8,b1, n8,xa2, n8,b1, n8,b2, n8,b1,

n8,b2, n8,c3, n8,b2, n8,g2, n8,e2, n8,b2, n8,g2, n8,b2, n8,b1, n8,b2, n8,g2, n8,b2,
n8,a2, n8,b2, n8,a2, n8,xf2, n8,xd2, n8,a2, n8,xf2, n8,a2, n8,b1, n8,a2, n8,xf2, n8,a2,
n8,g2, n8,a2, n8,g2, n8,e2, n8,b1, n8,g2, n8,xf2, n8,g2, n8,xf2, n8,c2, n8,a1, n8,xf2,
n8,xd2, n8,e2, n8,xd2, n8,b1, n8,xf1, n8,xd2, n2,e2, n4,p,
0
>;

unsigned int Augustin[] = <
16,2,
n4,g1, n8,g1, n8,a1, n8,g1, n8,f1, n4,e1, n4,c1, n4,c1, n4,d1, n4,g0, n4,g0, n4,e1, n4,c1, n4,c1,
n4,g1, n8,g1, n8,a1, n8,g1, n8,f1, n4,e1, n4,c1, n4,c1, n4,d1, n4,g0, n4,g0, n2,c1, n2,p,
n4,d1, n4,g0, n4,g0, n4,e1, n4,c1, n4,c1, n4,d1, n4,g0, n4,g0, n4,e1, n4,c1, n4,c1,
n4,g1, n8,g1, n8,a1, n8,g1, n8,f1, n4,e1, n4,c1, n4,c1, n4,d1, n4,g0, n4,g0, n2,c1, n2,p,
0
>;

/* Я проанализировал «глазками» работу программы и у меня следующие замечания

1) Самое главное — в функции SOUND_tone оператор tone = toneNote; надо заменить на оператор tone += toneNote; Первый полупериод выходного сигнала генерируется правильно, например 2,5 периода работы таймера, пауза и все последующие импульсы будут генерироваться длительностью 3 периода.

2) Второе — разрешать прерывание по компаратору в модулях SOUND_Com и SOUND_PlaySong преждевременно и вредно, лучше разрешение переместить в модуль SOUND_Duration и поставить его вместо команды

Как делать паузы между нотами?

На баскоме есть куча мелодий, переведенных с сименса. Пробовал такой макрос, чуш какая то получается.
#define C1 fn(262)
#define Cis1 fn(277)
#define D1 fn(294)
#define Dis1 fn(311)
#define E1 fn(330)
#define F1 fn(349)
#define Fis1 fn(370)
#define G1 fn(392)
#define Gis1 fn(415)
#define A1 fn(440)
#define Ais1 fn(466)
#define H1 fn(494)

#define C2 fn(523)
#define Cis2 fn(554)
#define D2 fn(587)
#define Dis2 fn(622)
#define E2 fn(659)
#define F2 fn(698)
#define Fis2 fn(740)
#define G2 fn(784)
#define Gis2 fn(831)
#define A2 fn(880)
#define Ais2 fn(932)
#define H2 fn(988)

#define C3 fn(1047)
#define Cis3 fn(1109)
#define D3 fn(1175)
#define Dis3 fn(1245)
#define E3 fn(1319)
#define F3 fn(1397)
#define Fis3 fn(1480)
#define G3 fn(1568)
#define Gis3 fn(1661)
#define A3 fn(1720)
#define Ais3 fn(1865)
#define H3 fn(1976)

Многоканальный генератор сигналов звуковых частот v.5.30

Скачать бесплатно генератор сигналов звуковых частот v.5.30

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

Предназначен для настройки и измерения параметров электронно-акустической аппаратуры. Работает с 16- , 24- и 32-битными звуковыми картами с частотой дискретизации ( FS ) до 400 кГц. WDM, Kernel Streaming и WASAPI технологии поддерживаются. Синтезирует все сигналы в реальном времени.

  • Синусоидальная форма выходного сигнала;
  • Синусоидальный сигнал качающейся частоты с прямой и обратной зависимостью частоты от времени, в линейном или логарифмическом масштабе времени;
  • Восемь независимых синусоидальных компонент выходного сигнала с раздельной установкой частоты, начальной фазы и амплитуды плюс шумовая составляющая;
  • Радиоимпульс, фронт и спад которого синхронизированы с синусоидальной несущей;
  • Фазовая модуляция синусоидального сигнала;
  • Амплитудная модуляция синусоидального сигнала;
  • Прямоугольный импульс с раздельно регулируемыми длительностью и периодом.Генератор шума:

Добавление к выходному сигналу белого шума (dithering) с треугольным или равномерным распределением по амплитуде, и амплитудой равной, соответственно, 1 или 1/2 младшего значащего разряда (МЗР) ЦАП. Белый шум с равномерным, треугольным или нормальным распределением по амплитуде и регулируемым уровнем. Розовый шум со спектральной плотностью вида 1/f.

Броуновский шум со спектральной плотностью вида 1/f2.

Дополнительные программные возможности:

  • компенсация частотной погрешности тактового генератора ЦАП;
  • запись синтезированного сигнала на диск для последующего воспроизведения;
  • циклическое воспроизведение волнового файла вместо непосредственного синтеза;
  • полутоновый шаг установки частоты в соответствии с равномерно темперированным музыкальным строем;
  • округление частоты до когерентной быстрому преобразованию Фурье в анализаторе спектра;
  • синхронизация запуска и остановки генерации, а также согласование формата данных при совместной работе с компьютерным анализатором спектра;
  • внешнее (со стороны других программ) управление основными функциями генератора и параметрами синтезируемого сигнала;
  • сохранение всех без исключения настроек текущего сеанса работы, включая редактируемый список предустановленных сигналов, в файле на жестком диске для их последующего использования.

Основные параметры программного генератора в режиме синтеза синусоидальных сигналов :

максимальное число выходных каналов 8 диапазон генерируемых частот 10-3 Гц … Fs / 2 относительный шаг установки частоты 10-7…10-6 диапазон регулировки уровня (в 24-битном режиме) 0…-145 дБ шаг установки уровня (в диапазоне 0…-100 дБ) 0.001 дБ диапазон регулировки начальной фазы ±360° шаг установки начальной фазы 0.001° период качания частоты 0.001…9999 с гармонические и интермодуляционные искажения в 24-битном режиме и без учета нелинейности ЦАП –145 дБ.

Коэффициент нелинейных и интермодуляционных искажений, точность, стабильность и диапазон частот выходного сигнала ограничены только типом используемого ЦАП Демонстрационная версия многоканального генератора звуковой качающейся частоты полностью функциональна, но время звучания ограничено 15 секундами после каждого нажатия кнопки «Start». Регистрация многоканального генератора звуковой качающейся частоты снимает демонстрационное ограничение. Подробности в файлах помощи Help (F1) -> Регистрация.

Сайт разработчиков:shmelyoff.nm.ru

Размер: 550 кб

Интерфейс: Русский