c语言读取midi文件举例子,c# – 使用NAudio从MIDI文件中读取音符
任务是使用NAudio库从MIDI文件中获取所有音符和时间.到目前为止,我从文件中获取所有笔记,但我无法得到他们的时间.
Note noteOn = new Note(); //custom class Note
MidiFile midi = new MidiFile(open.FileName);
List tempo = new List();
for (int i = 0; i < midi.Events.Count(); i++)
{
foreach (MidiEvent note in midi.Events[i])
{
TempoEvent tempoE;
try { tempoE = (TempoEvent)note; tempo.Add(tempoE); }
catch { }
if (note.CommandCode == MidiCommandCode.NoteOn)
{
var t_note = ( NoteOnEvent)note;
var noteOffEvent = t_note.OffEvent;
noteOn.NoteName.Add(t_note.NoteName);
noteOn.NoteNumber.Add(t_note.NoteNumber);
noteOn.NoteVelocity.Add(t_note.Velocity);
noteOn.NoteLenght.Add(t_note.NoteLength);
double d = (t_note.AbsoluteTime / midi.DeltaTicksPerQuarterNote) * tempo[tempo.Count() - 1].Tempo;
noteOn.StartTime.Add(TimeSpan.FromSeconds(d));
}
}
}
问题:
1)只获取NoteOnEvents中的注释列表?如果我理解正确,每个音符都有’start’和’end’,start由NoteOnEvent定义,’end’由NoteOffEvent定义.如果我查看两个事件(NoteOn和NoteOff),我会得到重复的注释.我对吗?
2)如何记录笔记的时间?根据this post,我得到一些值,但似乎第一个音符的时间是正确的,但其他人没有.同样在这篇文章中,有一条评论说计算时间的公式必须是:
((note.AbsTime - lastTempoEvent.AbsTime) / midi.ticksPerQuarterNote) * tempo + lastTempoEvent.RealTime.
我不知道参数lastTempoEvent.RealTime和tempo.这是最后一次节奏活动的节奏还是?
3)读取MIDI文件非常慢,对于较小的文件,它可以,但对于大文件则没有.这个小文件有~150 NoteOnEvents,这个更大的文件有~1250 NoteOnEvents,这不是那么“重”.为什么这么慢?
c语言读取midi文件举例子,c# – 使用NAudio从MIDI文件中读取音符相关推荐
- c语言读取midi文件举例子,使用AudioKit从MIDI文件中读取音符
Tony Fung Choi Fung 8 ios swift audiokit 我正在尝试构建一个从midi文件中呈现音符的音序器. 目前我正在使用AudioKit进行音乐数据处理.想知道如何使用A ...
- java jar包资源文件_深入jar包:从jar包中读取资源文件
我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了.看看 ...
- java stream 多次读取_多次从具有大量数据的Java InputStream中读取
我想知道什么是从Java InputStream多次读取字节并在流很大时仍然有效的最佳方法. 假设我有以下代码: public void handleBytes(InputStream in) { d ...
- c语言读取midi文件举例子,从MIDI文件获取音符数据
Nik Reisman - 对不起,但我不同意你......在C#中解析midi,C++是大约400行代码的东西......它没有什么困难,也没有困难. 在简短的描述解析器将如何工作: 1)打开mid ...
- 用python的pandas打开csv文件_使用CSV模块和Pandas在Python中读取和写入CSV文件
什么是CSV文件? CSV文件是一种纯文本文件,其使用特定的结构来排列表格数据.CSV是一种紧凑,简单且通用的数据交换通用格式.许多在线服务允许其用户将网站中的表格数据导出到CSV文件中.CSV文件将 ...
- java 读取webapp文件_在Java Webapp和Java Normal应用中读取公共外部属性文件
但是,我们有以下一些特殊要求, Webapp将部署到tomcat. 格式为.jar的普通Java应用程序将放在/ myapp文件夹下 myappConfig.property文件将放置在/ myapp ...
- python打开文件报错无效序列_如何在python中读取fasta文件?
我正在尝试读取FASTA文件,然后查找特定的 motif(string)并打印出序列和次数. A FASTA file只是一系列序列(字符串),以标题行开头,标题或新序列的开头是">& ...
- python读取文件夹下所有图像 预处理_在python中读取预处理的cr2原始图像数据
您可以使用rawkit来获取这些数据,但是,您将无法使用实际的rawkit模块(它为处理原始图像提供了更高级别的api).相反,您将希望主要使用libraw模块,该模块允许您访问底层LibRaw ap ...
- 博图如何读取mysql数据_博途使用小结:从SQL中读取数据并给变量赋值
1.建立内部变量TON_Report,VF01_Runtime,JC01_Runtime,VF05_Runtime,数据类型为Real,长度为2 2.建立查询按钮,点击查询按钮时读取SQL中的数据并赋 ...
最新文章
- java加载图片到缓存_Android实现图片异步加载并缓存到本地
- nginx总结二(nginx的启动停止以及版本平滑升级)
- 【机器学习】朴素贝叶斯代码练习
- 使用 python 操作 redis
- Apache Camel 2.11发布
- springboot-RequestMappingHandlerMapping
- hibernate实现多变联合查询
- Java中的位运算符、移位运算
- P1941 飞扬的小鸟
- Python之数据分析(Numpy数据可视化:等高线图、热力图、饼图)
- 计算机网络 校园网规划与设计方案,校园网网络规划与设计的方案.pdf
- 极限编程和极限编程方法采用的有效的开发实践
- 【转】常用0x000000类型颜色代码表
- 如何利用python中的pandas模块计算环比和同比
- 关于Oblog 2.52 help.asp漏洞的修补问题
- 忘记windows密码解决办法(用户密码或SYSKEY)
- kubeadm,kubevip,containerd部署高可用的kubernetes集群
- 计算机设备管理器里面没有图像,设备管理器里没有图像设备怎么办?
- python基础专栏⑤-手机编写python篇-qpython开发python
- 【干货分享】使用Inno Setup设计扁平化风格的安装包
热门文章
- 带中文字库的12864驱动笔记
- 论语之宪问第十四、卫灵公第十五、季氏第十六
- 全球与中国太阳能测试仪市场现状及未来发展趋势
- STUN和TURN技术浅析
- 电子类通信类和计算机类ei期刊,电子类通信类和计算机类EI期刊(大部分免费)
- 像素生存显示服务器不可用,生存游戏3无法连接服务器是什么原因
- 慧居科技在港交所上市状态“失效”,双良科技为控股股东
- Excel2013表格使用厘米为单位设置行高和列宽
- RNA 10. SCI 文章中基因表达富集之 KEGG 注释
- 在php中.=什么意思,在算法中mod是什么意思?