Миди клавиатура или синтезатор своими руками

Миди клавиатура или синтезатор своими руками

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

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

2. Старайтесь группировать свои мысли в одно сообщение, не надо писать по одной фразе по принципу «лучше сорок раз по разу, чем один раз сорок раз». При этом, если у вас много мыслей или вопросов разного характера, не задавайте их в одной теме. Поищите для каждой отдельной мысли необходимую тему и напишите там. При этом НЕ ДУБЛИРУЙТЕ одно и тоже сообщение в разных темах!

3. Предварительно пролистайте форум хотя бы «О г л а в л е н и е», поищите там подходящие темы в разделах, и когда вы точно поймете, что подходящей темы или раздела на форуме нет, не бойтесь создать новую! При этом название темы должно бы лаконичным и отражать суть возникшего вопроса. При написании сообщений используйте пунктуацию, если с этим проблема — хотя бы разделяйте фразы абзацами. Пишите так, чтобы было понятно другим.

4. Если вы хотите выразить благодарность человеку, написав при этом что-то вроде «Спасибо тебе Вася за совет. сейчас буду изучать!», и не сообщая какой-либо полезной для других участников информации, воспользуйтесь кнопкой «СПАСИБО» внизу сообщения человека, который вам помог. Таким же образом вы можете выразить свою симпатию какому либо сообщению.

5. Итак, запоминаем некоторые важные моменты:

  • – свои контактные данные и немного об себе — пишите в теме по контактам в «курилке»;
  • покупка-продажа частного характера и обсуждение интернет-торговли в своем разделе;
  • – модели ваших синтезаторов и оборудования, их достоинства и недостатки обсуждаются в разделе «А какой синтезатор у вас. «;
  • – ваше творчество, cover-версии и авторские произведения — в разделе «творчество»;
  • для стилей есть свой отдельный раздел:
  • Спрашиваем или выкладываем стили — в темах по стилям (для разных синтезаторов есть свои темы). При этом первая часть (Part 1) темы по стилям для синтезаторов Yamaha уже содержит в себе богатый архив стилей и ссылок, откуда вы запросто можете пополнить свою коллекцию, спрашиваем интересующее вас во второй части темы (Part 2).
    Для вопросов по созданию и редактированию стилей также существуют отдельные темы;
  • – аналогично МИДИ-файлы и их коллекции — в теме по миди;
  • пакеты расширений, тембра, мультипэды, ОТС, совместная работа синтезатора и компьютера, поиск нот, азы музыкальной грамоты и проч. — для этого всего также имеются свои разделы и соответствующие темы;
  • файлы небольшого объема (до 200 кб) со стилями и миди, полезные информационные картинки, а так же небольшие архивы, вы можете смело прикреплять к сообщениям (имя файла должно быть набрано латиницей). ;
  • – более весящие файлы (более 200 кб) mp3, wav, архивы, коллекции, картинки не несущие полезной информации и уже имеющиеся в интернете, аудио-видео. размещаем на сторонних хранилищах (яндеск-диск, ютуб, savepic.su), а здесь даем на них ссылки;
  • – подписывайте свои ссылки в сообщении, указав что вы там разместили;
  • При этом вы должны понимать следующее — УДАЛИВ из своего хранилища ФАЙЛ — его ССЫЛКА становится БЕСПОЛЕЗНОЙ и скорее всего, ваше сообщение будет полностью нами тоже удалено со страниц форума! Ни в коем случае не стоит поступать подобным образом. Старайтесь сохранять материалы, ссылки на которые вы публикуете на форуме;
  • – свои аватарки перед загрузкой предварительно делайте небольшими по размеру;
  • избегайте «оверквотинга» (избыточного цитирования) — не надо городить трехэтажные цитаты, со полными сообщениями и вложениями. Также не надо цитировать, если ваш ответ следует прямо за вопросом. Научитесь редактировать чужие цитаты, оставляя только краткую суть цитаты. Используйте цитирование только для связки сообщений, которые разорваны логически;
  • – если вы хотите уточнить-спросить-предложить что-либо «не для всех», а кому-то лично, не стоит писать об этом в общей теме, вроде «обращайся ко мне» и давать свои контакты. Там где больше двух — говорят вслух. Или делитесь со всеми этой информацией или пишите в личные сообщения (ЛС) «тет-а-тет»;
  • – также, если ваши мысли ушли далеко от тематики форума и вы хотите ими поделиться — «перекурите» в «курилке» 🙂 хоть Минздрав и предупреждает — наша «курилка» вашему здоровью не повредит! У нас также есть группа «вконтакте», интерактивный чат на чатоводе и скайп-группа — там у нас бывает многолюдно! 🙂

