-5

已编辑,见下文

我需要一个库来在音乐制作软件上显示音乐符号的图形。它将类似于 Sibelius:基本上,用户创建乐谱,应用程序发送 midi 输出。

我不是在寻找一个库来显示乐谱,因为各种原因我必须自己实现它。此外,我正在寻找的库必须是跨平台的(至少应该在 Windows 和 Linux 上运行)。

图形将基于矢量或使用“line(point1, point2);”等函数绘制

(在继续之前让我声明我是 C++ 新手,我的大部分经验是使用解释语言 - 主要是 PureData 和处理)

现在的问题:

  1. 我找到了欣德。你认为 Cinder 适合这项任务吗?如果没有,您可以跳过 2 和 3。
  2. 我没有使用 OpenGL 的经验。我实际上无法弄清楚 Cinder 是专门使用 OpenGL 还是仅按需使用它。我的疑问是,当使用 OpenGL 库时,我的应用程序只能在具有专用显卡的计算机上运行?
  3. Cinder 不具备创建 Qt 或 GTK+ 等 GUI 的能力。是否可以在另一个由 Qt/GTK+/SDL/etc 创建的窗口中集成 Cinder?我想要像Sibelius这样的东西,在符号图形窗口中集成了普通的 GUI(按钮、菜单等)。
  4. 如果 Cinder 不是一个好的选择,您会针对该特定应用程序需求推荐什么?开放式简历?SDL? SFML?

编辑:

我看到这被标记为离题。对不起,我是新来的。我看过一些帖子要求这种推荐,所以我认为这没关系。好吧,我会尽量客观和直截了当

问题:

我需要绘制音乐符号图形,但我不想处理低级的东西(如 Cinder、SDL、SFML、Ati-Grain)。那么,还有哪些其他可用的技术?也就是说,还有哪些其他选择?

4

1 回答 1

0

您所描述的是大量工作,对于像您这样的编程经验有限的人来说是不可能的。C++ 既不是一种简单的语言,也不是一种宽恕的语言。它不仅仅是学习语法(就像处理或具有自动垃圾收集的类似语言的情况一样) - 它也是关于管理内存和其他资源、不变量等 - 离开撇开链接、编译等的复杂性不谈:反过来,这是您对计算机如何在较低级别工作有透彻了解的先决条件。

无论如何,我会尽力回答你的问题:

  1. 你可以用 cinder 做到这一点——这可能意味着必须重新发明轮子——但你可以做到。然而,我不会说煤渣真的适合这样的任务。这适用于加速的 2D/3D 计算机图形。你想要的是一些更通用的 GUI 库(也许是 QT?)。关于 midi 支持,无论如何,您可能不得不依赖其他一些库。

  2. 如今,大多数计算机都支持 openGL。同样,您实际上并不需要 openGL 来做您想做的事情。

  3. 是的,理论上你可以做到这一点——但这并不容易,而且对于你想做的事情来说也不是必需的。

  4. OpenCV 绝对不是。这是用于图像处理 - 即光栅图形 - 您需要矢量图形。撇开OpenCV的Highgui在某些事情上真的很慢,所以无论如何你都必须使用其他一些库进行渲染。我对其他图书馆没有经验。我的建议是使用比 C++ 容易得多的一些解释语言,例如 python、luaAV 或 SuperCollider(顺便说一下,它确实具有内置的 midi 支持),或者搜索一些开源音乐符号替代品(如果有的话)->你总是可以在现有的代码库上构建你自己的东西——不需要重新发明轮子......

于 2016-02-11T22:39:15.587 回答