C++跨平台音乐制作软件的图形

Graphics for C++ cross-platform music making software

已编辑,见下文

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

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

图形将基于矢量或使用"line(point1, point2);"

等函数绘制

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

现在回答问题:

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

编辑:

我看到这被标记为偏离主题。对不起,我是新来的。我已经看到 some posts 要求这种推荐,所以我认为还可以。好吧,我会努力成为objective并且直截了当

问题:

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

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

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

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

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

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

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