Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Ответить

Нотная запись для микроконтроллера

Вс янв 09, 2022 15:30:17

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

сделал макросы для записи нот вида no(t), где
n - общепринятое буквенное обозначение ноты
о - номер октавы от 0 до 4
t - длительность ноты в долях "целой" (знаменатель дроби).
то есть, например, ДО третьей октавы длительностью 1/16 будет записано как C3(16).
если нота с диезом, то к букве добавляется s, например Cs3(16)
для паузы без звука сделал макрос R(t) - длительность этой паузы так же кодируется, как и для нот.

буквенные обозначения нот взял из интернету, вроде всё правильно содрал... только обозначение диезов-бемолей упростил, чтобы писать меньше.

теперь главное: где бы взять "партитуры" (для игры одним пальцем, поскольку у меня способ генерации мелодии в 1 голос) в подходящей записи? всё, что нахожу в интернете, либо "цифрами", либо настоящими нотами на нотном стане... перевести этот формат в мой мне не под силу...
где-то накопал "имперский марш" из звездных войн, но, по-моему, это лажа какая-то: F3(16), F3(16), F3(16), As3(4), F4(4), Ds4(16), D4(16), C4(16), As4(4), F4(4), Ds4(16), D4(16), C4(16), As4(4), F4(4), Ds4(16), D4(16), Ds4(16), C4(4), R(4)
и это всё... :(

может, кто покажет сайт с мелодиями, ноты которых записаны буквами (пусть чуть иначе - не беда)?
или вдруг у кого музыкально одаренного вообще возникнет желание написать в "моём формате" несколько мелодий для меня?
моя благодарность не будет иметь границ в разумных пределах! :)))

помогите, а?

Re: Нотная запись для микроконтроллера

Вс янв 09, 2022 16:52:26

Так ведь обучиться нотной записи - совсем плёвое дело, можно буквально за один вечер не торопясь. Я даже готов оказать посильную помощь в обучении, если надо. А дальше - ищете нотную запись заинтересовавшей мелодии и формальными правилами переводите её в запись буквенную. Ну и - пожаллста, могу и сам расписать, если, конечно, эти мелодии мне знакомы или есть их нотная запись, заказывайте.
PS. Для диеза есть устоявшееся обозначение: #. Для бемоля тоже есть, маленькая латинская буква b, но можно обойтись и без бемолей.
PPS. Тьфу, зарёкся же я иметь дела с активными мявщиками. Ну да ладно, предложение остаётся в силе. :))

Re: Нотная запись для микроконтроллера

Вс янв 09, 2022 18:58:37

mickbell писал(а):Для диеза есть устоявшееся обозначение: #
решеточку никак нельзя применить в имени макроса.
что касается бемоля, то я руководствовался вот этим, но для экономии количества вводимых букв решил сократить is до s
mickbell писал(а):могу и сам расписать, если, конечно, эти мелодии мне знакомы или есть их нотная запись, заказывайте.
спасибо.
Вот отсюда: https://musicnotes.info/noty-izvestnyh- ... rtepiano-0
Три белых коня
Дуэт Кроля и Принцессы
В гостях у сказки
День Победы
Вместе весело шагать
Катюша
Генералы песчаных карьеров
Я готов целовать песок

хотя бы парочку из этого списка...

Re: Нотная запись для микроконтроллера

Вс янв 09, 2022 19:49:31

Есть куча нотных редакторов, можно таскать кружочки в нужное место и пририсовывать к ним нужные хвостики, не зная нотной грамоты, а тупо срисовывая нотную картинку, тут же контролировать результат и если устроит, конвертировать его в MIDI. Формат MIDI устроит?

Re: Нотная запись для микроконтроллера

Вс янв 09, 2022 20:15:06

Нет, миди не устроит. У меня все гораздо проще...

Re: Нотная запись для микроконтроллера

Вс янв 09, 2022 20:27:14

