跨平台语言 +用于多媒体应用程序原型设计的 GUI 工具包
我正在寻找一种语言 + GUI 工具包,用于快速制作多媒体安装实用应用程序的原型。我已经使用 Max/MSP/Jitter 工作很多年了,但我想在我的“武器库”中添加一种基于文本的语言,以完成“内容制作”之外的任务。
(当涉及到实际的媒体合成时,我的选择很明确[SuperCollider + MSP 用于音频,Jitter + Quartz + openFrameworks 用于视频])。
我正在寻找能够保留 Max 的一些优点,但级别更低、速度更快、更跨平台(Linux 支持)并且基于文本的东西。不需要与强大的声音/视频库集成。
一些要求:
- 最重要的是,快速的开发时间
- 跨平台(至少 OSX 和 Linux,Windows 是一个优点)
- 快速、简单的跨平台 GUI,无需针对特定平台进行修改
- GUI 代码尽可能与后端代码分离
- 好用于与外部串行设备(微控制器)连接
- 良好的网络支持(UDP / TCP)
- 良好的多媒体库(视频,声音,OSC)是一个优点
- 异步>同步
- UNIX 集成是一个优点
想到的选项:
- AS3/Flex(不喜欢 AS3 或在 Flash Player 中运行的想法)
- openFrameworks(C++ 框架,也许级别太低了[寻求快速开发时间]并且偏向于视频工作)
- Java w/处理库(如 openFrameworks,只是速度较慢)
- Python + Qt(Qt 适合快速原型设计吗?)
- Python +另一个 GUI 工具包
- SuperCollider + Swing(令人讨厌的 GUI 开发)
- Java w/SWT
任何其他选项?你有什么建议吗?
I'm looking for a language + GUI toolkit for rapidly prototyping utility applications for multimedia installations. I've been working with Max/MSP/Jitter for many years, but I'd like to add a text-based language to my 'arsenal' for tasks apart from 'content production'.
(When it comes to actual media synthesis, my choices are clear [SuperCollider + MSP for audio, Jitter + Quartz + openFrameworks for video]).
I'm looking for something that maintains some of the advantages of Max, but is lower-level, faster, more cross-platfrom (Linux support), and text-based. Integration with powerful sound/video libraries is not a requirement.
Some requirements:
- More than anything else, fast development time
- Cross-platform (at least OSX and Linux, Windows is a plus)
- Fast and easy cross-platform GUIs with no platform-specific modification
- GUI code separated from backend code as much as possible
- Good for interfacing with external serial devices (micro-controllers)
- Good network support (UDP/TCP)
- Good libraries for multi-media (video, sound, OSC) are a plus
- Asynchronous > synchronous
- UNIX integration is a plus
The options that come to mind:
- AS3/Flex (not a fan of AS3 or the idea of running in the Flash Player)
- openFrameworks (C++ framework, perhaps a bit too low level [looking for fast development time] and biased toward video work)
- Java w/ Processing libraries (like openFrameworks, just slower)
- Python + Qt (is Qt appropriate for rapid prototyping?)
- Python + Another GUI toolkit
- SuperCollider + Swing (yucky GUI development)
- Java w/ SWT
Any other options? What do you recommend?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
尝试 Mono:
http://www.mono-project.com/Main_Page
Try Mono:
http://www.mono-project.com/Main_Page
Qt 适合快速原型设计(Qt Designer 和 Qt Quick 对此有帮助),但它仍然是 C++,因此速度较慢。另一方面,PyQt 非常漂亮 - 您可以使用解释语言快速编写-测试-修改循环,并享受跨平台 Qt 支持的所有乐趣(和遗憾)。为我工作。
Qt is appropriate for rapid-prototyping (Qt Designer and Qt Quick help with that), but it's still C++ so it's slower. PyQt on the other hand is pretty nifty - you have rapid write-test-modify loop in an interpreted language with all the joys (and pities) of cross-platform Qt support. Worked for me.
基于 JVM 的语言怎么样(主要是为了可移植性和 VM 以及与所有 Java 库的互操作性,包括媒体处理所需的库),例如 JRuby 或 Scala(用于开发时间(如果您想快速掌握的话,可能需要更多的 JRuby),并且像您提到的那样使用 SWT 或 Swing?另外,您始终可以插入其他语言的内容,因此如果您仍然希望某些内容在 Python 中运行,那么 Jython 可以帮助您。
我不一定会说 Swing 是“令人讨厌的”。它确实有缺陷和过于复杂的 API,但从设计上来说,我经常发现它比 SWT 更有吸引力,尽管它也有一些不错的功能。使用 Swing 可以生成非常好的界面,并且不会像老式的争论那样缓慢。话虽如此,它对于快速原型设计来说不一定很好,但这只是 Java 的一个缺点。例如,Groovy 有一个很好的构建器来促进 Swing 开发。
如果需要,还有针对 Java 的 QT 绑定。
如果基于 Java 的东西让你望而却步,那么我认为你可能应该选择 Python + QT。
Flex 似乎正在崛起,并且确实产生了很好的界面,但有一些事情让我感到困扰。一方面,人们总是倾向于用它来生成非标准的 UI。它看起来确实很棒,但如果每个应用程序开发人员都试图发明自己的可用性范例,那么用户也会更加困惑。另外,该平台的未来还有很多未知因素,而 Java/Python 则不会有这种担忧。
What about a JVM-based language (mostly for the portability and VM an interoperability with all the Java libraries out there, including the ones you'll need for media processing), like JRuby or Scala (for the development time. Probably more JRuby if you want to pick up fast), and with either SWT or Swing as you mentioned? Plus you can always plug-in things from other languages, so if you still want some things running in Python, then there's Jython to the rescue.
I wouldn't necessarily say that Swing is "yucky". It does have flaws and an overcomplicated API, but by design I often find it more appealing than SWT, though it also comes with its shares of nice features. It is possible to produce very good interfaces with Swing, and that aren't sluggish as the old fashioned argument goes. That being said, it's not necessarily great for fast-prototyping, but that's only a shortcoming in Java. Groovy has a nice builder to facilitate Swing development, for instance.
There's also a QT binding for Java if you want.
If Java-based things put you off, then I think you should probably go with Python + QT.
Flex seems to be picking up and surely produces nice interfaces, but there are a few things that bug me about it. For one thing, the fact that people always tend to produce non-standard UIs with it. It does look great, but it also is more confusing to users if every app developer tries to invent his or her own usability paradigm. Plus, there's a lot of unknowns in terms of the future of the platform, whereas you won't have this concern with Java/Python.
为了回答我自己的问题,使用您所在领域/区域/工作场所中其他人使用的工具通常比找到“正确的工具”更重要。 (例如,在我的社区中,Max/MSP/Jitter 和 PureData、C、MATLAB 和 [仅由于其全球流行] Python 是标准。)偏离当地通用语言意味着您的代码可以持续存在只有当你在维护它时(至少如果代码是针对特定地点或事件的,就像媒体中经常出现的情况),你作为开发人员是孤独的,并且你将不断拥有构建与其他人的代码的接口以使事情正常工作。
我决定在学习期间暂时坚持使用古老的 Max、C、Matlab 组合。
另一方面,我尝试了 Pure,它具有与许多库和应用程序的强大集成,谢谢动态类型、强大的矩阵支持和早期 OSC 采用(例如 Octave、SuperCollider、PureData、Faust)和 OpenCV)。我期待下一代数据流语言。
To answer my own question, it's usually more important to use what other people in your field/area/workplace use than to find 'the right tool'. (For instance, in my community, Max/MSP/Jitter & PureData, C, MATLAB, and [due only to its global popularity] Python are the standards.) Deviating from the local lingua franca(s) means that your code lasts only as long as you're around to maintain it (at least if the code is for a particular place or event, as is often the case in media), that you're all alone as a developer, and that you will constantly have to build interfaces to other people's code in order to get things to work.
I decided to stick with the venerable Max, C, Matlab combo for now while I'm learning.
On the side I experiment with Pure, which features strong integration with many libraries and applications thanks to dynamic typing, strong matrix support and early OSC adoption (for instance octave, SuperCollider, PureData, Faust and OpenCV). I'm looking forward to next-generation dataflow languages.