MIDI плейер для AVR

Вопросы и замечания по статьям и схемам, представленным на нашем сайте

При поддержке РадиоКОТструктор.ру


Аватара пользователя
hax
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Вт окт 25, 2011 17:39:42
Откуда: Киев
Контактная информация:

Re: MIDI плейер для AVR

Сообщение hax »

Статью на Радиокоте Max восстановил,

http://radiokot.ru/circuit/digital/game/51/

К сожалению, ссылку в начале темы я исправить не могу.
Реклама
Аватара пользователя
nHz
Потрогал лапой паяльник
Сообщения: 325
Зарегистрирован: Пн сен 15, 2014 15:19:01
Откуда: Екатеринбург

Re: MIDI плейер для AVR

Сообщение nHz »

Ну вот и отлично, не хотелось бы потерять столь грандиозный труд. Хоть статья и дублирована на другом ресурсе, все же мне привычнее её видеть здесь, а то мало ли что.
Реклама
Аватара пользователя
AlekseyEnergo
Модератор
Сообщения: 2117
Зарегистрирован: Пт янв 11, 2013 19:19:26
Откуда: Санкт-Петербург

Re: MIDI плейер для AVR

Сообщение AlekseyEnergo »

hax писал(а):Статью на Радиокоте Max восстановил,

http://radiokot.ru/circuit/digital/game/51/

К сожалению, ссылку в начале темы я исправить не могу.
Поправил. В будущем можно пользоваться кнопкой "!".
=========
Правила Форума ЗДЕСЬ _____ Правила раздела БАЗАР ЗДЕСЬ _____ Если вы продаете, прочтите ЗДЕСЬ

Редко появляюсь. Если вопрос не личного характера пользуйтесь кнопкой "!".
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: MIDI плейер для AVR

Сообщение uk8amk »

Спасибо автору за работу. Особенно за вменяемый инструмент конвертации миди-шек. Раньше на перевод мелодии в исходник уходили часы, сейчас все получается в один щелчек.
Себе приспособил одноголосный вариант с прямоугольной волной. Для счёта тиков и генерации звука использовал разные таймеры и пришлось подправить код под это дело.

Касаемо полифонического синтеза. Для проекта чуть сложнее музыкальной шкатулки уже есть смысл самплы вычислять не в прерывании, а организовать кольцевой буфер, который будет заполняться в фоновом режиме. Хоть это и не сэкономит память, зато позволит более грамотно распределить вычислительные ресурсы.
Реклама
Эиком - электронные компоненты и радиодетали
alex68md
Грызет канифоль
Сообщения: 275
Зарегистрирован: Сб янв 03, 2015 21:03:24

Re: MIDI плейер для AVR

Сообщение alex68md »

За шурика 5 балов! :)))))

А скажите то что чип разогнан до 24Мгц на сколько батарей хватает ?
Реклама
Аватара пользователя
hax
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Вт окт 25, 2011 17:39:42
Откуда: Киев
Контактная информация:

Re: MIDI плейер для AVR

Сообщение hax »

Я не измерял ток потребления схемы. Думаю, что на сутки непрерывной работы батареек хватит. Этого достаточно, чтобы наиграться и забыть.
Реклама
alex68md
Грызет канифоль
Сообщения: 275
Зарегистрирован: Сб янв 03, 2015 21:03:24

Re: MIDI плейер для AVR

Сообщение alex68md »

спасибо

а объясните плиз простым языком что нам дает разгон на какието 2-4Мгц ?

и второе если я не буду разгонять то мелодии со второго видео (где сама шкатулка) я смогу без проблем воспроизвести на не разогнаном проце ?
Аватара пользователя
hax
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Вт окт 25, 2011 17:39:42
Откуда: Киев
Контактная информация:

Re: MIDI плейер для AVR

Сообщение hax »

Разгон позволяет немного увеличить Sampling Rate, то есть получить чуть выше качество.
Поскольку разгон работает без проблем - не вижу причин, чтобы им не воспользоваться. Мы не котлом управляем, даже если зависнет - ничего страшного.
Кварц на 27Мгц выпаиваем из убитой видекарты :)