Тот сайт - нафиг он нужен, нет там нот. А в кружочках длительности не прописаны. Так что писал я по памяти. Пробуйте, что получилось. И синтаксис проверьте, так ли всё - я по-своему писал, с диезами, потом автоподстановкой менял, могло что-то и накосячиться. Желательно куда-то выложить ссылку на получившийся mp3, чтобы я сам услышал. Наверняка что-то поменять придётся. Надеюсь, между двумя соседними нотами пауза предусмотрена.
Три белых коня.
Fs3(8),
B3(4),Fs3(8),B3(4),Fs3(8),E3(8),D3(8),Cs3(4),D3(8),Cs3(4),B2(4),P(8),
P(8),A3(8),A3(8),A3(8),A3(8),B3(8),A3(8),G3(8),Fs3(1),
Fs3(4),E3(8),Fs3(4),E3(8),E3(8),E3(8),Fs3(4),E3(8),D4(4),Cs4(4),P(8),
E3(4),D3(8),E3(4),D3(8),D3(8),D3(8),E3(4),D3(8),Cs4(4),B4(4),P(8),
P(8),Cs3(8),Cs3(8),Cs3(8),Cs3(8),Cs3(8),Cs3(8),Cs3(8),D3(4),Cs3(4),C3(4),Cs3(4),
Fs3(1),P(4),D4(2),Cs4(4),
Cs4(4),B3(8),Cs4(8),D4(8),D4(4),Cs4(8),Cs4(4),B3(8),Cs4(8),D4(4),P(8),D4(8),
Cs4(4),B3(8),A3(8),G3(4),Fs3(8),E3(8),Fs3(8),A3(2),P(8),A3(4),
A3(4),G3(8),E3(8),Cs3(8),G(4),G3(8),G3(4),Fs3(8),B3(8),D4(4),P(8),D4(8),
Cs4(4),Gs3(8),B3(8),As3(4),B3(8),Cs3(8),B3(2),P(4),P(8)
А там посмотрим. Может быть, кто-то ещё на бедность подаст. Я даже знаю, кто может. Вот только захочет ли... :)))

Добавлено after 7 minutes 36 seconds:
PS. P замените на R, я забыл это проделать. Кстати, почему R? P понятнее.

Добавлено after 3 minutes 50 seconds:
тут же контролировать результат и если устроит
А он сам-то поймёт, устроит оно его или нет? У меня на работе есть китайская жестянка из-под чая с шарманкой, исполняющей какую-то мелодию, так там они в некоторых местах на полтона накосячили, пришлось бокорезами шпеньки с барабана выкусывать, чтобы не вытошнило. Это ж надо - в до мажоре прямо в мелодии вместо до впендюривать до-диез! :kill: А иные и не слышат.
Последний раз редактировалось mickbell Вс янв 09, 2022 22:12:34, всего редактировалось 1 раз.

Re: Нотная запись для микроконтроллера

Вс янв 09, 2022 20:30:39

Помню на древнючей мотороле был такой конструктор музыки. И ведь делал рингтоны! :)

Re: Нотная запись для микроконтроллера

Вс янв 09, 2022 20:32:08

mickbell, спасибо! +1 этому господину (моя сама не моги, QIII...)

Re: Нотная запись для микроконтроллера

Вс янв 09, 2022 21:40:14

Генералы песчаных карьеров
(по Кортневу в Авторадио, чуть подкорректировано по моему разумению)
D1(8),F1(8),G1(8),
A1(8),G1(8),F1(8),E1(8),D1(4),A1(8),F1(8),G1(2),P(8),F1(8),A1(8),G1(8),
F1(2),P(8),E1(8),G1(8),F1(8),E1(2),P(8),D1(8),F1(8),G1(8),
A1(8),G1(8),F1(8),E1(8),D1(4),D2(4),C2(2),P(8),A1(8),D2(8),C2(8),
Bb1(2),P(8),G1(8),C2(8),Bb1(8),A1(2),P(8),D1(8),F1(8),G1(8),
A1(8),G1(8),F1(8),E1(8),D1(4),A1(8),F1(8),G1(2),P(8),F1(8),A1(8),G1(8),
F1(8),E1(8),G1(8),F1(8),E1(4),F1(4),D1(2),P(8)

При необходимости Bb заменить на As (A#), но сам я этим святотатством заниматься не буду.

Добавлено after 17 minutes 42 seconds:
Дуэт Кроля и Принцессы
Кролика? :)))
Fs1(8),Fs1(8),
B1(8),B1(8),B1(8),Cs2(8),D2(4),D2(8),E2(8),D2(4),Cs2(4),B1(4),Fs1(8),Fs1(8),
B1(8),B1(8),B1(8),Cs2(8),D2(4),D2(8),E2(8),Fs2(4),E2(4),D2(4),Fs2(8),Fs2(8),
E2(8),D2(8),Cs2(8),B1(8),As1(4),B1(8),Cs2(8),Fs1(1),
G3(8),P(8),E4(8),P(8),Fs3(8),P(8),D4(8),P(8),E3(8),P(8),As3(8),P(8),B3(8),P(8)

