Клавиатура для пианино своими руками

виртуальное пианино онлайн на клавиатуре

одиночные ноты или аккорды можно играть на клавиатуре или мышью (семь октав)

Играйте на клавиатуре компьютера, чтобы играть на клавиатуре пианино онлайн

На этом cимуляторе пианино можно играть онлайн бесплатно. Нажмите клавиши на клавиатуре компьютера или нажмите на клавиши фортепианной клавиатуры, чтобы играть на этом виртуальном пианино. Каждую ноту на клавиатуре пианино от C3 до C5 можно воспроизвести, нажав соответствующую клавишу на клавиатуре компьютера. Например, C3 воспроизводится нажатием Tab, C#3 — нажатием 1, а D3 — нажатием клавиши Q и так далее. Обратите внимание, что A#4 воспроизводится нажатием клавиши Backspace, B4 клавиши бэкслеш, а C5 клавиши Enter.

Воспроизведение любых аккордов на клавиатуре компьютера

Клавиши на клавиатуре компьютера из строки A,S,D и строки Z,X,C запрограммированы на воспроизведение аккордов, сформированных из белых клавиш фортепиано, для создания более насыщенных мелодий. Кроме того, любая клавиша клавиатуры компьютера может быть настроена для воспроизведения любого аккорда или отдельной ноты. Включите флажок АККОРД, чтобы указать аккорд на клавиатуре пианино, а затем выключите его, чтобы создать кнопку для этого аккорда. Эта кнопка будет воспроизводить ваш аккорд, но также может быть настроена так, чтобы быть связанной с выбранной клавишей клавиатуры компьютера.

Запись и воспроизведение

Вы можете записывать все, что играет эта виртуальная клавиатура пианино, и воспроизводить ее по своему усмотрению. Чтобы начать и остановить запись, включите и выключите флажок ЗАПИСЬ. Кнопка воспроизведения появится автоматически. У вас может быть много кнопок воспроизведения: каждая со своей собственной записью. Вы можете даже воспроизводить несколько записей одновременно, делая другую запись, чтобы объединить их.

Сохраните свою работу

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

Источник

Превращаем клавиатуру в пианино с помощью Python

Как-то заинтересовался я теорией музыки. Но пианино, увы, у меня нет, поэтому я отправился в поиски программы со следующий функционалом: после нажатия на кнопку звучит определенная нота. Сперва я посмотрел высокопрофессиональные программы, но в них слишком, уж слишком много функций. И это очень хорошо, но на текущем моменте моей жизни мне это попросту ненужно. Это будет только мешать и отвлекать. В программах с меньшим функционалом максимально неудобный интерфейс. Потому я решил просто написать такую программу сам. Подробности под катом.

Немножко о MIDI

MIDI — стандарт цифровой звукозаписи на формат обмена данными между электронными музыкальными инструментами. Это отдельный большой мир, который заслуживает отдельного разговора. Но нам необходимо знать лишь некоторые правила:

В каждом файле midi есть неограниченное количество треков, которые запускаются одновременно.

В каждом треке хранятся определенные команды для синтезатора. Например, noteon – включить определенную ноту; noteoff – выключить определенную ноту; change_program – изменить инструмент, control_change – изменение настроек, влияющих на воспроизведение нот, их смену, и тп. Все команды можно посмотреть здесь.

Каждая команда характеризуется несколькими параметрами: значение – это, например, номер ноты, номер инструмента и т.п; время от прошлой команды, через которое необходимо выполнить эту команду; номер канала (всего их 16), в котором играет данная нота или применяется соответствующая настройка, или изменяется инструмент. Если не включена полифония, то в канале не может звучать две одинаковые ноты одновременно.

Запись MIDI-файлов с помощью Mido

Mido – это библиотека на python, созданная для работы с MIDI-сообщениями и портами. Установка.

Классический пример прочтения файла:

Классический пример создания файла:

Обратите внимание на параметр «time». Поподробней можно прочитать здесь.

Обработка событий клавиатуры c keyboard.

Словарь можно сделать так (начинается с малой октавы):