6. Не ленитесь поискать нужную вам информацию. Все зависит от вашего желания и стремления. Если у вас нет оных, вам уже никто не поможет! Перед тем как задать вопрос по работе вашего инструмента, изучите «Руководство пользователя» хотя бы первых три-пять страниц — это будет огромным прорывом к познанию неизведанного! 🙂 Используйте встроенный поиск на сайте!

7. Не ругайтесь между собой и нецензурно, не выясняйте на страницах форума отношений — в крайнем случае используйте для этого личные сообщения, да и. Лучше вообще не ругайтесь — мы не для этого здесь собрались. Да и нервные клетки не восстанавливаются! 🙂 Высказывайте свое мнение в вежливой форме! Не нужно «с пеной у рта» доказывать свою правоту, пытаясь унизить несогласного с вами оппонента, тем более, что все мы, по своей человеческой природе, склонны к заблуждениям. Администратор и Модератор — полноправные участники форума, и также могут иметь свою точку зрения на обсуждаемые на форуме темы!

Читайте также:  Мини твч своими руками

8. Ознакомиться с некоторыми нюансами по работе с сайтом, внести какие-то предложения, пожелания, замечания, а так же, если вы вдруг обнаружили неточности или ошибки — пишите в «Раздел предложений» в соответствующие темы. Мы стараемся для вас и сделаем всё, что в наших силах. Так же, если есть необходимость что-то подправить в ваших сообщениях — обращайтесь к Администратору или Модератору. Злостные нарушители этих несложных «Правил» будут ограничены в действиях на форуме и сайте.

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

Будьте доброжелательны и вам ответят тем же!

Источник

Как сделать удобный синтезатор своими руками

В детстве у меня было пианино, такое настоящее, советское, киллограм на 300. Мне нравилось на нем бренчать, а после окончания музыкальной школы даже кое-что играть. Пианино — это классно, аутентично, но совершенно не практично. А чтобы совсем прям для души, нужна еще и барабанная установка, пяток примочек к электрогитаре, кларнет, ситар и сэмпловые лупы…

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

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

Синтезатор ведь что из себя представляет? Большое устройство, с музыкальной клавиатурой, которое где-то должно занимать прилично места. В которое встроена акустика, а ведь у меня уже есть ресивер с колонками. В которое встроен плохенький ПК, а ведь у меня есть хороший ПК.

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

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

В голове сразу сложился план. Подключаем MIDI-клавиатуру к домашнему медиацентру на базе Raspberry Pi 3, где крутится программный синтезатор, позволяя в любое время любому желающему исполнить свой очередной шедевр. На таких MIDI-клавиатурах как правило есть набор регуляторов и дополнительных кнопок, которые программируются на различные эффекты или дополнительные музыкальные инструменты. Выглядит и звучит это очень круто!

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

Я не спец в создании музыки на ПК, поэтому было сложно искать пути реализации своей задумки. Информацию приходилось собирать по крупицам. Пазл постепенно стал складываться и получилось собрать работающее решение, которым с вами и делюсь. Как ни странно, но в стандартном дистрибутиве Raspbian/Debian нашлось все что нужно, даже не пришлось подключать внешние репозитории.

В качестве секвенсера (приложения, воспроизводящего MIDI-файлы) используется fluidsynth.
MIDI-клавиатура сразу обнаруживается через ALSA и доступна для подключения к секвенсеру.
Для воспроизведения звуков различных инструментов используются открытые базы сэмплов в формате SoundFont2. Для начала установим это все.

