// Copyright (c) 2017 Marc René Arns. All rights reserved. // Use of this source code is governed by a MIT // license that can be found in the LICENSE file. /* Package smfreader provides a reader of Standard MIDI Files (SMF). Usage import ( "gitlab.com/gomidi/midi/smf/smfreader" . "gitlab.com/gomidi/midi/midimessage/channel" // (Channel Messages) // you may also want to use these // gitlab.com/gomidi/midi/midimessage/meta (Meta Messages) // gitlab.com/gomidi/midi/midimessage/cc (Control Change Messages) // gitlab.com/gomidi/midi/midimessage/syscommon (System Common Messages) // gitlab.com/gomidi/midi/midimessage/sysex (System Exclusive Messages) ) var err error readMIDI := func (rd smf.Reader) { var m midi.Message for { m, err = rd.Read() // at the end smf.ErrFinished will be returned if err != nil { break } // deal with them based on a type switch switch msg := m.(type) { case NoteOn: fmt.Printf( "NoteOn at channel %v: key %v velocity: %v\n", msg.Channel(), // MIDI channels 1-16 correspond to msg.Channel 0-15 msg.Key(), msg.Velocity(), ) case NoteOff: ... } } } smfreader.ReadFile("file.mid", readMIDI) if err != smf.ErrFinished { // real error happened } */ package smfreader