Если не разгонять, мелодия будет воспроизводиться замедленно, потому что прошивка рассчитана на 27Мгц.
Если вы будете вставлять свои мелодии - просто подбирайте настройки и Samplig Rate, при котором всё работает.
alex68md
Грызет канифоль
Сообщения: 275
Зарегистрирован: Сб янв 03, 2015 21:03:24

Re: MIDI плейер для AVR

Сообщение alex68md »

про Мгерцы спрашивал тк собираюсь сварганить максимально автономную конструкцию и чем меньше частота тем меньше потребление АКБ как я понимаю, ведь при 8мгц батареи на дольше хватит или нет ?

про сэмплинг понял

но скажите пожалуйста
для такой мелодии как из второго видео (где сама шкатулка) сколько достаточно минимально МГЦ чтоб на слух также звучала как на видео ?
там просто простая мелодия мне кажется много её не надо. но могу ошибаться.
Аватара пользователя
hax
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Вт окт 25, 2011 17:39:42
Откуда: Киев
Контактная информация:

Re: MIDI плейер для AVR

Сообщение hax »

На видео - 27МГц.
Меньше чем 16МГц смысла делать нет - будет низкое качество, неприятно на слух.
Аватара пользователя
nHz
Потрогал лапой паяльник
Сообщения: 325
Зарегистрирован: Пн сен 15, 2014 15:19:01
Откуда: Екатеринбург

Re: MIDI плейер для AVR

Сообщение nHz »

alex68md писал(а):, ведь при 8мгц батареи на дольше хватит или нет
Можете посмотреть мою репликацию этой схемы. Особенно исходный код. Мне удалось получить нормальное качество при 16MHz, даже на 8 можно слушать. Основная идея - временнОе микширование, а не простое суммирование с нормированием. На слух, конечно заметно разницу, но не сильно, зато громкость значительно подрастает.
Спойлерyou gotta do what you gotta do
alex68md
Грызет канифоль
Сообщения: 275
Зарегистрирован: Сб янв 03, 2015 21:03:24

Re: MIDI плейер для AVR

Сообщение alex68md »

а где посматреть вашу репликацию?
Аватара пользователя
nHz
Потрогал лапой паяльник
Сообщения: 325
Зарегистрирован: Пн сен 15, 2014 15:19:01
Откуда: Екатеринбург

Re: MIDI плейер для AVR

Сообщение nHz »

Можно через профиль или вот моя статья.
Спойлерyou gotta do what you gotta do
Pasha
Родился
Сообщения: 8
Зарегистрирован: Пн мар 30, 2009 00:36:53
Откуда: Запорожье
Контактная информация:

Re: MIDI плейер для AVR

Сообщение Pasha »

Подскажите пожалуйста принцып кодировки без сжатия миди редактора. Беру миди файл который последовательно играет A2, A3, A4, A2+A3, A2+A3+A4
Выглядит это на выходе как:

Код: Выделить всё

#include "melody.h"

//Player frequency=44100
//Player minimum channels count =3
const flash TPlayerStateChange s_melody_events[11] = {
     { 33, 272 }, //33 это А2 //272 похоже на время звучания ноты умноженное на 2 в миллисекундах
     { 45, 9 }, //45 это А3 //9 это наверное канал
     { 0, 272 }, // что означает 0 не понимаю. 272- время
     { 57, 8 }, //57 это А4 
     { 0, 273 },
     { 33, 9 }, //А2
     { 45, 10 }, //А3
     { 0, 272 },
     { 57, 8 }, //А4
     { 0, 9 },
     { 0, 0 }
  };

const flash TMelody s_melody = {
    s_melody_events
  };
На выходе следующий меандр:
СпойлерИзображение
Вложения
Осциллограмма A2 A3 A4 A1+A3 A1+A2+A3+A4.jpg
Файл
(131 КБ) 822 скачивания
Аватара пользователя
hax
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Вт окт 25, 2011 17:39:42
Откуда: Киев
Контактная информация:

Re: MIDI плейер для AVR