Подключаем MIDI-клавиатуру к Raspberry и запускаем секвенсер в режиме сервера:

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

Здесь нам важно запомнить номера клиентов клавиатуры и секвенсера, чтобы затем соединить их командой:

Теперь у нас все готово для игры на Yamaha Piano (это дефолтный инструмент). Почитайте мануал по fluidsynth, там есть много интересных команд, например, чтобы сменить инструмент на ударники или духовые, задать величину реверберации или хоруса.

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

Регистрируем демон для автозапуска:

Обратите внимание, теперь при старте секвенсеру передается конфигурационный файл (/home/osmc/midi-router), содержащий команды, превращающие нашу клавиатуру в настоящий синтезатор.

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

Так вот, мне необходимо замэпить коды событий от клавиатуры на разные инструменты, а коды от ручек на коды, которые понимает секвенсер. В fluidsynth это делается при помощи router. Именно эти команды и содержатся в конфигурационном файле.

Вот пример моего конфигурационного файла, с комментариями того, что он делает.

Чтобы узнать какие коды генерирует именно ваше устройство, необходимо воспользоваться этой утилитой:

Она слушает и выводит на консоль события с MIDI-клавиатуры. Нажмите кнопку или покрутите ручку и вы увидите тип, канал и код события. Вы можете запрограммировать свою клавиатуру таким образом, каким захотите, а не так, как это придумали инженеры, разработавшие конкретный синтезатор. За что большое спасибо разработчикам fluidsynth, alsa, SoundFont2, Raspberry и V-Mini.

Читайте также:  Костюм своими руками букет

Кстати, эта тема с DIY-синтезаторами нашла отражение в нескольких изобретениях, рекомендую к изучению: раз и два.

Источник

Делаем 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-команд у меня получился следующий:

// микросхема для выдачи +5V
//Пин подключен к ST_CP входу 74HC595
#define latchPin 11
//Пин подключен к SH_CP входу 74HC595
#define clockPin 13
//Пин подключен к DS входу 74HC595
#define dataPin 12

// микросхема для считывания напряжения +5V
#define latchPin_IN 9
#define clockPin_IN 10
#define dataPin_IN 8

// контакты, к которым подключены оставшиеся выводы разъема 1-16 с кнопками и светодиодами
#define BUT_OUT0 7
#define BUT_OUT1 6
#define BUT_OUT2 5
#define BUT_OUT3 4

byte but_out[4] = ;
// здесь будут храниться данные после опроса клавиатуры
byte kbd_in[5] = <0, 0, 0, 0, 0>;
byte kbd_in_new[5] = <0, 0, 0, 0, 0>;

// здесь будут храниться данные после опроса кнопок
byte btn_in[4] = <0, 0, 0, 0>;
byte btn_in_new[4] = <0, 0, 0, 0>;

// первые 3 бита — это светодиоды (1 — включено, 0 — выключено)
byte kbd_out = 0b11100000;

// инициализация портов
void init_electronics() <
// для микросхемы, которая генерирует +5V
//устанавливаем режим OUTPUT
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);

// для микросхемы, которая читает +5V
pinMode(latchPin_IN, OUTPUT);
pinMode(clockPin_IN, OUTPUT);
pinMode(dataPin_IN, INPUT);

// инициализация портов к которым подключены оставшиеся выводы разъемы с кнопками
for (byte i = 0; i > num) & 1;
tmp_new = (new_state >> num) & 1;
if ((tmp_old == 0) && (tmp_new == 0)) return 0;
if ((tmp_old == 0) && (tmp_new == 1)) return 1;
if ((tmp_old == 1) && (tmp_new == 1)) return 2;
if ((tmp_old == 1) && (tmp_new == 0)) return 3;
>

void loop() <
read_kbd_and_btn_state(btn_in_new, kbd_in_new);
for (byte i = 0; i Поделиться ссылкой:

Источник

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