1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wscats-piano

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Когда речь идёт о полутонах, например, полутон A# — это A-диез, также существуют C-бемоль, F-бемоль и т.д.

Есть ещё средние тона (A4), высокие тона (A5) и двойные высокие тона (A6). В таблице можно увидеть более чёткую структуру. Если мы хотим сыграть средний тон A4, нам нужно нажать клавишу 6 на клавиатуре. Чтобы сыграть высокий тон A5, нужно использовать комбинацию клавиш Option+6. Нам нужно только один раз понять логику, чтобы знать, какой клавише соответствует каждый музыкальный знак.

Октава C2 D2 E2 F2 G2 A2 B2
Shift + (1–7) Shift+1 Shift+2 Shift+3 Shift+4 Shift+5 Shift+6 Shift+7
Октава C3 D3 E3 F3 G3 A3 B3
Ctrl + (1–7) Ctrl+1 Ctrl+2 Ctrl+3 Ctrl+4 Ctrl+5 Ctrl+6 Ctrl+7
Средний тон C4 D4 E4 F4 G4 A4 B4
Цифровая клавиатура 1–7 1 2 3 4 5 6 7
Высокий тон C5 D5 E5 F5 G5 A5 B5
Option + (1–7) Option+1 Option+2 Option+3 Option+4 Option+5 Option+6 Option+7
Двойной высокий тон C6 D6 E6 F6 G6 A6 B6
Command + (1–7) Command+1 Command+2 Command+3 Command+4 Command+5 Command+6 Command+7
Музыкальный знак Do Re Mi Fa Sol La Si

Выше представлена таблица всех тонов, здесь прилагается таблица полутонов:

Октава C#2 D#2 F#2 G#2 A#2
Shift+ Shift+q Shift+w Shift+e Shift+r Shift+t
Низкий полутон C#3 D#3 F#3 G#3 A#3
Ctrl+ Ctrl+q Ctrl+w Ctrl+e Ctrl+r Ctrl+t
Средний полутон C#4 D#4 F#4 G#4 A#4
Буквенная клавиатура q w e r t
Высокий полутон C#5 D#5 F#5 G#5 A#5
Option+ Option+q Option+w Option+e Option+r Option+t
Двойной высокий полутон C#6 D#6 F#6 G#6 A#6
Command+ Command+q Command+w Command+e Command+r Command+t

Теперь нам нужно всего лишь использовать 5 букв (q, w, e, r, t) + 4 функциональных клавиши (Shift, Control, Option и Command) + 7 цифровых клавиш (1, 2, 3, 4, 5, 6, 7), всего 16 клавиш, чтобы сыграть 60 отдельных нот (35 полных тонов и 25 полутонов). На самом деле, для простой фортепианной пьесы не требуется так много, достаточно нескольких простых аккордов.

Создание интерфейса фортепиано

Имея предварительную подготовку, описанную выше, теперь мы можем преобразовать её в наши знания программирования. Мы будем использовать HTML для создания интерфейса нашего фортепиано. Мы можем обратиться к ресурсам codepen и codesandbox, чтобы найти вдохновение. Здесь я использовал flex-верстку в сочетании с тенями и переполнением для реализации чёрных и белых клавиш фортепиано, используя синтаксис JSX React для перебора и рендеринга чёрных и белых клавиш.

<div class="piano">
  {this.data.pianoKeys.map((item)=>{return(
  <div class="piano-key">
    <div data-type="white" ref={e=>{ this[item.white.name] = e }} class="piano-key__white"
      onClick={this.playNote.bind(this,item.white.name)} data-key={item.white.keyCode}
      data-note={item.white.name}>
      <span class="piano-note">{item.white.name}</span>
      <audio preload="auto" src={this.data.notes[item.white.name]} hidden='true' data-note={item.white.name}
        class='audioEle'></audio>
    </div>
    <div data-type="black" ref={e=>{ this[item.black.name] = e }} style={{
      display: item.black.name ? 'block' : 'none'
    }} class="piano-key__black" onClick={this.playNote.bind(this,item.black.name)} data-key={item.black.keyCode}
      data-note={item.black.name}>
      <span class="piano-note" style="color:#fff">{item.black.name}</span>
      <audio preload="auto" src={this.data.notes[item.white.name]} hidden='true' data-note={item.white.name}
        class='audioEle'></audio>
    </div>
  </div>
  )})}