Воспроизведениe нот в реальном времени с помощью mido

Сперва надо установить python-rtmidi.

Получаем список портов (у меня всего один):

При нажатии на клавишу передаем порту сообщение о включении или выключении ноты:

Но у этого способа есть одна проблема – качество звучания. Да и превратить midi в wav просто так нельзя.

Воспроизведениe нот в реальном времени с помощью fluidsynth

Fluidsynth – это бесплатный программный синтезатор.

Установка fluidsynth (в Windows):

Скачайте fluidsynth для Windows и распакуйте в любой папке.

Добавьте подкаталог «fluidsynth\bin» в свой path. Для этого в поисковой строке напишете «Изменение системных переменных среды», запустите; далее по порядку «Переменные среды», «Path», «Изменить», «Создать» и введите путь к подкаталогу «fluidsynth\bin».

Теперь нужно проверить работоспособность fluidsynth. Скачайте любой midi файл и выполните в консоли «fluidsynth FluidR3_GM.sf2 file_name.mid». Не забудьте перейти в необходимый каталог.

Теперь нужно установить pyfluidsynth.

Скачайте pyfluidsynth (разработка ведется на github) и распакуйте.

Чтобы додуматься до этого шага мне пришлось потратить 1.5 дня (еще один намек на то, чтобы нормально выучить язык, а не с помощью статей в интернете). Перейдите в каталог «fluidsynth\bin» и найдите там файл «libfluidsynth-3.dll» (Быть может, у вас другая цифра). Теперь откройте файл «fluidsynth.py» в каталоге «pyfluidsynth», найдите строчку «lib = find_library(‘fluidsynth’) or…» (она должна быть в начале) и поменяйте «fluidsynth» или любой другой аргумент на «libfluidsynth-3.dll» (У вас может быть другая цифра).

В каталоге «pyfluidsynth» выполните команду «py setup.py install». После чего данный каталог можно удалить.

Также может потребоваться установить numpy.

Читайте также:  Кулинарные изделия своими руками

Источник

Изготавливаем электронное пианино из MIDI-клавиатуры своими руками

Так как и я, и моя жена были в детстве обучены нажимать на клавиши, то дома явно не хватало некоего устройства с черными и белыми клавишами для передачи опыта нажатия на оные подрастающему поколению. Увы в маленькой «однушке» не то что «Стенвею» — простому «Красному октябрю» не было места. Выход был найден — MIDI клавиатура! Тем более, что попытки сделать самому нечто подобное предпринимались еще на заре моего «радиогубительства». Опять же из за нехватки места было решено ограничиться для начала 4 октавами. Да и финансы не позволяли прикупить какой нибудь «Роланд».

Немного поискав в интернете я наткнулся на объявление о продаже за 50 вечнозеленых девайса под названием Fatar 49. Поискав все в той же паутине нашел описание этого чуда.

MIDI клавиатура Fatar StudioLogic CMK 49

  • 4-октавная, полноразмерная, динамическая (чувствительная к скорости нажатия), невзвешенная; 49 клавиш
  • Разъемы MIDI выход, к нему подключается штекер с надписью «IN»
  • Питание Адаптер питания может не входить в комплект поставки.
  • Нужный адаптер питания — 9В, 0.5А. Внутренний контакт «+», внешний «-«.
  • Размеры внешние 75.2 х 15 х 8 см
  • Вес 2 кг

Семейный совет постановил — БЕРЕМ. Прежний владелец продемонстрировав что она работает даже приложил к ней адаптер питания. MIDI шнурок у меня уже был (запас давно как чуствовал). И вот привезя домой и подключив ее к компьютеру, я наконец смог вспомнить детство. И. понять что за 15 лет все забыто почти полностью.

В просторах сети была добыта очень интересная программа «Play Piano» компании Midisoft. Она может практически любого научить играть. Она следит за правильностью игры и указывает на ваши ошибки, как хороший преподаватель. Жаль только что за это время так и не удалось найти чего-нибудь похожего, но поновее (программка 96-го года).