Добавлено after 3 minutes 23 seconds:
Что там из списка осталось...

В гостях у сказки - ХЗ, что это за.
День Победы, Вместе весело шагать - в рамках, заданных описанными правилами, эти не прописать. Требуется наличие точек, а они не заявлены. (Точка увеличивает длительность ноты наполовину.)
Катюша - вот это я точно писать не буду, подзаебала меня эта Катька.

Re: Нотная запись для микроконтроллера

Вс янв 09, 2022 21:56:42

В гостях у сказки - ну как же! "Шапку невидимку на пипиську надену..." :))

Re: Нотная запись для микроконтроллера

Вс янв 09, 2022 22:15:29

Понятно. Тоже нужны точки.

Добавлено after 8 minutes 41 second:
"Писюн, по которому ты ходила" - тоже точек требует.

Re: Нотная запись для микроконтроллера

Пн янв 10, 2022 09:07:28

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

Добавлено after 1 hour 5 minutes 14 seconds:
да, кстати, по поводу точек... я не понимаю, как он по-музыке, но в моём макросе можно в качестве знаменателя ставить любые числа от 1 до 16. т.е. можно писать C3(12) или C3(5)...
как оно будет звучать, не могу сказать, т.к. не пробовал. но писать можно :))

Re: Нотная запись для микроконтроллера

Пн янв 10, 2022 10:35:59

1. Насчёт обратной связи - мне не критично, могу подождать. С часами понятно, я и сам люблю часики сделать, конечно же, с коррекцией хода. Другое дело, что долго там проверять нечего: если только у вас там не термостатированный генератор, а обычный кварц, то охуенной точности, чтобы надо было тестировать несколько суток, вы не получите, одних суток выше крыши для этого. Ну ещё сутки для проверки.
2. А чего тянуть-то? Я пописал :))) в охотку, не напрягаясь, плёвое же дело.
3. О точках. Скажем, восьмая с точкой - это 3/16, или 1/5.333333333. 1/5 никак не пойдёт, это будет ломать ритм, что неприемлемо абсолютно. Можете ввести точку? Если макрос не позволяет, можно заменить её, например, на символ нижнего подчёркивания.
Кстати, о стандарте формата нотной записи. Помнится, в каком-то древнем васике, кажется, QuickBasic, оный формат был как-то стандартизирован и, конечно, описан, я сам им пользовался. Советую найти, ознакомиться и написать перекодировщик из него в свои макросы - чтобы не плодить зоопарк лисапедов.

Re: Нотная запись для микроконтроллера

Пн янв 10, 2022 10:44:57

Да, лисапедов действительно зоопарк, у меня тоже есть :) но у меня неудачный, фальшивит на "маленькой ёлочке холодно зимой" безбожно... Я вот подожду ARV, когда он всё сделает, опишет и лениво повторю :))

Re: Нотная запись для микроконтроллера

Пн янв 10, 2022 11:01:32

Martian писал(а):Другое дело, что долго там проверять нечего
есть чего :)) корректирующая константа поменялась - надо понять, как изменился счет. т.е. хотя бы 10 часов подождать. поскольку я точное количество секунд не считаю, то корректирующая константа получается "на глазок", так что приходится делать несколько итераций...
mickbell писал(а):1/5.333333333. 1/5 никак не пойдёт
ну... как на мой слух, так пойдет. я и частоты нот подбирал в пределах погрешности не более 5%... благодаря резонансам пищалки ноты получаются разной громкости... если еще и длительность будет хромать, мне кажется, это уже ситуацию не ухудшит :)))
mickbell писал(а):Можете ввести точку?
увы... у меня отсчетом длительности занимается "часовой" таймер TIMER2, настроенный на прерывания 16 раз в секунду, поэтому меньше длительность, а так кратность её изменения другой сделать нельзя.
mickbell писал(а):оный формат был как-то стандартизирован
ну, этот период я благополучно миновал... и вряд ли можно считать стандартом сегодня то, что уже лет 30 как вышло из обихода. да и лень переделывать, если честно :)))
Martian писал(а):всё сделает, опишет
боюсь, что в качестве "проекта" моя поделка никогда не увидит свет - там такое наворочено, что никто более в здравом уме повторять не станет. а кусочки кода дать - это могу... но там ничего умного нет.

