【问题标题】:magenta.js Visualizer() renders blurry notesmagenta.js Visualizer() 呈现模糊的笔记
【发布时间】:2018-12-25 01:40:17
【问题描述】:

我注意到,每当我使用 magenta.js 的内置 Visualizer 方法时,它都会渲染出如此轻微的模糊(可能是抗锯齿问题?)注释。我附上了一张图片:

我也可以在许多文档的示例中看到不同强度的这一点,例如https://piano-scribe.glitch.me/。有没有办法可以获得锐利的边缘或至少减少模糊?我不确定这个问题是否已经解决或者是否适合 magenta github,所以我在这里发帖。

编辑:在画布元素上使用image-rendering: pixelated,放大。

【问题讨论】:

  • 我将几个不同的音频片段放入链接页面,但无法重现该问题。鉴于它是在画布上绘制的,我猜两件事之一。 1. 可视化方法没有绘制精确的像素。 2. 图像以更大的分辨率显示并被放大,没有将image-rendering 设置为像素化...您有显示此的音频样本吗?
  • 我使用了this。它不那么明显,但是如果放大,您可以看到模糊的边缘。我编辑了帖子,添加了将我的画布更改为image-rendering: pixelated 的结果 - 似乎在笔记的边缘有不同颜色的像素导致模糊。有没有办法去除它们?

标签: css tensorflow.js magenta


【解决方案1】:

这是 magenta-js 的可视化工具的一个错误(如果你这么称呼它)。看看他们的源代码reveals 中的redraw 方法,每个音符的x 位置和w(idth) 由以下几行确定。

const x = (this.getNoteStartTime(note) * this.config.pixelsPerTimeStep) +
    offset;
const w = (this.getNoteEndTime(note) - this.getNoteStartTime(note)) *
    this.config.pixelsPerTimeStep;

现在,当在画布上绘制时,如果您不在整数上绘制,浏览器将进行插值并尝试绘制接近的表示,从而导致您注意到颜色错误的像素。

剩下要做的就是确认x 和/或w 不是整数。我加载了demo页面,在sources选项卡中打开了相关的js文件,搜索到了这一行,打了个断点。

果然。 x = 13.8w = 15.35999。我已经提交了 magenta-js#238 并进行了修复。

【讨论】:

  • 啊,有道理。感谢您提出问题!
  • 合并拉取请求后,您知道修复何时会出现在版本中吗?
  • @KadinZhang 老实说,我第一次听说 magenta-js 是在我看到这个问题时......不确定发布时间表是什么。
猜你喜欢
  • 2016-07-26
  • 1970-01-01
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多