Было это все в прошлом веке. Как говорят в романах — прошли годы. Родились и подросли дети. Клавиатура на столе и тогда была не особенно удобна — очень высоко получалось по сравнению с обычным пианино.

Подставка на стул помогала, но. В этом году было принято решение начать мучить старшего. Надо же на ком-то отыграться за наше обучение. Для него вообще приходилось городить пирамиду на стуле. Да и клавиатура постоянно от него пыталась уехать. Попытки ставить клавиатуру на детский столик помогли не сильно. Теперь он был слишком низким.

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

Во-первых стало понятно, что делать клавиатуру на высоту стандартного пианино смысла нет, так как делалось это уже под конкретных людей. Во-вторых сделав только подставку под клавиатуру я быстро понял, что придется удлинять MIDI-кабель. И тогда созрело решение сделать полностью автономный музыкальный инструмент. Покопавшись в запасниках компьютерного железа, из него были извлечены вполне рабочие (хотя морально давно устаревшие) компоненты: материнская плата, процессор, видеокарта и жесткий диск. Найден был также старый блок питания. Не хватало малого — памяти. Хороший человек из сервисной службы подарил мне перед новым годом модуль. Теперь было все что нужно.

Конфигурация получилась самая что ни на есть примитивная для нынешних времен:

  • CPU: Pentium MMX 166 MHz разогнаный до 200
  • RAM: SDRAM PC100 128 Mb
  • HDD: Coner 340 Mb
  • VIDEO: TRIDENT
  • AUDIO: Onboard Yamaha OPL3

Но для обработки MIDI слабое место здесь только звуковая карта. Для корпуса пришлось прикупить 4 мебельных щита 800х200х20.

Потратив половину выходного дня получил вот такой агрегат:

Сверлим отверстия для кнопки включения и индикаторов «Power» и «HDD».

Отпиливаем шасси корпуса по размеру материнской платы. Прикручиваем ее установив процессор память и видеокарточку.

Все пустые гнезда шасси закрываем красивыми блестящими заглушками.

Прикручиваем корзину HDD c диском к корпусу.

Подключаем блок питания и все остальные шлейфы и провода

Операционка была установлена заранее. На такой объем удалось поставить только Win98. Подключаем монитор, клавиатуру и мышь. Убеждаемся, что все работает.

Теперь переходим к акустике. Раньше все шло через компьютер, который был подключен к хорошему усилителю и который, в свою очередь, был подключен к приличным колонкам. В объем нового устройства все это не впихнешь. Да и нет смысла. Для такой звуковой карточки хватит чего-нибудь попроще. Опять ныряем в запасники и достаем вот такую (если можно так сказать) акустическую систему:

Разбираем ее и видим внутри:

Да уж, но на безрыбье и рак рыба. Надо будет съездить на дачу, там где-то лежат неплохие динамики и спаянный мной лет 12 назад усилок на К174УН7 — все же мощности у него побольше будет.

Подключаем этот «Звук».

Ну вот. что получилось.

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

В процессе перетыкания туда-сюда клавиатуры одна из клавиш стала звучать только при сильном нажатии. Пришлось все разобрать и напоить родимую C2H5OH. Каждую клавишу, каждую резиночку протер, высушил и поставил обратно. Заодно щелкнул фотиком внутреннее устройство.

Усилитель на К174УН7 был обнаружен, но то ли кондеры на нем за это время приказали долго жить, то ли он слишком чувствительный. В общем, жутко фонит. Пришлось пока оставить старый усилитель.

Сначала хотел сделать заднюю стенку из фанеры, но потом решил все же сделать деревянную.

Был приделан пюпитр. В качестве декоративных решеток на динамики были приобретены две круглые решетки для вентиляции. Вся конструкция была разобрана, зашпаклевана, отшлифована и покрыта неводной морилкой.

Источник

Делаем MIDI-клавиатуру из старого детского синтезатора

В один из дней, возвращаясь домой, возле мусоропровода в подъезде я увидел старую детскую игрушку-синтезатор. Прошел мимо, так как брать с мусорки «грешно», но в душе захотелось утащить ее оттуда. Уже поздно ночью, где-то часа в 2 я решил посмотреть, не стоит ли она все еще там. И да, она все еще была там! С виду она был вполне целой и чистой, так что никакой брезгливости, чтобы не забирать ее не было. Так что да, я ее забрал.

Читайте также:  Костюмы сделанные своими руками для конкурса

Давно хотел себе пианино, я не профессиональный музыкант, но просто побаловаться — почему нет? Покупать что-то «ради побаловаться» меня «душила жаба», а тут — халявная игрушка. Когда я ее забирал с мусорки, то даже мысли не было пользоваться ей как детской игрушкой, была сразу мысль: «О-о-о…, хорошая база, чтобы попробовать сделать MIDI-клавиатуру».
Так как у меня уже есть некоторый опыт общения с профессиональными клавишными инструментами и MIDI-клавиатурами, то я сразу понимал все минусы моей идеи. То есть игрушка по факту так игрушкой и останется. На базе нее невозможно будет реализовать силу нажатия клавиш. Сами «легкие» пластиковые клавиши, которые к тому же еще и неполноразмерные не дадут возможности что-то на ней достойно исполнять.

В первую очередь синтезатор-игрушка была разобрана «до винтика», хорошо вымыт с мылом весь пластик. Также почищены платы и контактные группы клавиш.

После разборки пришло понимание, почему люди ее выкинули. У игрушки (не знаю от чего: от времени, от китайского качества комплектующих или жесткой эксплуатации) во-первых: развалились встроенные динамики, а во-вторых: в разъеме наушников торчал отломанный разъем от них, так что вытащить его не было практически никакой возможности. Наверное, после того как игрушка перестала играть встроенными динамиками, ей пользовались с наушниками, а потом после того как и там сломали разъем – просто выкинули.

Внутри игрушка-синтезатор состояла из трех плат, которые между собой были спаяны шлейфом проводов. Центральная плата, которая отвечала за генерацию звука и прочего, была сразу же отпаяна от двух других плат и отложена в сторону. На двух других платах находились контакты для кнопок на лицевой панели игрушки и непосредственно самих клавиш пианино. К ним я припаял разъемы PBS, тем более что шаг отверстий на платах как раз был 2.54 мм.

После этого я потратил пару часов на составление схем этих плат с клавишами. Как выяснилось, схема представляет простую матричную клавиатуру.

На картинке в желтых кружочках цифры – это номера контактов «горизонталей», а цифры на клавишах – номера контактов «вертикалей» в разъеме PBS-13 на плате клавиатуры.

После этого все это было закинуто в угол и пылилось целый год. И тут наступил период самоизоляции… Стало скучно и захотелось что-то поделать своими руками, тем более что ходить некуда, да и нельзя…

В итоге решил все-таки попробовать хоть немного доделать эту игрушку. В качестве основы для контроллера взята плата Arduino, а так как количество цепей клавиш больше, чем количество выводов Arduino UNO, то решил использовать сдвиговые регистры 74HC595 и 74HC165. В итоге получилась вот такая схема.

Схема была изначально собрана на беспаечной макетной плате. Для проверки работоспособности схемы (что нигде нет ошибок в соединениях) разработана тестовая программа, которая показала, что вроде как все работает. Алгоритм тестовой программы был простой: включается один из выходов микросхемы сдвигового вывода и считываются в цикле значения с микросхемы сдвигового ввода, нажимая при этом клавиши. На первый взгляд ничего не предвещало беды… и вроде бы все прекрасно работало…

Следующие несколько дней я не спеша занимался «домашним творчеством», а именно, аккуратно распаивал все компоненты платы на макетную плату. Собирал это все из того, что было у меня дома. В качестве управляющей платы взял Arduino NANO.

