usb/midi: add definition of MIDI note number
Этот коммит содержится в:
родитель
2ed7523001
коммит
a4b22bd125
3 изменённых файлов: 120 добавлений и 9 удалений
|
@ -7,6 +7,9 @@ import (
|
|||
"time"
|
||||
)
|
||||
|
||||
// Try it easily by opening the following site in Chrome.
|
||||
// https://www.onlinemusictools.com/kb/
|
||||
|
||||
func main() {
|
||||
led := machine.LED
|
||||
led.Configure(machine.PinConfig{Mode: machine.PinOutput})
|
||||
|
@ -24,12 +27,12 @@ func main() {
|
|||
prev := true
|
||||
chords := []struct {
|
||||
name string
|
||||
keys []byte
|
||||
keys []midi.Note
|
||||
}{
|
||||
{name: "C ", keys: []byte{60, 64, 67}},
|
||||
{name: "G ", keys: []byte{55, 59, 62}},
|
||||
{name: "Am", keys: []byte{57, 60, 64}},
|
||||
{name: "F ", keys: []byte{53, 57, 60}},
|
||||
{name: "C ", keys: []midi.Note{midi.C4, midi.E4, midi.G4}},
|
||||
{name: "G ", keys: []midi.Note{midi.G3, midi.B3, midi.D4}},
|
||||
{name: "Am", keys: []midi.Note{midi.A3, midi.C4, midi.E4}},
|
||||
{name: "F ", keys: []midi.Note{midi.F3, midi.A3, midi.C4}},
|
||||
}
|
||||
index := 0
|
||||
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
package midi
|
||||
|
||||
// NoteOn sends a note on message.
|
||||
func (m *midi) NoteOn(cable, channel, note, velocity uint8) {
|
||||
m.msg[0], m.msg[1], m.msg[2], m.msg[3] = (cable&0xf<<4)|0x9, 0x90|(channel&0xf), note&0x7f, velocity&0x7f
|
||||
func (m *midi) NoteOn(cable, channel uint8, note Note, velocity uint8) {
|
||||
m.msg[0], m.msg[1], m.msg[2], m.msg[3] = (cable&0xf<<4)|0x9, 0x90|(channel&0xf), byte(note)&0x7f, velocity&0x7f
|
||||
m.Write(m.msg[:])
|
||||
}
|
||||
|
||||
// NoteOff sends a note off message.
|
||||
func (m *midi) NoteOff(cable, channel, note, velocity uint8) {
|
||||
m.msg[0], m.msg[1], m.msg[2], m.msg[3] = (cable&0xf<<4)|0x8, 0x80|(channel&0xf), note&0x7f, velocity&0x7f
|
||||
func (m *midi) NoteOff(cable, channel uint8, note Note, velocity uint8) {
|
||||
m.msg[0], m.msg[1], m.msg[2], m.msg[3] = (cable&0xf<<4)|0x8, 0x80|(channel&0xf), byte(note)&0x7f, velocity&0x7f
|
||||
m.Write(m.msg[:])
|
||||
}
|
||||
|
||||
|
|
108
src/machine/usb/midi/notes.go
Обычный файл
108
src/machine/usb/midi/notes.go
Обычный файл
|
@ -0,0 +1,108 @@
|
|||
package midi
|
||||
|
||||
// Note represents a MIDI note number. For example, Note(69) is A4 or 440Hz.
|
||||
type Note uint8
|
||||
|
||||
// Define all the notes in a format similar to the Tone library in the Arduino
|
||||
// IDE.
|
||||
const (
|
||||
A0 Note = iota + 21 // 27.5Hz
|
||||
AS0
|
||||
B0
|
||||
C1
|
||||
CS1
|
||||
D1
|
||||
DS1
|
||||
E1
|
||||
F1
|
||||
FS1
|
||||
G1
|
||||
GS1
|
||||
A1 // 55Hz
|
||||
AS1
|
||||
B1
|
||||
C2
|
||||
CS2
|
||||
D2
|
||||
DS2
|
||||
E2
|
||||
F2
|
||||
FS2
|
||||
G2
|
||||
GS2
|
||||
A2 // 110Hz
|
||||
AS2
|
||||
B2
|
||||
C3
|
||||
CS3
|
||||
D3
|
||||
DS3
|
||||
E3
|
||||
F3
|
||||
FS3
|
||||
G3
|
||||
GS3
|
||||
A3 // 220Hz
|
||||
AS3
|
||||
B3
|
||||
C4
|
||||
CS4
|
||||
D4
|
||||
DS4
|
||||
E4
|
||||
F4
|
||||
FS4
|
||||
G4
|
||||
GS4
|
||||
A4 // 440Hz
|
||||
AS4
|
||||
B4
|
||||
C5
|
||||
CS5
|
||||
D5
|
||||
DS5
|
||||
E5
|
||||
F5
|
||||
FS5
|
||||
G5
|
||||
GS5
|
||||
A5 // 880Hz
|
||||
AS5
|
||||
B5
|
||||
C6
|
||||
CS6
|
||||
D6
|
||||
DS6
|
||||
E6
|
||||
F6
|
||||
FS6
|
||||
G6
|
||||
GS6
|
||||
A6 // 1760Hz
|
||||
AS6
|
||||
B6
|
||||
C7
|
||||
CS7
|
||||
D7
|
||||
DS7
|
||||
E7
|
||||
F7
|
||||
FS7
|
||||
G7
|
||||
GS7
|
||||
A7 // 3520Hz
|
||||
AS7
|
||||
B7
|
||||
C8
|
||||
CS8
|
||||
D8
|
||||
DS8
|
||||
E8
|
||||
F8
|
||||
FS8
|
||||
G8
|
||||
GS8
|
||||
A8 // 7040Hz
|
||||
AS8
|
||||
B8
|
||||
)
|
Загрузка…
Создание таблицы
Сослаться в новой задаче