</div>

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

.piano {
  margin: 0 200px;
  background: linear-gradient(-65deg, #000, #222, #000, #666, #222 75%);
  border-top: .8rem solid #282828;
  box-shadow: inset 0 -1px 1px hsla(0, 0%, 100%, .5), inset -0.4rem 0.4rem #282828;
  display: flex;
  height: 80vh;
  height: 20vh;
  justify-content: center;
  overflow: hidden;
  padding-bottom: 2%;
  padding-left: 2.5%;
  padding-right: 2.5%;
}
.piano-key {
  color: blue;
  flex: 1;
  margin: 0 .1rem;
  max-width: 8.8rem;
  position: relative;
}

.piano-key__white {
  display: flex;
  flex-direction: column-reverse;
  background: linear-gradient(-30deg, #f8f8f8, #fff);
  box-shadow: inset 0 1px 0 #fff, inset 0 -1px 0 #fff, inset 1px 0 0 #fff, inset -1px 0 0 #fff, 0 4px 3px rgba(0, 0, 0, .7), inset 0 -1px 0 #fff, inset 1px 0 0 #fff, inset -1px -1px 15px rgba(0, 0, 0, .5), -3px 4px 6px rgba(0, 0, 0, .5);
  height: 100%;
  position: relative;
}

.piano-key__black {
  display: flex;
  flex-direction: column-reverse;
  background: linear-gradient(-20deg, #222, #000, #222);
  box-shadow: inset 0 -1px 2px hsla(0, 0%, 100%, .4), 0 2px 3px rgba(0, 0, 0, .4);
  border-width: .2rem .4rem 1.2rem;
  border-style: solid;
  border-color: #666 #222 #111 #555;
  height: 60%;
  left: 100%;
  position: absolute;
  transform: translateX(-50%);
  top: 0;
``` 3, 4, 5, 5, 5, 6, 7, Option + 1…
Option + 1, Option + 1, 7, Option + 2, 6, 5, 5, 5, Option + 2, Option + 1, Option + 1, Option + 3, Option + 3…
Option + 1, Option + 2, Option + 3, Option + 3, Option + 4, Option + 3, Option + 2, Option + 3, Option + 1, Option + 1, 6, 6,
6, 7, Option + 1, Option + 2, Option + 2, Option + 1, 7, 6, Option + 4, Option + 2…
// Вместе росли…
3, 5, Option + 1, Option + 3, Option + 3., Option + 4, Option + 2…, Option + 2, Option + 5, 7, Option + 1…,
Option + 3, Option + 4, Option + 5, Option + 1, Option + 1, Option + 2., Option + 1, Option + 1
// В коридоре…
3, 4,
5, 5, 5, 6, 7, Option + 1…
Option + 1, Option + 1, 7, Option + 2, 6, 5, 5, 5, Option + 2, Option + 1, Option + 1, Option + 3, Option + 3…
Option + 1, Option + 2, Option + 3, Option + 3, Option + 4, Option + 3, Option + 2, Option + 3, Option + 1, Option + 1, 6, 6,
6, 7, Option + 1, Option + 2, Option + 2, Option + 1, 7, 6, Option + 4, Option + 2
// Вместе росли…
3, 5, Option + 1, Option + 3, Option + 3., Option + 4, Option + 2…, Option + 2, Option + 5, 7, Option + 1…
Option + 3, Option + 4, Option + 5, Option + 1, Option + 1, Option + 2., Option + 1, Option + 1
// Единственное упрямство…
Option + 3, Option + 4, Option + 5, Option + 1, Option + 1, Option + 2., Option + 1, Option + 1
// Вместе росли…
Option + 6, Option + 5, Option + 3, Option + 2, Option + 1, Option + 3., Option + 4, Option + 2…
Option + 6, Option + 5, 7, Option + 1…
// С тобой не закончишь…
Option + 3, Option + 4, Option + 5, Option + 1, Option + 1, Option + 2, Option + 3, Option + 3…
// А я уже не могу различить…
3, 5, Option + 1, Option + 3, Option + 3., Option + 2, Option + 2, Option + 2… Option + 2, Option + 5, 7, Option + 2, Option + 1, Option + 1
// Или пропущенная любовь…
Option + 3, Option + 4, Option + 5, Option + 1, Option + 1, Option + 2., Option + 1, Option + 1. **Лунная соната**

Мы можем сыграть ещё одну знакомую мелодию для фортепиано  «Лунную сонату».
```js
Ctrl+5, 1, 3, 5, 1, Ctrl+7, 3, 5, 5, 6, 7, Option+1, 6, 5, 3, 2, 1, 1, 1, 3, 2, 1, 1, 1, 2, 3, 2, 1,

Ctrl+6, 2,

3, 2, Ctrl+5, 1, 3, 5, 1, Ctrl+7, 3, 5, 5, 6, 7, Option+1, 6, 5, 3, 2, 1, 1, 1, 3, 2, 1, 1, 1, 2, 3, 2, 1,

Ctrl+6, 2, 3, 2,

Ctrl+5, 1, 3, 5, 1, Ctrl+7, 3, 5, 5, 6, 7, Option+1, 6, 5, 3, 2, 1, 1, 1, 3, 2, 1, 1, 1, 2, 3, 2,

1, Ctrl+6,

2, 3, 2, 3, 5, 3, 2, 1, 5, Ctrl+7, Ctrl+6, Ctrl+7, Ctrl+6, Ctrl+7, Ctrl+6, Ctrl+5, 3, 5, 3, 2, 1, 5, Ctrl+7, Ctrl+6, Ctrl+7,

1, 1, 1, 2,

3, 2, Ctrl+5, 1, 3, 5, 1, Ctrl+7, 3, 5, 5, 6, 7, Option+1, 6, 5, 3, 2, 1, 1, 1, 3, 2, 1, 1, 1, 2, 3,

2, 1, Ctrl+6,

2, 3, 2, Ctrl+5, 1, 3, 5, 1, Ctrl+7, 3, 5, 5, 6, 7, Option+1, 6, 5, 3, 2, 1, 1, 1, 3, 2, 1, 1, 1,

2, 3, 2, 1, Ctrl+6, 2, 3, 2, 3, 5, 3, 2, 1, 5, Ctrl+7, Ctrl+6, Ctrl+7, Ctrl+6, Ctrl+7, Ctrl+6, Ctrl+5, 3, 5, 3, 2, 1, 5,

Ctrl+7, Ctrl+6, Ctrl+7,

1, 1, 1, 2, 3, 2, Ctrl+5, 1, 3, 5, 1, Ctrl+7, 3, 5, 5, 6, 7, Option+1, 6, 5, 3, 2, 1, 1, 1, 3, 2, 1, 1, 1,

2, 3, 2, Ctrl+6, Ctrl+7, 1, 2, 1

Contributing

Спасибо за музыку и программирование! Также выражаем уважение всем разработчикам, которые борются с 996-м рабочим графиком. Мы приглашаем вас делиться кодом, предлагать PR, обсуждать проблемы в issue или высказывать свои идеи. Музыка никогда не подводила людей, как поётся в песне Leehom Wang:

Если мир слишком опасен, только музыка безопасна, возьми меня с собой в сон, пусть слова станут реальностью! — «Наша песня»

Участники проекта

Этот проект существует благодаря всем людям, которые вносят свой вклад.

Финансовая поддержка


В запросе был текст на китайском языке, который не удалось перевести. В ответе он также оставлен без перевода. Спонсоры

Станьте финансовым спонсором и помогите нам поддерживать наше сообщество.

Частные лица

Организации

Поддержите этот проект своей организацией. Ваш логотип будет отображаться здесь с ссылкой на ваш веб-сайт.










Лицензия

Omi Piano выпущен под лицензией MIT

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MulanPSL-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/wscats-piano.git
git@api.gitlife.ru:oschina-mirror/wscats-piano.git
oschina-mirror
wscats-piano
wscats-piano
master