usb/midi: add definition of MIDI note number
Этот коммит содержится в:
		
							родитель
							
								
									2ed7523001
								
							
						
					
					
						коммит
						a4b22bd125
					
				
					 3 изменённых файлов: 120 добавлений и 9 удалений
				
			
		| 
						 | 
					@ -7,6 +7,9 @@ import (
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Try it easily by opening the following site in Chrome.
 | 
				
			||||||
 | 
					// https://www.onlinemusictools.com/kb/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func main() {
 | 
					func main() {
 | 
				
			||||||
	led := machine.LED
 | 
						led := machine.LED
 | 
				
			||||||
	led.Configure(machine.PinConfig{Mode: machine.PinOutput})
 | 
						led.Configure(machine.PinConfig{Mode: machine.PinOutput})
 | 
				
			||||||
| 
						 | 
					@ -24,12 +27,12 @@ func main() {
 | 
				
			||||||
	prev := true
 | 
						prev := true
 | 
				
			||||||
	chords := []struct {
 | 
						chords := []struct {
 | 
				
			||||||
		name string
 | 
							name string
 | 
				
			||||||
		keys []byte
 | 
							keys []midi.Note
 | 
				
			||||||
	}{
 | 
						}{
 | 
				
			||||||
		{name: "C ", keys: []byte{60, 64, 67}},
 | 
							{name: "C ", keys: []midi.Note{midi.C4, midi.E4, midi.G4}},
 | 
				
			||||||
		{name: "G ", keys: []byte{55, 59, 62}},
 | 
							{name: "G ", keys: []midi.Note{midi.G3, midi.B3, midi.D4}},
 | 
				
			||||||
		{name: "Am", keys: []byte{57, 60, 64}},
 | 
							{name: "Am", keys: []midi.Note{midi.A3, midi.C4, midi.E4}},
 | 
				
			||||||
		{name: "F ", keys: []byte{53, 57, 60}},
 | 
							{name: "F ", keys: []midi.Note{midi.F3, midi.A3, midi.C4}},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	index := 0
 | 
						index := 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,14 +1,14 @@
 | 
				
			||||||
package midi
 | 
					package midi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NoteOn sends a note on message.
 | 
					// NoteOn sends a note on message.
 | 
				
			||||||
func (m *midi) NoteOn(cable, channel, note, velocity uint8) {
 | 
					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), note&0x7f, velocity&0x7f
 | 
						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[:])
 | 
						m.Write(m.msg[:])
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NoteOff sends a note off message.
 | 
					// NoteOff sends a note off message.
 | 
				
			||||||
func (m *midi) NoteOff(cable, channel, note, velocity uint8) {
 | 
					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), note&0x7f, velocity&0x7f
 | 
						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[:])
 | 
						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
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
		Загрузка…
	
	Создание таблицы
		
		Сослаться в новой задаче