Как сыграть кадиллак на пианино на клавиатуре
Пока производители телефонов меряются, у кого тоньше, программисты продолжают меряться, у кого короче.
Я тоже решил принять участие в этой специальной спонтанной олимпиаде кодерского мастерства, и вспомнил фразу одной моей подруги-музыканта: «Если уж играть, то на пианино». И решил: да будет так. Вместо игры напишу пианино. И написал.
Оговорюсь сразу: я ни разу не музыкант, моё музыкальное образование ограничивается десятком блатных песенок на расстроенной гитаре, так что, с терминологией могу и обязательно буду безбожно врать, но буду чертовски рад, если вы меня будете в этом поправлять.
Итак, начнем.
Клавиатура классического фортепиано состоит из 88 клавиш, покрывающих диапазон от A0 (Ля суб-контр-октавы, частота звучания 27.5 Гц) до C8 (До пятой октавы, частота 4186 Гц). Каждая октава на клавиатуре состоит из двенадцати нот:
До, До-диез, Ре, Ре-диез, Ми, Фа, Фа-диез, Соль, Соль-диез, Ля, Ля-диез/Си-бемоль, Си. Жирным выделены клавиши верхнего ряда, они на клавиатуре обычно бывают черного цвета.
Собственно, вот так выглядит одна октава:
Просто взглянув на таблицу частот звучания нот, становится очевидной закономерность: каждая последующая октава ровно вдвое выше предыдущей. Таким образом, можно сказать, что:
- N – название ноты;
- x — номер октавы (от 0 до 8);
- Nx, соответственно, частота звука, соответствующая ноте N октавы x;
Ах, да, мы же пишем не красиво, а коротко. Немного подсократим:
Уже использовано четыре строчки кода.
Давайте нарисуем клавиатуру
88 клавиш клавиатуры начинаются с ноты Ля (A0).
Соответственно, цикл будет такой: в цикле рисуем по 12 клавиш, и каждую вторую, четвертую, седьмую, девятую и одиннадцатую делаем черной. Каждой клавише присвоим id, соответствующей ноте, которую она должна воспроизводить при нажатии.
И вновь превратим нормальный код в нечитабельное говнище применим небольшую оптимизацию.
Мы израсходовали ещё 13 строк.
Научим пианино издавать звуки
Для этого нам понадобится Web Audio API, который на сей момент поддерживается только Webkit-based браузерами и Firefox.
Добавим в строку объявления глобальных переменных создание аудиоконтекста:
добавим обработчик нажатий на клавиши:
а саму функцию play изменим следующим образом:
Здесь мы создали осциллятор: osc = context.createOscillator(); , установили ему необходимую частоту звучания: osc.frequency.value = e.target.id[2] == 's' ? controctave[e.target.id[0] + 's'] * Math.pow(2, (e.target.id[1]|0) - 1) : controctave[e.target.id[0]] * Math.pow(2, (e.target.id[1]|0) - 1); (ну, мы же не следим за чистотой и опрятностью кода, не так ли?), установили форму сигнала: osc.type = "square"; (по умолчанию был синусоидальный) соединили его с устройством вывода звука: osc.connect(context.destination); , и дали команду начать воспроизведение: osc.start(0); . После этого нам необходимо заставить клавишу замолчать через некоторое время (500мс), а то она так и будет противно пищать. Для этого используем osc.stop(0) , завёрнутый в интервал. Обязательный элемент — osc.disconnect(context.destination); — отключаем осциллятор от устройства вывода.
Резюмируем: у нас получился вот такой нехитрый код:
В заключение хочу сказать, что теперь меня надо называть Страдивари XXI века Web Audio API — штука очень классная и интересная. Почитать про него можно, естественно, на MDN, могу посоветовать милый туториал на HTML5Rocks и ещё один забавный эксперимент.
А пианино вышло жутко примитивное, но экспериментом я всё равно доволен. Надеюсь, вам тоже было интересно.
Простейший сервис, который поможет выучить мелодические партии припевов любимых песен. Подойдёт для тех, кто не занимается музыкой всерьёз, но хочет удивить друзей знанием популярных мотивов. Все мелодии монофонические и могут играться одним-двумя пальцами.
Noteflight
Сервис для более продвинутой аудитории, знакомой с чтением нот с листа. Noteflight поможет записать свои мелодии на нотный стан, а также представит в подобном виде импортированные MIDI-файлы. Приобретение премиум-аккаунта (8 долларов в месяц или 50 долларов в год) позволит записывать музыку с MIDI-клавиатуры.
YouTube
Многие любят подбирать мелодии на слух, и им просто необходима сверка с оригиналом. Для этого существует множество YouTube-каналов с видео, где профессиональные пианисты играют известные композиции.
Peter PlutaX
Популярные композиции в Synthesia. Есть как простые мелодии, так и с пометкой Impossible, сыграть которые сможет только человек, уже неплохо владеющий инструментом.
Piano Tutorial Easy
На этом канале у каждой композиции есть два варианта исполнения: в обычном и медленном темпе. Кроме экрана Synthesia, здесь показываются и руки пианиста, что помогает правильно располагать пальцы на клавиатуре.
Программы
KaraKEYoke
Мультиплатформенная программа для обучения игре на клавишных с помощью MIDI-клавиатуры. Просто импортируйте файлы в формате MIDI или KAR, а KaraKEYoke покажет нотный стан, подсветит нужные клавиши и даже исполнит мелодию на вашем синтезаторе.
Synthesia
Synthesia поможет выучить мелодии любой сложности: от Jingle Bells до произведений классических композиторов. Отдельные режимы упражнений помогут воспроизводить композиции без ошибок и с соблюдением ритма. Полная версия программы за 29 долларов откроет функцию импорта своих мелодий.
Synthesia поддерживает ввод нот с помощью мышки или MIDI-клавиатуры. Есть версии для Windows и macOS, а также для Android-устройств и iPad.
23 ноты в секунду
Фокусы на фортепьяно
Настоящие пианисты обучили ИИ - теперь он может сыграть любую мелодию
Изначально виртуального пианиста рассматривали как помощника в обучении игре на пианино. Но в ходе разработки стало понятно, что ИИ способен на нечто большее. Правда, сперва "Massive Technologies" самой пришлось заняться его обучением. Для этого в офис компании в Хельсинки приглашали настоящих пианистов, их просили несколько часов играть для компьютера.
ИИ наблюдал и анализировал действия людей с помощью специальных устройств и сенсоров. Затем виртуального пианиста просили показать, чему он научился. Если робот где-то ошибался, инженеры Massive Technologies его поправляли и объясняли, как надо. ИИ тренировали до тех пор, пока он не научился играть на том же уровне, что и его преподаватели.
Бета-версию программы уже можно скачать в App Store.
Щенки
Бесплатный рояль для Ника Кейва
Знаменитый музыкант Ник Кейв поделился в своем блоге забавной историей, как он пытался получить новый рояль в подарок от спонсора (юмор и самоирония присутствуют в избытке).
В середине прошлого года Ник Кейв записал соло концерт в лондонском Александра-палас, где он исполнял песни, аккомпанируя себе на рояле. Организаторы выступления предоставили ему рояль итальянской марки Фациоли - элитный производитель музыкальных инструментов, выпускающий порядка 100 роялей в год, каждый стоимостью 250-300 тысяч долларов.
По признанию самого Ника, рояль Фациоли поразил его в самое сердце своим фантастическим мягким звучанием - это был лучший инструмент, на котором ему доводилось играть в жизни.
Далее, перевод прямой речи от имени Ника:
На следующем Зум созвоне с моим менеджером я поделился, насколько мне понравился рояль Фациоли. Я напомнил ему, что у меня дома уже больше 30 лет стоит все то же раздолбанное китайское пианино. В конце концов, мне уже 63 года, и я заслужил возможность играть на каком-то приличном инструменте. Рояль Фациоли это моя мечта, сказал я менеджеру.
Не знаю в курсе вы или нет, но известные музыканты получают бесплатные ништяки от разных компаний. Чем более ты известен, тем больше ништяков получаешь - от тебя только требуется надеть фирменную маечку, или там кепочку с логотипом компании. Я, наверное, единственный музыкант в мире, который никогда не рекламировал инструменты (это расходится с моим принципами). Но мне так понравился этот Фациоли.
Короче, я говорю менеджеру - настала пора продать душу. Позвони и достань мне этот Фациоли.
Менеджер отвечает: "Считай, что сделано!"
Итак, на следуюший день мой менеджер звонит на фабрику Фациоли, что находится в городе Сачиле, провинция Парденоне, неделеко от Венеции. Итальянская женщина поднимает трубку.
- Менеджер (М): Я представляю великого артиста Ника Кейва и мы бы хотели получить от вас бесплатный рояль Фациоли (ну или что-то типа того).
- Итальянская Женщина (ИЖ): L’acttore?
- М: Нет, Кейв. К-Е-Й-В.
- ИЖ: Кто еще такой Ник Кейв?
- М: Ну, это типа самый великий музыкант нашего времени. Один из столпов современной культуры, национальное сокровище. У него миллионы фанов по всему миру, включая Италию.
- ИЖ: Вы кто такой? Что вам надо?
- М: Ммм. бесплатное фортепиано.
- ИЖ: бросает трубку
Через пару дней я снова набираю менеджера по Зуму, и вижу, что он выглядит немного смущенным.
- Ну как там прошло с Фациоли? Достал мне бесплатный рояль?
- Ну. у них оказалась очень сложная процедура по дарению роялей за 200 тыс фунтов (20 млн рублей) людям, о которых они никогда не слышали.
- Чувак, твою мать, ты мой менеджер или что? Я влюбился в этот рояль!
Так что на следующий день он снова звонит на фабрику. Трубку поднимает та же самая итальянская женщина:
- М: Это снова менеджер Ника Кейва, я бы хотел поговорить с мистером Фациоли.
- М: Вы не понимаете, моя работа на кону!
- ИЖ: кладет трубку.
Так вот, я до сих пор жду того дня, когда перед моим домом остановится огромный грузовик с моим менеджером в пассажирском сидении. На нем футболка с нарисованным фортепиано, он смеется и радостно кричит: Фациоли! Пока этот день не наступит, мне остается мой старый китайский приятель, который смотрит на меня из угла комнаты.
P.S. (через пару дней). Друзья, оказалось, что многие из вас восприняли мой пост с чрезмерным энтузиазмом и стали бомбить фабрику Фациоли звонками и емэйлами с требованием выдать мне рояль. Я на самом деле тронут, но не стоило воспринимать все настолько всерьез, диалог моего менеджера был приукрашен для смеха. Люблю вас всех, но давайте больше не беспокоить замечательных людей из Фациоли.
P.P.S. Оказывается, сразу несколько из вас начали краудфандинговый сбор средств, чтобы купить мне Фациоли. Я безмерное польщен вашей щедростью и очень признателен за такое проявление любви, но, право же, не стоит этого делать. Как написал мне мой поклонник Майк из Бирмингема, "Купи уже себе сам этот гребаный рояль, ты сраный жмот". Майк прав, мне просто нужно купить этот инструмент самому.
Освоил инструмент :)
Несколько лет назад решил освоить игру на пианино. Сначала купил синтезатор, потом поменял его на электронное пианино.
Учился самостоятельно, без помощи спецов/репетиторов. Использовал только информацию из интернета.
Но тренировался, конечно, только в свободное время, которого было совсем немного( Иногда приходилось делать большие перерывы в обучении.
Хочу просто показать последнее из того, что изучил. Может, кому-то понравится :)
Nothing Else Matters
FLAGRANTIOR.ART - Панацея Музыканту / Что нового?
Привет, дорогой музыкант.
Пишу о том, чего накуролесил в своём проекте и вкратце снова опишу базовый функционал.
Для тех, кто впервые.
Это мой личный некоммерческий проект. Я ставлю своей целью предоставить музыкантам универсальный инструмент для изучения музыки, экспериментов и максимально быстрого вычисления данных, необходимых для написания композиции и импровизации, что, надеюсь, хоть немного приподнимет общее качество современной массовой музыки.
Для начала Вам необходимо выбрать тонику, делается это нажатием R [ROOT] над необходимой Вам нотой. Для перехода в обращение Вашей тональности нажимайте M [MODE].
Далее выставляется необходимая тональность путём переключения либо выбором из палитры SCALES.
Если у Вас струнный от одной до 12-и струн, то проставьте его строй в панель TUNE.
Теперь пишем аккомпанемент или мелодию, начнём с первого.
Доступные Вам аккорды отображаются в таблице. При наведении на заголовок столбца Вы увидите ступени, от которых берутся аккорды данного типа, это полезно, когда вы знаете универсальные гитарные формы. Они предоставлены в Хинте, как 6m, 5m и подобные, цифра обозначает струну, на которой расположена прима [начало аккорда].
Мелодию пишите по тому же принципу, опираясь на общеконтекстные тяготения самой мелодии и её взаимодействие с аккомпанементом.
Помните, что самое эффективное музыкальное выражение - это определённое чередование напряжений и разрешений, "дыхание мелодии".
Что такое напряжение и разрешение?
У вас есть стартовая нота, задающая контекст, далее Вы создаёте напряжение сыграв диссонансный [на сайте окрашенный тёмным тоном] интервал, а после, консонансный для первой ноты, то есть её саму, или её квинту, или кварту [в порядке убывания консонанса].
Вот Вы и разрешились. Учтите, что каждая нота создаёт новый микроконтекст.
Первое - отображение клавиш фортепьяно, в двух октавах.
При наведении так же отображается консонансы интервалов от базового тона.
И при наведении на тип аккорда возможные примы подсвечиваются здесь же.
А наведение на конкретный аккорд покажет Вам его ступени и их уровни консонанса от базового тона:
В печатном Хинте создал несколько нововведений.
Круг консонансов от базового тона [читать по часовой]:
И таблица частот нот в равномерно темперированном строе:
Так же загляните в раздел OSCILL:
Он позволит Вам экспериментировать и визуально наблюдать взаимодействие любых частот.
Что ж, на этом пока хватит.
Подписывайся на меня в Telegram: @FLAGRANTIOR
- там самые новые оповещения и в целом я. Там же и чат, где обсуждаю любые вопросы и просто общаюсь: @flagrantlychat
Не откажусь от финансовой помощи в развитие проекта, он полностью бесплатен для пользователей и не имеет реклам. )
Разве что я преподаю частные дсиатнционные уроки музыки, куда Вас и приглашаю.
И народ с Петербурга, погнали знакомиться и шорохаться ночами. :3
5-3-5-3-55-4-3-2-3-5
(Спят усталые игрушки, книжки спят)
2-3-2-3-5 5-2-5-2-5-4-3-2-1-3-5
(Одеяло и подушки ждут ребят)
2-3-2-3-5 5-5-6-5-3-3-6-5
(За день мы устали очень,)
1-1-4-5-6-6-5-4
(Скажем все спокойной ночи,)
3-3-4-3-5
(Глазки закрывай,)
4-3-1
(Баю-бай)
В траве сидел кузнечик
63 63 655
(В траве сидел кузнечик,)
53 53 566
(В траве сидел кузнечик,)
63 63 655
(Совсем как огуречик,)
535356
(Зелененький он был.)
Жили у бабуси два веселых гуся
543 266 543 266
(Жили у бабуси два веселых гуся)
466 435 53
(один серый другой белый)
543 211
(два веселых гуся)
Детcкая «Пoлька»
12 34 55 543
(Мишка c куклoй пляшут пoлечку)
44 432 135
(Пляшут пoлечку! Пocмoтpи!)
1234 55 543
(И в ладoши гpoмкo хлoпают,)
44 432 131
(Звoнкo хлoпают! Pаз! Два! Тpи!)
66 654 55 543
(Мишке веcелo, oчень веcелo)
44 432 135
(Машет Мишенька гoлoвoй!)
66 654
(Кукле веcелo)
55 543
(Oчень веcелo)
444 32 131
(Вдpуг cпoткнулиcь мы! Oй-oй-oй!)
«Happy birthday»
1 1 2 1 4 3
1 1 2 1 5 4
1 1 1 6 4 3 2
6 6 6 4 5 4
«Пуcть вcегда будет coлнце»
5 5 8 9 10 9 8
(Пусть всегда будет солнце,)
5 5 8 9 10 10
(Пусть всегда будет небо,)
9 5 5 9 10 11 12
(Пусть всегда будет мама,)
9 9 10 11 8 9
(Пусть всегда буду я.)
Русская наpoдная «Вo cаду ли в oгopoде»
6 6 5 5 4 4 4 5
Вo cаду ли, в oгopoде
6 6 5 5 4 4
Девица гуляла -
3 3 2 2 1 1 1 2 (или 5 4)
Невеличка, кpуглoличка,
3 3 2 2 1 1
Pумянoе личкo.
8 6 9 8 5 7 6 5 4
Oт улыбки хмуpый день cветлей
6 8 9 9 9 10 12 11 10 9 11 8
Oт улыбки в небе pадуга пpocнетcя
9 10 11 10 9 6 8 7 9
Пoделиcь улыбкoю cвoей
10 9 11 8 10 99 8 5 6 5 4
И oна к тебе не pаз еще веpнетcя
Чунга-чанга
1355 54565
8322 23453
1355 54565
8322 23451
5876 5676
5665 5665
5665 5665
67 66765
5876 5676
5665 5665
5665 5665
43211
Читайте также: