java音乐必须是wav_Java中Wav文件的音乐转录

我有一个关于使用Java进行音乐转录的项目,事情是,我创建了一个记录声音并将其保存到WAV文件中的applet,播放器应该只播放他/她想要转录的片段,之后我被卡住了在这一点上,我必须从保存的WAV文件中获取信息并使用此信息创建一个MIDI文件,并在创建MIDI文件后,我必须为它生成一个乐谱(乐谱),所有这些必须完成在Java中.

我到处寻找关于如何完成这些工作的明确解释,但我没有找到任何直接的东西:(因为我是Java的新手,我希望有人能帮我解决这个问题,我在编程时遇到的问题是:

>获取有关在WAV文件中播放的音符的信息.

>了解笔记.

>创建一个等同于WAV文件的MIDI文件.

>从MIDI文件生成SCORE.

在对正在读取的数据执行分段后,我也尝试过快速傅立叶变换,但我认为这绝对是在错误的方向:(

如果有人可以帮助我完成上面指定的主题,以及如何只用Java编程,那将非常感激:)

顺便说一下,该项目是:

玩家在钢琴上演奏音符>>记录他的演奏>>玩家得到他的比赛的分数.

解决方法:

我绝不是这方面的专家,所以如果这都是垃圾,我会提前道歉.

为了从文件中获取音符,我认为您需要在WAV文件上执行FFT(快速傅立叶变换),但一次只能使用10ms的声音.然后你会在那个时间帧上找到FFT的最高峰值,然后继续前进到10ms的下一个“帧”,或者其他什么.你再次进行FFT,如果最高峰值与前一个峰值的频率不同,那么它会说它是一个新音符.要查看音符的长度,请计算彼此特定阈值内的峰值数量,并将它们乘以每帧使用的时间(10ms等)

我会再说一遍,我不是专家,可能有其他方法可以做到这一点.

除此之外,我希望这有助于……甚至一点点.

标签:java,pitch-tracking,transcription

来源: https://codeday.me/bug/20191006/1858141.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值