JFugue 5.0.9的新增功能

JFugue版本5.0.9包含多项改进,其中大部分是用户建议的。

错误修复:改进了微调计算

如果您对编写包含“微调”(即“音符之间的声音”)的音乐感兴趣,这听起来应该是引号,但我找不到音源,那么您肯定会对这种版本的JFugue。 我修复了将频率(以赫兹为单位)转换为MIDI Note On和Pitch Wheel事件组合的计算。 我在调查https://stackoverflow.com/questions/43778871/why-some-far-apart-frequencies-are-sounding-at-the-same-pitch-in-jfugue时发现了该错误。

JFugue可以非常轻松地在音乐中播放微音。 您可以像指定传统音符一样轻松地使用频率来指定音调。 例如,在JFugue中,持续时间为A4的音符为“ A4w”

  new Player()。play(“ A4w”);  //演奏一个音符,第四个八度,整个持续时间 

您可以使用频率轻松弹奏相同的音符。 A4恰好是440Hz。

  new Player()。play(“ m440.0w”);  //持续播放440.0Hz 

在幕后,JFugue将其转换为实际播放音调的MIDI事件的组合。 在这种情况下,数学转换非常简单,并且基本上会导致触发相同的A4音符。 但是,您也可以提供不会直接映射到传统音符的频率。 JFugue 5.0.9中微音计算的修复(正好我们都清楚,开发人员:Math.round( double )与(int) double不同 )将确保您期望听到的音调正确。

带来狂欢音乐! 另外,如果您喜欢微调音乐,请转到这篇文章的底部以享受特殊待遇。

新功能:和弦进行中现在需要反转

通过https://stackoverflow.com/questions/43906176/define-inverted-chord-with-roman-numerals-with-jfugue建议的一项新功能,可让您使用一个或多个插入符号来指定和弦反转,同时指定和弦进行。 例如:

  //这将导致一个I,一个反向V,一个vi和一个第二个 
//倒置IV和弦
ChordProgression cp =新的ChordProgression(“ IV ^ vi IV ^^”);

当我写这篇文章时,我意识到代码只是在计算插入符号。 它没有使用JFugue的其他语法来指定反转,在这种语法中,您可以使用单个插入符号,后跟应该是新低音音符的音符的从1开始的索引(例如,您不能对“ IV ^ 2”进行取得第二次倒置IV和弦)。 我将其放在JFugue 5.0.10的列表中。

错误修复:Note.setValue(byte value)与Note.toString()一起使用

Note类具有setValue(byte)方法,该方法可以更改便笺的值,但是toString()方法使用不同的机制(基于用于创建便笺的字符串)来查找要打印的实际便笺。 因此,尽管setValue()确实在Note上设置了新值,但是如果Note是使用字符串创建的,则toString()会报告错误的内容。 现在已解决。

新的静态方法:Chord.isValidChord(String候选人Chord)

如果您想知道您所拥有的和弦是否为有效的和弦,可以将其传递给新的静态方法Chord.isValidChord(String候选Chord)。 此方法检查以确保音符名称有效,和弦名称有效以及和弦末尾的装饰器(例如,音符开/音符关闭速度)是否正确(尽管目前,假定装饰器部分代码中的“ true”)。 并且需要此方法来解决下一个问题…

错误修复:更新以解析和弦

在JFugue 5.0.8中引入的折断和弦(在此处了解更多详细信息)依赖于在有效和弦名称后的标记中找到冒号。 但是该实现略有偏离,事实证明还有其他事件,包括以冒号开头的功能(例如,音高转盘,“:PitchWheel”)和包含冒号的tuplet音符(例如,“ C4q: 3/2”),也被破碎的和弦预处理器捕获。 感谢广泛的单元测试,以帮助发现此问题! 该错误在我进行前面列出的微调工作时抬起了丑陋的头,现在已被压缩,由于此错误,现在有了新的Chord.isValidChord()方法(以及许多新的单元测试用例)。

与往常一样,想要一些很棒的例子!

我一直在寻找JFugue的富有想象力的用法,以及非常酷的JFugue演示,我可以帮助您分享。 如果您有什么奇妙的东西-甚至只是这样-请让我知道!

谢谢阅读!

作为感谢您阅读本文的内容,请欣赏以下视频: “星光,用于微米级玻璃木琴”