Такой «бутерброд» из плат обусловлен тем, что две платы игрушки (одна с кнопками, а вторая с клавиатурой) расположены на разном уровне и я, прежде чем паять все это подумал: «а нельзя ли это как-то соединить между собой, используя те компоненты, которые есть у меня дома, чтобы выглядело более или менее хорошо»? Так и получилась эта конструкция из двух плат, соединенных между собой разъемами. С моей точки зрения для домашнего варианта, когда сидим в самоизоляции, получилось достаточно хорошо. Пришлось только обрезать макетную плату и чуть-чуть доработать корпус игрушки, чтобы можно было подключать кабель USB в плату Arduino.

Осознание что устройство работает не совсем так, как я хотел, пришло тогда, когда доработал тестовую программу. Алгоритм был простой: по очереди включить каждый выход микросхемы 74HC595, считав при этом состояние входов у микросхемы 74HC165, и записать результат в отдельные переменные. Всего на клавиатуру подключено 5 выходов 74HC595, поэтому в итоге я получил 40 бит (5*8) данных после этого опроса. Строка из 40 бит выводилась в консоль, и нажимались клавиши, чтобы посмотреть, как устройство обрабатывает одновременные нажатия нескольких клавиш.

Тут-то и всплыла проблема: если нажимать по одной клавише, то все было отлично, но при попытке нажать более 2-х клавиш одновременно возникала ситуация, когда невозможно было предугадать, что будет прочитано. Результат мог быть правильным при одном сочетании, а при другом мог быть совсем непредсказуем. Проблема была в том, что не была учтена особенность данной схемы. При нажатии нескольких клавиш одновременно происходит замыкание не только нескольких вертикалей сканирования клавиатуры (это допустимо), но и могут быть замкнуты через клавиши несколько горизонталей (что никак не допустимо). Более подробно об этой проблеме и о способах ее решения можно почитать вот здесь.

Я выбрал «кардинальное решение» проблемы, а именно: решил, что на каждую клавишу в клавиатуре будет поставлено по диоду.

В голове я уже мысленно начал думать, как мне придется перерезать дорожки на плате и ставить в разрыв диод в SMD корпусе. Залез в свои запасники и увидел, что диодов в SMD корпусе в таком количестве у меня просто нет (не забываем, что все мы сидим на самоизоляции и поход в магазин за радиодеталями не очень возможен – так как это точно не предметы первой необходимости). Немного расстроившись, решил более внимательно посмотреть на плату: может быть есть возможность поставить на часть дорожек выводные диоды (их тоже какое-то количество у меня было). И тут я увидел, что у каждой клавиши, есть перемычка (плата односторонняя) и схема сделана так, что вместо этой перемычки можно поставить по диоду. Сразу же подумалось – даже и ничего резать не надо, надо только везде поставить вместо перемычек выводные диоды. Такого количества выводных диодов у меня тоже не было. В голове мелькнула мысль: «а может быть поставить светодиоды»? Работа схемы идет на уровне +5V и если поставить красные светодиоды, у которых минимальное падение напряжения (среди светодиодов), то в итоге должно хватать логического уровня для правильного определения: нажата клавиша или нет.

Читайте также:  Как улучшить дизельное топливо своими руками

С этой мыслью я снова полез в свои запасы и выгреб откуда только можно было красных светодиодов. Их оказалось ровно столько, сколько клавиш на клавиатуре! Это знак, подумал я, и впаял для пробы несколько светодиодов вместо перемычек. Результаты тестирования показали, что решение рабочее. После этого запаял остальные светодиоды вместо перемычек. Тестовая программа показала, что можно нажать хоть все клавиши одновременно, и они все считываются правильно.

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

Настало время разобраться с тем, как сделать, чтобы это устройство виделось в компьютере как MIDI-клавиатура и в каком формате нужно отправлять данные.

Информация, найденная в интернете, говорила мне о том, что можно из Arduino сделать MIDI-клавиатуру очень легко и просто, если залить в нее прошивку, которая заставит компьютер видеть ее не как COM-порт, а именно как MIDI-клавиатуру. Изначально я на это решение и ориентировался, особо не вдаваясь в то, как оно реализовано.

Теперь, когда я добрался до него и внимательно прочитал, то понял, что моя плата Arduino NANO не подойдет для этого решения, так как у нее COM порт был реализован на базе микросхемы CH340. Для использования прошивки по ссылке выше подойдут только те платы, где USB-порт уже есть на контроллере (например: AtMega32u4) или же общение по COM-порту сделано не на микросхемах преобразования типа FT232RL и им подобным, а на микроконтроллерах AtMega. Поэтому прошивка в плате должна отдать данные в формате MIDI в COM порт, а на компьютере придется установить и настроить программное обеспечение, которое будет эти данные перехватывать и передавать в виртуальный MIDI-порт.
Алгоритм считывания клавиш и формирования MIDI-команд у меня получился следующий:

Нет смысла расписывать подробно, как работать с MIDI данными, потому что это можно прочитать здесь.

Остановлюсь чуть более подробно на программном обеспечении для компьютера и тех проблемах, с которыми я столкнулся. Проблемы возникли, просто из-за отсутствия нормальной документации на это программное обеспечение. Итак, для того, чтобы компьютер успешно мог принимать MIDI-данные с такого устройства как у меня, понадобится две программы: loopMIDI и Serial-Midi Converter. Для программы Serial-MIDI Converter дополнительно нужно установить Java, если на компьютере она не установлена.

Запускаем программу loopMIDI и создаем два виртуальных порта. Я назвал их «Arduino IN» и «Arduino OUT». Эта программа как раз и будет виртуальным MIDI-устройством.

Далее запускаем Serial-MIDI Converter и при запуске проходим процесс ее настройки. К сожалению, это приходиться делать каждый раз при запуске, но это не очень страшно, делается буквально в четыре нажатия на клавиатуре. Номер COM-порта может быть другой, он появляется на компьютере при подключении платы Arduino NANO. Скорость порта задается в прошивке Arduino NANO. Красными стрелками обозначены мои параметры, при которых у меня все работало.

Собственно на этом процесс настройки завершен и можно уже использовать какое-либо программное обеспечение, которое будет воспроизводить звуки, принимая нажатия клавиш от устройства. В настройках программного обеспечения необходимо выбрать в качестве входа «Arduino_OUT». На картинке ниже пример настройки Kontakt Player.

Работает в конечном итоге это вот так:

Что дальше? А дальше все произошло именно так, как я и ожидал – игрушка остается игрушкой ровно со всеми теми недостатками, о которых я упоминал в самом начале. Наверное, ребенку поиграть на таком будет в кайф, но вот взрослому человеку, после нормальных клавишных инструментов… Проще купить достаточно дешево любую MIDI-клавиатуру б/у и она будет на порядок лучше этой игрушки. Я решил оставить эту игрушку как она есть, но сделать некоторые модификации с ней:

  1. Оставить оригинальный корпус.
  2. Поставить исправные динамики и сделать усилитель для них.
  3. Сделать так, чтобы она работала в режиме «детской игрушки» без подключения к компьютеру, то есть, чтобы сама могла играть звуки.
  4. Сделать возможность подключения FootSwitch (та самая педаль на пианино внизу), чтобы можно было сделать удержание звука после отпускания клавиш, как на нормальном инструменте.
  5. Добавить в прошивке поддержку клавиш, которые сейчас не опрашиваются и не задействованы.
  6. Подключить в схему переменный резистор, который остался физически на панели игрушки-синтезатора, и добавить его функциональность в прошивку.

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

Для реализации пункта 3 в интернете было найдено решение под названием SamplerBox. Суть проекта в том, что можно подключать любую MIDI-клавиатуру к плате Raspberry Pi, которая обрабатывает MIDI-команды с клавиатуры и воспроизводит звуки или переключает инструменты и т.д. Остается только поставить плату Raspberry Pi внутрь корпуса игрушки, без возможности замены SD-карты (не разбирая корпус), настроить кнопки на корпусе игрушки так, чтобы они переключали инструменты и этого будет достаточно, чтобы оставить этот проект в таком виде.

Но все это будет уже после того, когда закончится период самоизоляции.

Надеюсь, что кому-нибудь мой опыт окажется полезным.

Источник

Оцените статью
Своими руками