• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

EasyMIDI: 音频文件处理库

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

EasyMIDI

开源软件地址:

https://gitee.com/shirdonl/EasyMIDI

开源软件介绍:

EasyMidi

EasyMidi is a simple and reliable library for working with standard midi file (SMF).

Installing

A 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 Use

Example 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

  • Go - The Go Programming Language

Authors

License

This project is licensed under the MIT License - see the LICENSE file for details


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap