Как-то заинтересовался я теорией музыки. Но пианино, увы, у меня нет, поэтому я отправился в поиски программы со следующий функционалом: после нажатия на кнопку звучит определенная нота. Сперва я посмотрел высокопрофессиональные программы, но в них слишком, уж слишком много функций. И это очень хорошо, но на текущем моменте моей жизни мне это попросту ненужно.
Это будет только мешать и отвлекать. В программах с меньшим функционалом максимально неудобный интерфейс. Потому я решил просто написать такую программу сам. Подробности под катом.
Немножко о MIDI
MIDI — стандарт цифровой звукозаписи на формат обмена данными между электронными музыкальными инструментами. Это отдельный большой мир, который заслуживает отдельного разговора. Но нам необходимо знать лишь некоторые правила:
- В каждом файле midi есть неограниченное количество треков, которые запускаются одновременно.
- В каждом треке хранятся определенные команды для синтезатора. Например, noteon – включить определенную ноту; noteoff – выключить определенную ноту; change_program – изменить инструмент, control_change – изменение настроек, влияющих на воспроизведение нот, их смену, и тп. Все команды можно посмотреть здесь.
- Каждая команда характеризуется несколькими параметрами: значение – это, например, номер ноты, номер инструмента и т.п; время от прошлой команды, через которое необходимо выполнить эту команду; номер канала (всего их 16), в котором играет данная нота или применяется соответствующая настройка, или изменяется инструмент. Если не включена полифония, то в канале не может звучать две одинаковые ноты одновременно.
Запись MIDI-файлов с помощью Mido
Mido – это библиотека на python, созданная для работы с MIDI-сообщениями и портами. Установка.
Как сделать из компьютера синтезатор
Классический пример прочтения файла:
from mido import MidiFile mid = MidiFile(‘song.mid’) for i, track in enumerate(mid.tracks): print(‘Track <>: <>’.format(i, track.name)) for msg in track: print(msg)
Классический пример создания файла:
from mido import Message, MidiFile, MidiTrack, second2tick mid = MidiFile() track = MidiTrack() mid.tracks.append(track) time = int(second2tick(0.1, 480, 500000)) for i in range(100): track.append(Message(‘program_change’, program=12, time=0)) track.append(Message(‘note_on’, note=64, velocity=64, time=time)) track.append(Message(‘note_off’, note=64, velocity=64, time=time)) mid.save(‘new_song.mid’)
Обратите внимание на параметр «time». Поподробней можно прочитать здесь.
Обработка событий клавиатуры c keyboard.
import keyboard def hook(key): if key.event_type == «down»: print(«<> press».format(key.name)) if key.event_type == «up»: print(«<> release».format(key.name)) keyboard.hook(hook) keyboard.wait(«esc»)
Словарь можно сделать так (начинается с малой октавы):
Реально ли ЗАМЕНИТЬ синтезатор КЛАВИАТУРОЙ? / midi клавиатура / FL studio
import keyboard keys = <> note = 48 def hook(key): global note if key.event_type == «down»: if key.name != «esc»: keys.update() note += 1 if key.event_type == «up»: if key.name == «esc»: print(keys) keyboard.hook(hook) keyboard.wait()
Воспроизведениe нот в реальном времени с помощью mido
Сперва надо установить python-rtmidi.
Получаем список портов (у меня всего один):
>>> mido.get_output_names() [‘Microsoft GS Wavetable Synth 0’]
При нажатии на клавишу передаем порту сообщение о включении или выключении ноты:
import keyboard import mido port = mido.open_output(‘Microsoft GS Wavetable Synth 0’) keys = keys = pressed_keys = def hook(key): if key.event_type == «down»: if key.name in keys: if not pressed_keys[key.name]: port.send(mido.Message(‘note_on’, note=keys[key.name])) pressed_keys[key.name] = True if key.event_type == «up»: if key.name in keys: port.send(mido.Message(‘note_off’, note=keys[key.name])) pressed_keys[key.name] = False keyboard.hook(hook) keyboard.wait()
Но у этого способа есть одна проблема – качество звучания. Да и превратить midi в wav просто так нельзя.
Воспроизведениe нот в реальном времени с помощью fluidsynth
Fluidsynth – это бесплатный программный синтезатор.
Установка fluidsynth (в Windows):
- Скачайте fluidsynth для Windows и распакуйте в любой папке.
- Добавьте подкаталог «fluidsynthbin» в свой path. Для этого в поисковой строке напишете «Изменение системных переменных среды», запустите; далее по порядку «Переменные среды», «Path», «Изменить», «Создать» и введите путь к подкаталогу «fluidsynthbin».
- Скачайте музыкальный шрифт.
- Теперь нужно проверить работоспособность fluidsynth. Скачайте любой midi файл и выполните в консоли «fluidsynth FluidR3_GM.sf2 file_name.mid». Не забудьте перейти в необходимый каталог.
Теперь нужно установить pyfluidsynth.
- Скачайте pyfluidsynth (разработка ведется на github) и распакуйте.
- Чтобы додуматься до этого шага мне пришлось потратить 1.5 дня (еще один намек на то, чтобы нормально выучить язык, а не с помощью статей в интернете). Перейдите в каталог «fluidsynthbin» и найдите там файл «libfluidsynth-3.dll» (Быть может, у вас другая цифра). Теперь откройте файл «fluidsynth.py» в каталоге «pyfluidsynth», найдите строчку «lib = find_library(‘fluidsynth’) or…» (она должна быть в начале) и поменяйте «fluidsynth» или любой другой аргумент на «libfluidsynth-3.dll» (У вас может быть другая цифра).
- В каталоге «pyfluidsynth» выполните команду «py setup.py install». После чего данный каталог можно удалить.
Также может потребоваться установить numpy.
import time import fluidsynth fs = fluidsynth.Synth() fs.start() sfid = fs.sfload(«FluidR3_GM.sf2») fs.program_select(0, sfid, 0, 0) for i in range(10): fs.noteon(0, 60, 30) fs.noteon(0, 67, 30) fs.noteon(0, 76, 30) time.sleep(1.0) fs.noteoff(0, 60) fs.noteoff(0, 67) fs.noteoff(0, 76) time.sleep(1.0) fs.delete()
Соединяем с keyboard:
import keyboard import mido import fluidsynth fs = fluidsynth.Synth() fs.start() sfid = fs.sfload(«FluidR3_GM.sf2») fs.program_select(0, sfid, 0, 41) keys = pressed_keys = def hook(key): if key.event_type == «down»: if key.name in keys: if not pressed_keys[key.name]: fs.noteon(0, keys[key.name], 127) pressed_keys[key.name] = True if key.event_type == «up»: if key.name in keys: fs.noteoff(0, keys[key.name]) pressed_keys[key.name] = False keyboard.hook(hook) keyboard.wait()
Из midi в wav
Выполните в консоли:
fluidsynth -F melody.wav FluidR3_GM.sf2 melody.mid
Спасибо за прочтение статьи. Удачи!
Источник: habr.com
Синтезатор онлайн на клавиатуре — играть бесплатно
Я люблю слушать музыку. И часто, слушая музыку, я ловлю себя на том, что сам тоже проигрываю музыку, ощущая при этом, каким-нибудь новым Армином Ван Бьюреном J.
Если любителям петь легче, ибо для них есть караоки, то что делать любителям играть? На самом деле, все просто. Можно поиграть на клавиатурном онлайн синтезаторе.
Онлайн синтезатор на клавиатуре
Все мы наверное слышали, что есть такой инструмент, как синтезатор, который представляет собой настоящую фабрику для производства самой разной музыки. Но стоит такой инструмент совсем не дешево. Если профессиональным музыкантам это оправдано, то вот для просто любителей, которые просто хотят немного создать музыку в свое свободное время, это довольно дорого. Но есть и выход, можно воспользоваться виртуальным онлайн синтезатором на клавиатуре.
Онлайн синтезаторы, часто имеют возможности, которые присущи их физическим аналогам. Благодаря такому инструменту, можно наигрывать любимую музыку, можно изменять ее, делать всевозможные аранжировки, ну и придумывать свою собственную музыку. Причем, для этого, совсем не обязательно иметь музыкальное образование.
Игра на онлайн синтезаторе, это нечто среднее, между просто компьютерной игрушкой, и серьезным инструментом, игра на котором, может вас побудить стать настоящим музыкантом.
Виды онлайн синтезаторов.
Есть очень много самых разных онлайн генераторов которые позволяют играть на клавиатуре компьютера. Некоторые из синтезаторов, позволяют играть просто, имитируя пианино, ну а некоторые инструменты, имеют очень даже большие возможности.
Вот один из таких, простейших синтезаторов, который имитирует пианино. Играть на нем очень даже просто, достаточно нажимать соответствующие клавиши на клавиатуре, либо можно играть мышкой. Этот виртуальный синтезатор, имеет простейшее управление, хотя играть на нем реальные вещи, будет достаточно сложно.
Ну в вот еще парочка. Эти синтезаторы, выдают уже чисто электронный звук. И благодаря ним, можно исполнить достаточно интересные вещи.
Есть и еще одна особенность этих двух музыкальных инструментов. Они позволяют записывать и воспроизводить музыку по нотам. Правда ноты, это не те, которые используются при записи обычной, как правило классической музыки. Нет, здесь все проще. В качестве нот, выступают клавиши на клавиатуре вашего компа.
И вы можете придумывать музыку, ну а затем, воспроизвести ее.
А вот вам еще один, но ну ооочееень мощный онлайн синтезатор. Вы можете нажать всего несколько кнопок, и получить весьма продвинутый клубняк. Ну а затем, воспользовавшись какой-нибудь программой для захвата музыки (сам онлайн синтезатор не позволяет записывать в файл, например в мп3), вы можете записать свою мелодию, ну а затем, можете поделится со своими друзьями.
Ну а если вам этого мало, ловите еще 🙂
Преимущества онлайн синтезаторов над обычными.
Самое главное преимущество онлайн синтезаторов — сочетание мощи и простоты. Не нужно осваивать сложные термины, не нужно изучать ноты, октавы, аккорды и прочее. Просто взяли, и начали играть.
При всей простоте, эти синтезаторы, позволяют создавать действительно неплохие вещи. Можно найти варианты, самых разных направлений, и играть на них. Начиная он классического пианино, заканчивая продвинутыми инструментами.
Другое преимущество, это доступность. Такие инструменты абсолютно бесплатны, достаточно просто открыть соответствующую страницу в интернете, и начать наслаждаться музыкой.
Что дальше?
Возможно, познакомившись с онлайн синтезаторами, вам захочется дальше продвинутся в создании электронной музыки. Тогда возникает закономерный вопрос, куда дальше идти? Для создания электронной музыки, к большому сожалению, классическое музыкальное образование не сильно поможет. Ибо здесь идет совсем другая специфика.
Для начала, пройдите небольшой курс от Аблетон. В этом мини курсе, вы узнаете основы создания музыки. Что такое октавы, аккорды, познакомитесь со структурой песен. Хотя курс на английском, но он легко переводится встроенным переводчиком, при этом, такого аналога просто нет.
Здесь же есть и еще один интернет-синтезатор, с помощью которого, вы уже сразу почувствуете азы создания электронной музыки, и при этом, можете создать свою мелодию буквально в несколько кликов.
Мини курс находится на этом адресе: learningmusic.ableton.com
Возможно, вам понравится идея создания своей электронной музыки. При этом, возможности онлайн синтезаторов вы исчерпаете. Тогда вам предстоит усвоить уже профессиональные инструменты. Самые самые, это FL Studio и Avid Pro Tools.
Хотя Pro Tools обладает бОльшими возможностями чем FL Studio, но на ФЛ, в рунете информации больше. И изучить эту программу вам будет легче. При этом, эта программ позволит вам создавать действительно музыкальные шедевры.
Ну а какая у вас, любимая музыка, и какие проги вы используете? Делимся в комментариях.
Да, и не забудьте поделится статьей со своими друзьями.
Обсуждение статьи
Александр 09.06.23 23:16:30 Ответить
Комментарий:
Как записать, что сыграл на виртуальном пианино подскажите пожалуйста очень нужно. раньше было в flash подобное, но оно умело, а тут не понимаю как.
Рекомендуем
Стейкинг монет на Бинанс
Заработок на играх в Steam (Стим)
Заработок на рефералах, мой опыт за 10 лет
Новые публикации
DotBig.com отзывы и их влияние на репутацию бренда и конверсию
Как продавать туры в соцсетях без сайта
Делаем турбо страницы для Яндекса на WordPress
Как заработать на написании своих музыкальных произведений (музыки, песен)
Сколько денег просить за рекламу в группе
Приглашения в группу Вконтакте
Новые кейсы
Ферма stealth аккаунтов. Как быстро начать и главное зачем?
Кейс: как я заработал на трафике по эвакуаторам 130к за 2 недели
Как зарабатывать на гифт картах с использованием файл локера в MyLead?
Источник: cpa-ratings.ru
AcCompanion
Виртуальный MIDI синтезатор для Windows. Предлагает на выбор 128 музыкальных инструментов с возможностью настройки лада клавиатур, а также имеет режим игры на ударных инструментах. Поддерживает работу с обычной компьютерной клавиатурой.
Возможности программы AcCompanion
- игра на ПК клавиатуре;
- режим привязки к ладу и тональности;
- ручная настройка лада основной клавиатуры, дополнительной клавиатуры и фортепиано;
- подсветка устойчивых ступеней / нот аккордов;
- подсветка клавиш клавиатуры;
- режим клавиатуры фортепиано;
- режим игры на ударных;
- настройка ударных;
- подсветка гамм;
- исключение нажатий нот не входящих в гамму;
- поддержка MIDI клавиатуры;
- поддержка игры по сети (Порт 8087 UDP);
- 128 стандартных музыкальных инструментов;
- наличие 4 основных голосов композиции;
- настраиваемый автоматический аккомпанемент;
- генерация ритмов и партии ударных в соответствии с выбранным стилем;
- настраиваемый пользовательский аккомпанемент;
- несколько методов генерации мелодии и аккомпанемента.
Если вы скачали AcCompanion, не забудьте оценить программу и отписаться в комментариях о своих впечатлениях/пожеланиях!
Источник: freesoft.ru