Re: Нотная запись для микроконтроллера

Пн янв 10, 2022 11:08:04

настроенный на прерывания 16 раз в секунду

Можно же просто запускать таймер на нужное время в однократном режиме, а в прерывании UEV запускать следующую ноту…
А длительности нот удобней было бы в долях 64-х записывать. Тогда 1/16 будет соответствовать четырем, а 1/16 с точкой — шести. Ну и так далее. Правда, дробление на три в этом случае тоже не реализуешь, но оно не так-то часто и нужно для всякой попсы.
В простейшем случае, если нет ЦАПа и не хочется генерить чистую синусоиду (пищалке-то и меандр сойдет, а края меандра можно немножко RC-фильтром скруглить), понадобится два таймера: один генерит ШИМ с 50% заполнением на заданной частоте, а второй - пинает очередную ноту. Т.е. прочел очередную, выставил значения ARR и CCR1 шимогенератора, запустил второй таймер на заданную длительность. Если нужна пауза - отключаешь таймер шимогенератора (или можно его ARR в нуль установить).

P.S. Да, можно на сях написать простую программку-конвертер из миди в требуемый формат. Понятно, что миди-файл нужно будет подготовить сначала: в том же rosegarden, tuxguitar или еще какой программулине вроде "гитар-про": из gtp'шного или полифонического миди удалить все ненужные каналы, заменить аккорды на один тон, в таком виде и сохранить в мидишку.
А вообще, если научиться работать с флешкой, можно же и wav'ки играть даже… Либо сделать эдакий синтез: читать миди, но ноты генерить по звуковым банкам. Эдак даже псевдополифонию можно получить.

P.P.S. Кстати, получить псевдополифонию (скажем, на 8 голосов) можно при помощи двух таймеров, имеющих по 4 канала ШИМ. Соединяем их выходы в сумматоре на ОУ, и радуемся. Правда, чтобы оно звучало всегда с одинаковой громкостью, нужно будет повозиться с "размножением" (скажем, одиночную ноту нужно будет всеми восемью каналами воспроизводить).
Последний раз редактировалось Eddy_Em Пн янв 10, 2022 11:14:32, всего редактировалось 1 раз.

Re: Нотная запись для микроконтроллера

Пн янв 10, 2022 11:14:23

Eddy_Em, вы, как всегда, с дельным советом совсем не по контексту :))) какой еще ARR в AVR?! какой еще ЦАП?! да и перезапускать таймер, считающий время, на другие интервалы - это немного не хорошо для часов.

что касается полифонического синтеза - это я делал, но не в этом конкретном случае.

Re: Нотная запись для микроконтроллера

Пн янв 10, 2022 11:16:54

какой еще ARR в AVR?!

Дык, выбирать нужно правильный МК, а не пытаться отверткой гвоздь забить!
перезапускать таймер, считающий время, на другие интервалы - это немного не хорошо для часов

Ну так возьми МК с восемью таймерами - в чем проблема-то? Зачем один таймер для кучи задач использовать?

А ЦАП - штука полезная. И МК с ЦАПом стоят не так уж и дорого: на али рублей от 300. Плюс таймеров почти с десяток! Плюс USB и прочие плюшки!

Re: Нотная запись для микроконтроллера

Пн янв 10, 2022 11:44:51

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

Добавлено after 22 minutes 32 seconds:
я и частоты нот подбирал в пределах погрешности не более 5%...
Вот это уже пиздец полный. Боюсь такое слушать. Отклонение в 5% - это примерно следующая нота (полутон). Более-менее - это плюс-минус десять центов, или плюс-минус 0.6%.

Re: Нотная запись для микроконтроллера

Пн янв 10, 2022 12:09:01

вот-вот, у меня именно так жутко и вышло, фальш сплошная, то нота, то не нота/

Eddy_Em, просто пиши всем использовать STM32H7 в корпусе > 100 ног, для любого случая. А 6-лапые пики надо сжигать публично на костре.
Ответить