Сообщение hax »

Это последовательность структур:

Код: Выделить всё

typedef struct 
{
    //highest bit is highest for channel index        
    uint8_t     m_noteNumber;
    
    ///15-3 bits - Delta value, 2,1,0 bits - channel index  
    uint16_t    m_delta;          
} TPlayerStateChange;
Декодирование:

Код: Выделить всё

    delta = s_playerState.m_pMelody->m_delta;
    noteNumber = s_playerState.m_pMelody->m_noteNumber;
    
    channelIndex = delta & 0x7;
    delta >>= 3;
    
    if ( delta == 0 )
    {
        #asm("cli")
        s_playerState.m_pMelody = NULL;
        Player_Finished();
        return;
    }
    
    channelIndex |= ( noteNumber >> (7 - 3 ) ) & 8;
    
    noteNumber &= 0x7f;
notenumber = 0 - тишина
notenumber = 1 - белый шум
иначе номер Midi ноты

delta - количество тиков до обработки следующего события, уменьшается с частотой 255Hz.
BashOrgRu
Прорезались зубы
Сообщения: 200
Зарегистрирован: Вт окт 13, 2009 23:33:37

Re: MIDI плейер для AVR

Сообщение BashOrgRu »

Мужики помогите вложите проект для CodeVisionAVR те примеры проектов, в моем случае для atmega8 не корректно открываются ссылаясь на #include "..\common\hxMidiPlayer.h" и ..\common\hxMidiPlayer.c" где библиотеку взять или что сделать, я чайник и не понимаю, а мелодию сменить хочется :cry:. УУфф папка "common" в проекте то есть, во затупил, уже слепил одну))
Аватара пользователя
XELFAER
Родился
Сообщения: 1
Зарегистрирован: Вс фев 26, 2017 23:47:33

Re: MIDI плейер для AVR

Сообщение XELFAER »

Есть несколько вопросов о данном устройстве.
1) Какие верные фьюзы для проекта на Atmega8? Я ставил hfuse:0xd9 и lfuse:0xff с кварцем 24 MHz, схема отказывается стартовать, а вот с этими фьюзами но кварцем 12 MHz схема стартует и играет, правда очень тихо (не ставил пока усилитель). В чем может быть проблема?
2) Если менять кварц на отличный от указанный в статье: к примеру я беру на 24 MHz, в коде проекта что то нужно менять или достаточно изменить в параметрах проекта используемый кварц и просто пересобрать проект?
3) Какие усилители можно использовать для усиления звука в данном проекте, есть ли какие то ограничения? Подойдет ли данный усилитель?
proektor
Родился
Сообщения: 2
Зарегистрирован: Вт мар 14, 2017 11:59:43

Re: MIDI плейер для AVR

Сообщение proektor »

Всем привет. Помогите, пожалуйста, чайнику! Есть 2 вопроса. Я загружаю hex из папки ATMega8Example в мегу без кварца на внутренних 8мГц. У меня все играет, но медленно. Когда я открываю проект из ATMega8Example в CodeVisionAVR и вставляю свою мелодию (все как в видео), затем делаю свой hex и заливаю точно так же, у меня еле слышный писк из динамиков. Не могу понять, что не так, а очень хочется попробовать зашить свою мелодию. Второй вопрос. Как правильно подключить кварц? Можно ли это делать без конденсаторов?

ps Прошиваю с помощью arduino и sinaprog.
Alkul
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Re: MIDI плейер для AVR

Сообщение Alkul »

proektor писал(а):Как правильно подключить кварц? Можно ли это делать без конденсаторов?
А даташиты нынче немодно читать? Скачайта даташит на мегу8, там прямо нарисовано, как подключать кварц. И нет, без конденсаторов нельзя.
proektor
Родился
Сообщения: 2
Зарегистрирован: Вт мар 14, 2017 11:59:43

Re: MIDI плейер для AVR

Сообщение proektor »

А что касательно прошивки? Не могу понять, что не так. Hex из примера заливается без кварца и играет медленно. Мой hex пищит.
Ответить

Вернуться в «Статьи»