LittleBob
@LittleBob

Как программно проигрывать ноты гитары?

В своём приложении я проигрываю ноты гитары с помощью пула мп3 файлов. Но это в любом случае не очень правильно. Для большей точности хотелось бы создавать эти ноты программно, у каждой ведь есть своя собственная частота и другие параметры, значит скорее всего можно просто подавать эти значения на динамик и тем самым проигрывать эти ноты.
Каким образом это можно делать, должны ведь быть какие-нибудь методы или библиотеки?
  • Вопрос задан
  • 197 просмотров
Решения вопроса 2
gbg
@gbg
Любые ответы на любые вопросы
Синтез гитары по сложности тянет на уровни от курсача до докторской диссертации и далее в R&D в какой-нибудь компании типа Roland или Yamaha.

Если вам достаточно уровня курсача, вы можете открыть для себя математическую модель колебаний струны (в том же учебнике Тихонова энд Самарского).

Но тут надо понимать, что это будет воспроизводить звучание Сковородки, а у реальной гитары, особенно акустической, в извлечении звука принимает участие корпус (а у электрической к корпусу добавится еще и усилитель (и педали-эффекты) и его колонка-кабинет).

Например, если на гитаре основательно дернуть одну струну, она заведет корпус, а корпус заведет остальные струны. Иногда это полезно, иногда - нет, и музыкант глушит лишние струны различными приемами.

Чем больше факторов вы учтете, тем дальше вы продвинитесь от лабораторки за второй курс физмата до R&D в Роланде.

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

И наконец, главное - данная задача в определенном смысле является неуловимым Джо. Вместо сидения перед компом и накручивания трех десятков параметров синтеза на каждую ноту, любой вменяемый музыкант просто позвонит своему дружбану с реальной гитарой (или надергает нужные ноты сам, пусть и в 20 дублей и 120 склеек).

Еще один аргумент в пользу гипотезы неуловимого Джо - даже если гипотетически, вы создадите такой синтезатор, к нему будет необходим контроллер. И тут выясняется, что лучшим контроллером для синтезатора гитары является сама гитара - следовательно, синтезатор из этой схемы можно и выкинуть.
Ответ написан
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Добрый день.
Довольно интересная затея.
С учетом своего опыта использования подобных приложений (я играю на электрогитаре), могу сказать то, что есть довольно много приложений, которые воспроизводят звук электрогитары. Самыми известными среди них являются: Ultimate Guitar, Tonebridge, Songsterr, Guitar Tab X. Именно звуки гитары этих приложений максимально дают натуральное звучание. Как вариант, можно постараться декомпилировать их и изучить исходники.
Я встречал готовую либу, которая способна воспроизводить звук гитары по табулатуре.
Называется она AlphaTab и судя по заявлению разработчиков, то можно ее использовать и в mobile.
https://www.alphatab.net/
Также не знаю поможет ли вам это, но в Java есть пакет javax/sound/midi
https://habr.com/ru/post/211480/
Возможно, данная ссылка будет также полезна для вас: https://stackoverflow.com/questions/20393183/javax...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
402d
@402d
начинал с бейсика на УКНЦ в 1988
https://source.android.com/devices/audio
Узучите. Возможно Вы найдете то, что я пропустил.
Я не вижу готового программного миди синтезатора в документации
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы