在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:EasyMIDI开源软件地址:https://gitee.com/shirdonl/EasyMIDI开源软件介绍:EasyMidiEasyMidi is a simple and reliable library for working with standard midi file (SMF). InstallingA step by step series of examples that tell you have to get a development env running Get repository go get gitee.com/shirdonl/EasyMIDI/... How To UseExample 1. Read and get data from midi file.package mainimport ( "bufio" "fmt" "os" "gitee.com/shirdonl/EasyMIDI/smfio")func main() { // Open test midi file file, _ := os.Open("./Test_-_test1.mid") defer file.Close() // Read and save midi to smf.MIDIFile struct midi, err := smfio.Read(bufio.NewReader(file)) if err != nil { fmt.Println(err) } // Get zero track track := midi.GetTrack(0) // Print number of midi tracks fmt.Println(midi.GetTracksNum()) // Get all midi events via iterator iter := track.GetIterator() for iter.MoveNext() { fmt.Println(iter.GetValue()) }} Example 2. Create and write one midi track into new midi file.Created midi file from scratch. In current example output midi must contains one note. package mainimport ( "bufio" "log" "os" "gitee.com/shirdonl/EasyMIDI/smf" "gitee.com/shirdonl/EasyMIDI/smfio")func main() { // Create division division, err := smf.NewDivision(960, smf.NOSMTPE) checkErr(err) // Create new midi struct midi, err := smf.NewSMF(smf.Format0, *division) checkErr(err) // Create track struct track := &smf.Track{} // Add track to new midi struct err = midi.AddTrack(track) checkErr(err) // Create some midi and meta events midiEventOne, err := smf.NewMIDIEvent(0, smf.NoteOnStatus, 0x00, 0x30, 0x50) checkErr(err) midiEventTwo, err := smf.NewMIDIEvent(10000, smf.NoteOnStatus, 0x00, 0x30, 0x00) checkErr(err) metaEventOne, err := smf.NewMetaEvent(0, smf.MetaEndOfTrack, []byte{}) checkErr(err) // Add created events to track err = track.AddEvent(midiEventOne) checkErr(err) err = track.AddEvent(midiEventTwo) checkErr(err) err = track.AddEvent(metaEventOne) checkErr(err) // Save to new midi source file outputMidi, err := os.Create("outputMidi.mid") checkErr(err) defer outputMidi.Close() // Create buffering stream writer := bufio.NewWriter(outputMidi) smfio.Write(writer, midi) writer.Flush()}func checkErr(err error) { if err != nil { log.Fatalln(err) }} Built With
Authors
LicenseThis project is licensed under the MIT License - see the LICENSE file for details |
请发表评论