Ответ на мой вопрос оказался куда интереснее, чем я ожидал, спасибо!
Барабаны, перегруженные гитары и шум добавляют энергию на всех частотах. Обертоны тоже путают: у ноты до третья гармоника звучит как соль. Поэтому я режу диапазон до 80–5000 Гц, но это полумера.
Наверное, нейросети выделяют только мелодию без ударных, а уже её анализируют?
я же все таки обычный студент который хочет развиваться в профессии. Claude я использовал для создания интерфейса в tauri (что что, а React я не очень то знаю), все остальное ручками собирал с начала сентября на rust и kotlin
Желаю Вам удачи - всем бы студентам иметь столько желания развиваться и работоспособности. Отдельно хочу отметить, насколько многие (включая меня) недооценивают возможности современных средств разработки с помощью ИИ. Есть правильная фраза про то, что одни ищут возможности, а другие - причины (ничего не делать).
Напишите, пожалуйста, это реально интересно. Я хоть и сам музыкант, но не очень понимаю, как программно определять тональность даже с использованием нейросетей. Просто бывает, что слушаешь какую-нибудь симфонию Прокофьева до-диез мажор, а в её звучании мажор как-то не очень присутствует :-) Вот и как определять здесь тональность?
Да и в более простой музыке это совсем непросто может оказаться.
Тормозной digitalWrite можно заменить на прямую запись в регистры, тогда побыстрее будет. Другое дело, что у многих Arduino тактовая частота МК низкая, и они просто медленные сами по себе.
А как ставится высокомное состояние в Ардуино? pinMode(INPUT), digitalWrite(HIGH) - что за бред?
вместо хака с pinMode, digitalWrite в коде будет указан конкретный тип из enum
Согласен, что лучше явное включение режима, но это, ИМХО, не такая уж страшная проблема, как малое количество памяти, низкая тактовая частота и др. ИМХО, на всё имеет смысл смотреть с точки зрения решаемых задач и баланса между возможностями и сложностью их использования.
Попробую пояснить, что я тут хотел сказать (статья и так большой получилась, поэтому старался писать покороче). Если взять цифровой эквалайзер на БИХ-фильтрах (аналогичный ручкам эквалайзера на обычном аналоговом микшере, в цифровом виде его ещё называют Parametric EQ), то при поднятии громкости в какой-то полосе частот на 3...6 дБ звук вроде как становится просто громче, но если поднимать громкость значительно (на 12 дБ и больше), то звук при этом уже сильно меняется - в зависимости от частоты, становится либо "как из бочки", либо "как в старом телефоне", либо "из-за угла" (надеюсь, я понятно объяснил :-)
Когда-то давно, когда я только начинал заниматься цифровой обработкой звука, и я первый раз покрутил громкость в многополосном FIR-эквалайзере в программе Cool Edit Pro (сейчас она называется Adobe Audition), разница в звучании для меня была значительной, особенно в наушниках. Даже если сильно поднимать громкость в какой-то полосе, звук просто "выходит на первый план", и при этом не становится "как из бочки". На реальных микшерских пультах или рэковых многополосных эквалайзерах я такого никогда не слышал.
"частотная окраска" — это свойство слуха, а у слуха частотная чувствительность зависит от уровня
Про это я знаю. Помню, году в 2000 выписывал журнал "Звукорежиссер", в котором был цикл статей про психоакустику - там много было написано про то, что, например, громкие низкочастотные звуки "маскируют" собой более высокочастотные, и от громкости восприятие частот на слух тоже зависит, и всё это нужно учитывать при обработке и сведении звука.
Поэтому регуляторы громкости делают тонкомпенсированными.
Я занимался только реализацией различных алгоритмов цифровой обработки звука, но сам я не звукорежиссер, поэтому с реальными (физическими/аналоговыми) приборами работал мало.
Проведённые ими эксперименты по исследованию амплитудно-частотной характеристики человеческого слуха показали, в частности, что более тихий звук воспринимается как более глухой или тусклый, то есть, испытывающий недостаток верхних частот.
С тех пор в аппаратуре для воспроизведения и создания музыки часто встречаются тонкомпенсированные регуляторы громкости, в которых при аттенюации сигнала верхние частоты ослабляются в меньшей мере, чем все остальные.
ИМХО, как-то это всё сложновато, если это "руководство для новичка". Я вот подумываю заняться написанием чего-нибудь для STM32, но после Arduino как-то рука не поднимается такую кучу всего осваивать (для меня это хобби, а не работа).
Возможно, сейчас меня закидают чем-нибудь, но можно же и в Arduino IDE для STM32 писать. Например, здесь и тут пишут:
Программная поддержка STM32 в Arduino IDE называется STM32duino. Она реализована в виде пакета поддержки и загрузчика, прошиваемого в плату. В среду она добавляется как обычно: сначала указывается ссылка в настройках, потом устанавливается пакет из Менеджера плат.
это убивало (и по сей день так) детальность на высоких и (в мЕньшей степени) средних частотах
А можно подробнее - почему такой подход "убивает детальность" на высоких и средних частотах? Казалось бы - просто восстановление аналога из цифры, зачем здесь передискретизация? Может, где-то подробнее про это прочитать можно?
Хабр - торт, но Вы пробовали поиск? Там выдается и готовый краткий ответ от ИИ, и куча ссылок на статьи, в которых примерно то же самое написано. Но я ничуть не умаляю достоинств этой статьи.
но при этом есть ощутимая нагрузка на процессор. Обычно в реальном времени используется компромиссный вариант, из-за которого качество заметно портится.
Это общие слова. Качественный ресэмплинг можно реализовать так, что он даже на процессоре Pentium с частотой 100 МГц будет работать в реальном времени без слышимых артефактов - например, с помощью полифазных фильтров. Я такими задачами ещё лет 25 назад занимался.
class Foo {
int value;
public:
Foo(int value) { // параметр затеняет поле class
value = value; // ничего не делает, присваивает параметр самому себе
}
};
От таких вещей спасают соглашения об именовании переменных и членов класса. Например, переменные-члены класса всегда должны начинаться с m_ или просто _, а прочие переменные - не должны. Да и вообще много рекомендаций по написанию кода существует, чтобы поменьше на грабли наступать.
Ответ на мой вопрос оказался куда интереснее, чем я ожидал, спасибо!
Наверное, нейросети выделяют только мелодию без ударных, а уже её анализируют?
Конечно, интересно :)
Так ведь и более крутые уровни есть - разработка на FPGA, например, вплоть до плат PCIx. А вот "нужно" или нет - ИМХО, каждый решает сам.
Желаю Вам удачи - всем бы студентам иметь столько желания развиваться и работоспособности. Отдельно хочу отметить, насколько многие (включая меня) недооценивают возможности современных средств разработки с помощью ИИ. Есть правильная фраза про то, что одни ищут возможности, а другие - причины (ничего не делать).
Напишите, пожалуйста, это реально интересно. Я хоть и сам музыкант, но не очень понимаю, как программно определять тональность даже с использованием нейросетей. Просто бывает, что слушаешь какую-нибудь симфонию Прокофьева до-диез мажор, а в её звучании мажор как-то не очень присутствует :-) Вот и как определять здесь тональность?
Да и в более простой музыке это совсем непросто может оказаться.
Тормозной digitalWrite можно заменить на прямую запись в регистры, тогда побыстрее будет. Другое дело, что у многих Arduino тактовая частота МК низкая, и они просто медленные сами по себе.
Согласен, что лучше явное включение режима, но это, ИМХО, не такая уж страшная проблема, как малое количество памяти, низкая тактовая частота и др. ИМХО, на всё имеет смысл смотреть с точки зрения решаемых задач и баланса между возможностями и сложностью их использования.
Попробую пояснить, что я тут хотел сказать (статья и так большой получилась, поэтому старался писать покороче). Если взять цифровой эквалайзер на БИХ-фильтрах (аналогичный ручкам эквалайзера на обычном аналоговом микшере, в цифровом виде его ещё называют Parametric EQ), то при поднятии громкости в какой-то полосе частот на 3...6 дБ звук вроде как становится просто громче, но если поднимать громкость значительно (на 12 дБ и больше), то звук при этом уже сильно меняется - в зависимости от частоты, становится либо "как из бочки", либо "как в старом телефоне", либо "из-за угла" (надеюсь, я понятно объяснил :-)
Когда-то давно, когда я только начинал заниматься цифровой обработкой звука, и я первый раз покрутил громкость в многополосном FIR-эквалайзере в программе Cool Edit Pro (сейчас она называется Adobe Audition), разница в звучании для меня была значительной, особенно в наушниках. Даже если сильно поднимать громкость в какой-то полосе, звук просто "выходит на первый план", и при этом не становится "как из бочки". На реальных микшерских пультах или рэковых многополосных эквалайзерах я такого никогда не слышал.
Про это я знаю. Помню, году в 2000 выписывал журнал "Звукорежиссер", в котором был цикл статей про психоакустику - там много было написано про то, что, например, громкие низкочастотные звуки "маскируют" собой более высокочастотные, и от громкости восприятие частот на слух тоже зависит, и всё это нужно учитывать при обработке и сведении звука.
Я занимался только реализацией различных алгоритмов цифровой обработки звука, но сам я не звукорежиссер, поэтому с реальными (физическими/аналоговыми) приборами работал мало.
Сходу нашел вот такой материал, где написано:
Наверное, Вы это имеете ввиду?
С этим я не спорю. Я имею ввиду "для новичка, желающего начать работать именно с STM32".
Вот это имеется ввиду?
https://habr.com/ru/articles/400383/
del
Можете ссылку хоть на один материал дать? Что именно искать надо?
ИМХО, как-то это всё сложновато, если это "руководство для новичка". Я вот подумываю заняться написанием чего-нибудь для STM32, но после Arduino как-то рука не поднимается такую кучу всего осваивать (для меня это хобби, а не работа).
Возможно, сейчас меня закидают чем-нибудь, но можно же и в Arduino IDE для STM32 писать. Например, здесь и тут пишут:
Для новичка этого недостаточно будет?
А можете вкратце рассказать, как определяется тональность композиции? ИМХО, это вполне может потянуть на рассказ в виде отдельной статьи.
А можно подробнее - почему такой подход "убивает детальность" на высоких и средних частотах? Казалось бы - просто восстановление аналога из цифры, зачем здесь передискретизация? Может, где-то подробнее про это прочитать можно?
Хабр - торт, но Вы пробовали поиск? Там выдается и готовый краткий ответ от ИИ, и куча ссылок на статьи, в которых примерно то же самое написано. Но я ничуть не умаляю достоинств этой статьи.
Это общие слова. Качественный ресэмплинг можно реализовать так, что он даже на процессоре Pentium с частотой 100 МГц будет работать в реальном времени без слышимых артефактов - например, с помощью полифазных фильтров. Я такими задачами ещё лет 25 назад занимался.
Ресэмплинг можно делать с разным качеством - и так, что будут слышны искажения, и так, что их не будет слышно. Вопрос не совсем корректно поставлен.
А если в композиции тональность меняется несколько раз, плеер что и как определяет?
С частью таких проблем помогают справиться статические анализаторы.
От таких вещей спасают соглашения об именовании переменных и членов класса. Например, переменные-члены класса всегда должны начинаться с m_ или просто _, а прочие переменные - не должны. Да и вообще много рекомендаций по написанию кода существует, чтобы поменьше на грабли наступать.