Страница 4 из 6

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

Добавлено: Вс ноя 30, 2014 00:26:55
hax
Статью на Радиокоте Max восстановил,

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

К сожалению, ссылку в начале темы я исправить не могу.

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

Добавлено: Вс ноя 30, 2014 10:53:52
nHz
Ну вот и отлично, не хотелось бы потерять столь грандиозный труд. Хоть статья и дублирована на другом ресурсе, все же мне привычнее её видеть здесь, а то мало ли что.

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

Добавлено: Вс ноя 30, 2014 23:59:27
AlekseyEnergo
hax писал(а):Статью на Радиокоте Max восстановил,

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

К сожалению, ссылку в начале темы я исправить не могу.
Поправил. В будущем можно пользоваться кнопкой "!".

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

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

Касаемо полифонического синтеза. Для проекта чуть сложнее музыкальной шкатулки уже есть смысл самплы вычислять не в прерывании, а организовать кольцевой буфер, который будет заполняться в фоновом режиме. Хоть это и не сэкономит память, зато позволит более грамотно распределить вычислительные ресурсы.

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

Добавлено: Ср мар 09, 2016 14:31:54
alex68md
За шурика 5 балов! :)))))

А скажите то что чип разогнан до 24Мгц на сколько батарей хватает ?

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

Добавлено: Пн мар 14, 2016 17:07:22
hax
Я не измерял ток потребления схемы. Думаю, что на сутки непрерывной работы батареек хватит. Этого достаточно, чтобы наиграться и забыть.

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

Добавлено: Сб апр 09, 2016 17:44:05
alex68md
спасибо

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

и второе если я не буду разгонять то мелодии со второго видео (где сама шкатулка) я смогу без проблем воспроизвести на не разогнаном проце ?

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

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

Если не разгонять, мелодия будет воспроизводиться замедленно, потому что прошивка рассчитана на 27Мгц.
Если вы будете вставлять свои мелодии - просто подбирайте настройки и Samplig Rate, при котором всё работает.

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

Добавлено: Вс апр 10, 2016 07:17:23
alex68md
про Мгерцы спрашивал тк собираюсь сварганить максимально автономную конструкцию и чем меньше частота тем меньше потребление АКБ как я понимаю, ведь при 8мгц батареи на дольше хватит или нет ?

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

но скажите пожалуйста
для такой мелодии как из второго видео (где сама шкатулка) сколько достаточно минимально МГЦ чтоб на слух также звучала как на видео ?
там просто простая мелодия мне кажется много её не надо. но могу ошибаться.

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

Добавлено: Вс апр 10, 2016 09:07:57
hax
На видео - 27МГц.
Меньше чем 16МГц смысла делать нет - будет низкое качество, неприятно на слух.

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

Добавлено: Вт апр 12, 2016 17:43:03
nHz
alex68md писал(а):, ведь при 8мгц батареи на дольше хватит или нет
Можете посмотреть мою репликацию этой схемы. Особенно исходный код. Мне удалось получить нормальное качество при 16MHz, даже на 8 можно слушать. Основная идея - временнОе микширование, а не простое суммирование с нормированием. На слух, конечно заметно разницу, но не сильно, зато громкость значительно подрастает.

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

Добавлено: Вс апр 17, 2016 09:38:12
alex68md
а где посматреть вашу репликацию?

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

Добавлено: Вс апр 17, 2016 09:44:05
nHz
Можно через профиль или вот моя статья.

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

Добавлено: Вс янв 08, 2017 14:34:26
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
  };
На выходе следующий меандр:
СпойлерИзображение

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

Добавлено: Вс янв 08, 2017 21:55:30
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.

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

Добавлено: Пт фев 24, 2017 12:52:49
BashOrgRu
Мужики помогите вложите проект для CodeVisionAVR те примеры проектов, в моем случае для atmega8 не корректно открываются ссылаясь на #include "..\common\hxMidiPlayer.h" и ..\common\hxMidiPlayer.c" где библиотеку взять или что сделать, я чайник и не понимаю, а мелодию сменить хочется :cry:. УУфф папка "common" в проекте то есть, во затупил, уже слепил одну))

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

Добавлено: Пн фев 27, 2017 00:05:31
XELFAER
Есть несколько вопросов о данном устройстве.
1) Какие верные фьюзы для проекта на Atmega8? Я ставил hfuse:0xd9 и lfuse:0xff с кварцем 24 MHz, схема отказывается стартовать, а вот с этими фьюзами но кварцем 12 MHz схема стартует и играет, правда очень тихо (не ставил пока усилитель). В чем может быть проблема?
2) Если менять кварц на отличный от указанный в статье: к примеру я беру на 24 MHz, в коде проекта что то нужно менять или достаточно изменить в параметрах проекта используемый кварц и просто пересобрать проект?
3) Какие усилители можно использовать для усиления звука в данном проекте, есть ли какие то ограничения? Подойдет ли данный усилитель?

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

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

ps Прошиваю с помощью arduino и sinaprog.

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

Добавлено: Ср мар 15, 2017 17:19:39
Alkul
proektor писал(а):Как правильно подключить кварц? Можно ли это делать без конденсаторов?
А даташиты нынче немодно читать? Скачайта даташит на мегу8, там прямо нарисовано, как подключать кварц. И нет, без конденсаторов нельзя.

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

Добавлено: Чт мар 16, 2017 22:16:35
proektor
А что касательно прошивки? Не могу понять, что не так. Hex из примера заливается без кварца и играет медленно. Мой hex пищит.