Skip to content

Commit bdf6782

Browse files
committed
implemented Close
1 parent dd30ddb commit bdf6782

File tree

2 files changed

+20
-16
lines changed

2 files changed

+20
-16
lines changed

midi_linux_test.go renamed to launchpad_test.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,29 @@ func TestLaunchpad(t *testing.T) {
1414
// For the launchpad MIDI reference, see https://d19ulaff0trnck.cloudfront.net/sites/default/files/novation/downloads/4080/launchpad-programmers-reference.pdf
1515
// t.SkipNow()
1616

17-
conn, err := Open("hw:1,0,0")
17+
device, err := Open("hw:1,0,0")
1818
if err != nil {
1919
t.Fatal(err)
2020
}
21-
if _, err := conn.Write([]byte{0xB0, 0x00, 0x00}); err != nil {
21+
if _, err := device.Write([]byte{0xB0, 0x00, 0x00}); err != nil {
2222
t.Fatal(err)
2323
}
24-
if _, err := conn.Write([]byte{0xB0, 0x00, 0x7D}); err != nil {
24+
if _, err := device.Write([]byte{0xB0, 0x00, 0x7D}); err != nil {
2525
t.Fatal(err)
2626
}
2727

2828
time.Sleep(2 * time.Second)
2929

30-
if _, err := conn.Write([]byte{0xB0, 0x00, 0x00}); err != nil {
30+
if _, err := device.Write([]byte{0xB0, 0x00, 0x00}); err != nil {
3131
t.Fatal(err)
3232
}
3333

3434
// Test hangs here until you send some MIDI data!
3535
buf := make([]byte, 3)
36-
if _, err := conn.Read(buf); err != nil {
36+
if _, err := device.Read(buf); err != nil {
37+
t.Fatal(err)
38+
}
39+
if err := device.Close(); err != nil {
3740
t.Fatal(err)
3841
}
3942
}

midi.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,31 +8,32 @@ package midi
88
// #cgo linux LDFLAGS: -lasound
99
import "C"
1010

11-
// Midi provides an interface for raw MIDI devices.
12-
type Midi struct {
11+
// Device provides an interface for MIDI devices.
12+
type Device struct {
1313
conn C.Midi
1414
buf []byte
1515
}
1616

1717
// Open opens a MIDI device.
18-
func Open(device string) (*Midi, error) {
19-
conn := C.Midi_open(C.CString(device))
20-
return &Midi{conn: conn}, nil
18+
func Open(deviceID string) (*Device, error) {
19+
conn := C.Midi_open(C.CString(deviceID))
20+
return &Device{conn: conn}, nil
2121
}
2222

2323
// Close closes the MIDI connection.
24-
func (midi *Midi) Close() error {
25-
return nil
24+
func (d *Device) Close() error {
25+
_, err := C.Midi_close(d.conn)
26+
return err
2627
}
2728

2829
// Read reads data from a MIDI device.
29-
func (midi *Midi) Read(buf []byte) (int, error) {
30-
n, err := C.Midi_read(midi.conn, C.CString(string(buf)), C.size_t(len(buf)))
30+
func (d *Device) Read(buf []byte) (int, error) {
31+
n, err := C.Midi_read(d.conn, C.CString(string(buf)), C.size_t(len(buf)))
3132
return int(n), err
3233
}
3334

3435
// Write writes data to a MIDI device.
35-
func (midi *Midi) Write(buf []byte) (int, error) {
36-
n, err := C.Midi_write(midi.conn, C.CString(string(buf)), C.size_t(len(buf)))
36+
func (d *Device) Write(buf []byte) (int, error) {
37+
n, err := C.Midi_write(d.conn, C.CString(string(buf)), C.size_t(len(buf)))
3738
return int(n), err
3839
}

0 commit comments

Comments
 (0)