搜索
bottom↓
回复: 4

跨平台的覆盖音频图像XML网络 C++开源库

[复制链接]

出10入61汤圆

发表于 2013-1-24 11:45:19 | 显示全部楼层 |阅读模式
JUCE (Jules' Utility Class Extensions)是由Raw MaterialSoftware发布的一套基于c++的跨平台应用程序框架类库(Windows, Mac,Linux)。JUCE的特殊之处在于其友好的用户界面以及强大的音频、图像处理能力。JUCE适合那些想使用干净、快捷、高层的API,而不想 把时间浪费在使用不同类库,面向不同平台上的开发者。JUCE能够胜任大型、复杂的应用程序(C++)的开发。

与其他应用程序框架类似,JUCE有众多覆盖音频、图像、XML分析、网络等方面的类。JUCE的开发者就是被JAVA的JDK所启发,然后想做出基于C++的对等物。

JUCE最突出的特点是其对音频的特殊支持。JUCE原本是作为Tracktion audiosequencer的一部分而开发的,但后来脱离出来成为了一个独立的工程。JUCE支持音频和MIDI回放,复音合成器,对多种音频格式文件 的读取。同时,JUCE还封装了诸如VST、RTAS、AU等技术的代码,能够开发各种音源、效果插件。众多音频厂商如Imageline、M-AUDIO、cycling74、KORG、Presonus、TC Group等等都是JUCE的使用者。


http://www.rawmaterialsoftware.com/juce.php

Core Classes
Large set of versatile container classes.
A powerful string class which can handle UTF-32, UTF-16 and UTF-8.
A comprehensive set of file, directory and I/O stream classes, including streams for files, URLs, memory, buffering, built-in zlib-based compression, and zip-file handling.
A full set of cross-platform threading and multitasking abilities: threads, synchronisation, events, thread-pools, process control, etc.
A wide-ranging set of messaging classes provides many options for event-based development: listener and broadcaster classes, timers, asynchronous callbacks, inter-application messaging, and much more.
Many utility functions and classes for data conversion, time and date, atomic operations, maths functions, random numbers, etc.
Ability to compile only the non-UI classes, for use in writing command-line apps.
The ValueTree and Value classes provide a very powerful general-purpose data structure which provides change notifications and automatic undo/redo support.
User Interface

A large basic set of components including all the usual suspects: buttons, combo boxes, text editors, listboxes, treeviews, tables, viewports, sliders, tabbed boxes, etc.
A look-and-feel system allows the look of various UI elements to be changed dynamically, and customised by an application.
All components can have arbitrary affine-transforms applied to them.
OpenGL support makes it easy to have openGL running inside a Juce component.
Quicktime support allows Quicktime movies to be embedded and controlled through a platform-independent class. (Not available on Linux, of course).
Video camera catpure makes it easy to preview and record from webcams.
MDI windowing made possible with a multi-document component which can flip between putting its child windows in a tabbed box or as separate floating windows
Keyboard input can be managed in a range of ways, from intercepting keys directly to using a key-mapping set to redirect keystrokes to automatically-invoked application level commands.
Property components provide a set of components to represent various types of value as sliders, drop-down lists, text, etc These are shown in a list and make a simple way to display a set of properties for a selected object.
Internal drag-and-drop within the same application allows versatile drag-and-drop logic to be acheived, with effects like semi-transparent icons, snapping back when released, etc.
External drag-and-drop of files and text can be made to and from other applications.
Popup menus and menu bars can contain custom components, and can be used to automatically trigger application commands, display appropriate key shortcuts, and much more.
A set of file-browser components can be used to show either an entire file open/close dialog with embedded preview, or any subset of this, such as a navigable file list.
Lots of ready-made UI components are included for specialised purposes like splash-screens, editing a set of key-press mappings, choosing audio device settings, selecting colours using a HSV colour picker, a clickable MIDI keyboard, lassoing objects, etc. All of these can be subclassed and customised, of course.
Drop-shadows are used on Juce top-level windows (if possible and where the OS doesn't already do this itself).
A set of classes allow components to be positioned using expressions which describe their layout in terms of other components or markers.
The Introjucer
The Introjucer is Juce's project management tool. You can build it from the source-code included in the Juce source tree, or download a pre-built binary from SourceForge.
Use it like an IDE to build your project, adding source files to a tree, and editing the platform-specific settings for the various compilers that you want to target.
Once created, your project can be automatically exported as a bunch of ready-to-run projects for Xcode, Visual Studio, Linux make, or Android Ant.
A set of wizards make it easy to create application or plugin projects.
As well as generating projects, the introjucer will also convert any binary resource files in your project to C++ source-code, which is automatically included in the generated projects.
Also includes a utility for downloading the latest version of JUCE without needing to use the GIT.
Future plans for the Introjucer will see it become a full IDE, with integrated GUI designer and code editor.
The Jucer

The Jucer is Juce's UI component builder application. It comes as part of the Juce source tree.
Allows Juce components to be designed visually, adding from a palette of standard or custom Juce components.
Generates ready-to-compile c++ code, with embedded metadata so that the same code can be reloaded and edited again later.
Allows graphics to be edited as well as sub-components - polygons, shapes and images can be added, with various types of gradient and brush fills applied to them.
Jucer components can be embedded inside other Jucer components for WYSISYG editing of complex hierarchies.
Custom component types help to create certain types of component - e.g. the Button editor lets you design the graphics for all the button's up/down/over states.
Graphics

Image support for 24-bit RGB and 32-bit ARGB images.
All graphics operations are sub-pixel accurate and anti-aliased.
The built-in software=based rendering engine can be supplemented by native rendering if it's available (e.g. on the Mac and iPhone, CoreGraphics is used for rendering)
Image file formats supported are JPEG, PNG and GIF. JPEG and PNGs can be saved as well as loaded.
Image loading utilities make it easy to incorporate images in your app: an image cache can be used to store recently used images and avoid keeping multiple copies of the same one; images can be loaded from memory of from any kind of file stream, or just directly from a filename.
Easy embedding of images into c++ code using either the Introjucer or BinaryBuilder makes it simple to add resources in a platform-independent way.
Geometric paths and shapes can be created and manipulated with the Path class.
A set of geometric primitives include lines, rectangles, points, rectangular regions, affine transforms, and more.
Gradient fills can be linear and radial, with any number of intermediate colours
All drawing operations can have arbitrary affine-transforms applied to them
A set of "drawable" classes allow graphs of drawable elements (e.g. paths, text, images) to be built up and drawn as a unit.
Importer for simple SVG files, converting them into juce Drawable objects, ready for further manipulation or rendering.
Audio

Audio driver classes provide an abstract audio device layer, which transparently supports ASIO, WASAPI, DirectSound, CoreAudio, iPhone Audio, ALSA, JACK and Android devices.
Audio device manager class makes it simple to load/save a user's audio and midi device settings between sessions, or to choose an appropriate default device for the system.
Ready-made UI components provide UI for selecting audio and midi device settings.
A set of audio file format readers and writers include support for WAV, AIFF, Flac and Ogg-Vorbis
A set of audio stream classes allow audio graphs to be constructed and played - types of audio filter include wave file readers, sample-rate converters, mixers, and tone generators.
A Synthesiser class allows simple creation of polyphonic synthesisers, which can be easily driven by midi input using the midi classes.
On Mac and PC, a cross-platform Audio CD reader allows CD audio to be extracted as easily as reading any other audio file.
Audio-CD burning is supported for Mac and PC.
Midi
Midi input and output support, including support for creating virtual midi devices on Mac and Linux.
Midi message wrapper classes make it easy to manipulate midi without having to set the bytes directly.
Midi buffer classes provide efficient collating and editing of midi streams.
Midi keyboard state objects will monitor a midi stream and provide information about the state of a virtual keyboard. A customisable on-screen keyboard component is provided.
Classes for merging and re-timing midi input streams to synchronise with audio streams.
Support for reading/writing standard midi format files.
Audio Plugins
The audio plugin wrapper classes let you build a single module that functions as a variety of plugin formats - currently it supports VST (PC, Mac and Linux), AudioUnit (Mac), and RTAS (PC and Mac).
Audio hosting classes are provided for loading and running AU and VST plugins inside your JUCE app.
Whether you're writing a plugin or loading a third-party plugin, the same base classes are used, so you can easily embed your plugin code into a stand-alone application, or load other plugins into your own plugin.
Browser Plugins
The browser plugin wrapper classes let you build a single module that functions as an NPAPI (Firefox, Safari, etc on Mac/PC), and ActiveX (Internet Explorer).
Javascript classes let your plugin communicate with the javascript running on the webpage that's hosting the plugin.
XML
A very fast, fully-integrated XML parser, supporting entity expansion, and external entities.
XML structure classes make it easy to use XML objects as general-purpose data structures in your code, with quick methods for interpreting attributes as various numeric types other than strings.
Because the XML parser is available throughout the library very cheaply, many other classes make use of it to provide quick and easy ways to use XML data - e.g. the URL class has a method to read and parse the contents of an internet URL that contains XML.
Application Utilities
Simple cross-platform application startup/shutdown (although Juce can also be used to build plugins and DLLs with a custom entry/exit points, and command-line utilities with a traditional main() function).
Classes for language-localisation of string constants, using a simple translation file format.
Undo/redo support using an undo manager and undoable action classes
Base classes for file-based document handling, to handle all the logic involved in loading/saving documents, knowing when they are altered, keeping track of recently opened files, etc.
Versatile set of classes for managing a set of named application commands, which can be triggered automatically by menus, keystrokes or buttons. A powerful command-target structure gives flexible control over the dispatch of commands, and ready-made UI components allow sets of key-mappings to be edited and stored.
Property file support makes it very simple to store named values in a settings file for persistance between sessions. All platform-specific details about where this file should be stored are handled automatically.
A global logging object can be assigned, which is takes any output from Juce's internal logging as well as the application's log. A pre-made logger class is provided to write to a file, but custom ones can be added.
Networking
Input stream classes to handle downloads via HTTP and FTP.
URL parsing.
Cross-platform low-level sockets.
An inter-process communication abstraction layer allows communication channels to be set up using either sockets or named pipes, to either a local or remote machine.
Cryptography
Large prime number generator
RSA Key generator and encrypter
BlowFish codec
MD5 hashcode creation class
Miscellaneous
Zip file format parser can decompress and create zip files.
128-bit GUID generator
Various platform-specific utilities, e.g. registry read/write functions on Windows; NSString converters on the Mac.
High-accuracy performance counter class allows timing of code sections and averaging over multiple runs.

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-1-24 11:56:00 | 显示全部楼层
看看不错的

出0入0汤圆

发表于 2013-1-24 12:16:16 | 显示全部楼层
不错,........

出0入0汤圆

发表于 2013-1-24 12:23:19 | 显示全部楼层
不错,不知道M3可以处理的来不

出0入0汤圆

发表于 2013-1-24 13:00:08 来自手机 | 显示全部楼层
多线程吗
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 16:12

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表