Juce
Encyclopedia
JUCE is a free software, cross-platform
C++
application framework
, used for the development of GUI
applications and plug-ins.
The aim of JUCE is to allow software to be written such that the same source code
will compile
and run identically on Windows
, Mac OS X
and Linux
platforms. It supports various development environments and compilers, such as GCC
, Xcode
and Visual Studio.
It was first released to the public in 2004, and is maintained by Raw Material Software in the United Kingdom. It is covered by a dual GPL
/commercial license.
, wxWidgets
, FLTK
, etc.), JUCE contains classes
providing a range of functionality that covers user-interface elements, graphics, audio, XML
and JSON
parsing, network
ing, cryptography
, multi-threading, and various other commonly-used features. Application developers needing several third-party libraries may thus be able to consolidate and use only the JUCE library, or at least reduce the number of third-party libraries they use. In this, the original inspiration was Java's JDK, and JUCE was intended to be "something similar for C++".
A notable feature of JUCE when compared to other similar frameworks is its large set of audio functionality; this is because JUCE was originally developed as part of the Tracktion
audio sequencer before being split off into a standalone product. JUCE has support for audio devices (such as CoreAudio, ASIO, ALSA, JACK
, WASAPI, DirectSound
) and MIDI playback, polyphonic synthesizer
s, built-in readers for common audio file formats (such as WAV
, AIFF
, FLAC
, and Vorbis
), as well as wrappers for building various types of audio plugin, such as VST
effects and instruments. This has led to its widespread use in the audio development community.
JUCE comes with wrapper classes for building audio and browser plugins. When building an audio plugin, a single binary is produced that supports multiple plugin formats (VST
, RTAS
, Audio Units
). Since all the platform and format-specific code is contained in the wrapper, a user can build Mac and Windows VST/RTAS/AUs from a single codebase.
Browser plugins are handled in a similar way: a single binary is produced that functions as both an NPAPI
and an ActiveX
plugin.
The "Introjucer" is an IDE
tool for creating and managing JUCE projects. When the files and settings for a JUCE project have been specified, the Introjucer automatically generates a collection of 3rd-party project files to allow the project to be compiled natively on each target platform. It can currently generate Xcode
projects, Visual Studio projects, Linux Makefiles, and Android Ant
builds. As well as providing a way to manage a project's files and settings, it also has some basic code editing abilities, and future versions promise an integrated GUI editor.
The "Jucer" is a visual GUI editor which allows user-interface components to be designed graphically, saving them as C++ code which can be incorporated directly into a JUCE application or plugin.
Cross-platform
In computing, cross-platform, or multi-platform, is an attribute conferred to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms...
C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
application framework
Application framework
In computer programming, an application framework consists of a software framework used by software developers to implement the standard structure of an application for a specific development environment ....
, used for the development of GUI
Graphical user interface
In computing, a graphical user interface is a type of user interface that allows users to interact with electronic devices with images rather than text commands. GUIs can be used in computers, hand-held devices such as MP3 players, portable media players or gaming devices, household appliances and...
applications and plug-ins.
The aim of JUCE is to allow software to be written such that the same source code
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...
will compile
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...
and run identically on Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...
, Mac OS X
Mac OS X
Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...
and Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...
platforms. It supports various development environments and compilers, such as GCC
GNU Compiler Collection
The GNU Compiler Collection is a compiler system produced by the GNU Project supporting various programming languages. GCC is a key component of the GNU toolchain...
, Xcode
Xcode
Xcode is a suite of tools, developed by Apple, for developing software for Mac OS X and iOS. Xcode 4.2, the latest major version, is available on the Mac App Store for free for Mac OS X 10.7 , and on the Apple Developer Connection website for free to registered developers Xcode is a suite of tools,...
and Visual Studio.
It was first released to the public in 2004, and is maintained by Raw Material Software in the United Kingdom. It is covered by a dual GPL
GNU General Public License
The GNU General Public License is the most widely used free software license, originally written by Richard Stallman for the GNU Project....
/commercial license.
Official support
JUCE is intended to be usable in exactly the same way on multiple platforms and compilers. Raw Material Software gives the following list of platforms and compilers on which support is officially confirmed; others may work, but have not been officially tested.Supported platforms
JUCE is supported on the following platforms.- Microsoft WindowsMicrosoft WindowsMicrosoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...
versions XPWindows XPWindows XP is an operating system produced by Microsoft for use on personal computers, including home and business desktops, laptops and media centers. First released to computer manufacturers on August 24, 2001, it is the second most popular version of Windows, based on installed user base...
, VistaWindows VistaWindows Vista is an operating system released in several variations developed by Microsoft for use on personal computers, including home and business desktops, laptops, tablet PCs, and media center PCs...
and Win7 - Mac OS XMac OS XMac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...
versions 10.4 and later - iOS versions 2.1 and later
- LinuxLinuxLinux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...
kernel series 2.6 and later - Android using NDK-v5 and later
Supported compilers
JUCE is officially confirmed to work properly with the following compilers.- GCCGNU Compiler CollectionThe GNU Compiler Collection is a compiler system produced by the GNU Project supporting various programming languages. GCC is a key component of the GNU toolchain...
versions 4.0 and later - LLVM - LLVM Clang, versions 1.5 and later
- Microsoft Visual StudioMicrosoft Visual StudioMicrosoft Visual Studio is an integrated development environment from Microsoft. It is used to develop console and graphical user interface applications along with Windows Forms applications, web sites, web applications, and web services in both native code together with managed code for all...
- Visual C++ versions 6 and later
Features
Like many other frameworks (e.g. QtQt (toolkit)
Qt is a cross-platform application framework that is widely used for developing application software with a graphical user interface , and also used for developing non-GUI programs such as command-line tools and consoles for servers...
, wxWidgets
WxWidgets
wxWidgets is a widget toolkit for creating graphical user interfaces for cross-platform applications. wxWidgets enables a program's GUI code to compile and run on several computer platforms with minimal or no code changes...
, FLTK
FLTK
FLTK is a cross-platform GUI library developed by Bill Spitzak and others. Made with 3D graphics programming in mind, it has an interface to OpenGL, but it is also suitable for general GUI programming....
, etc.), JUCE contains classes
Class (computer science)
In object-oriented programming, a class is a construct that is used as a blueprint to create instances of itself – referred to as class instances, class objects, instance objects or simply objects. A class defines constituent members which enable these class instances to have state and behavior...
providing a range of functionality that covers user-interface elements, graphics, audio, XML
XML
Extensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....
and JSON
JSON
JSON , or JavaScript Object Notation, is a lightweight text-based open standard designed for human-readable data interchange. It is derived from the JavaScript scripting language for representing simple data structures and associative arrays, called objects...
parsing, network
Computer network
A computer network, often simply referred to as a network, is a collection of hardware components and computers interconnected by communication channels that allow sharing of resources and information....
ing, cryptography
Cryptography
Cryptography is the practice and study of techniques for secure communication in the presence of third parties...
, multi-threading, and various other commonly-used features. Application developers needing several third-party libraries may thus be able to consolidate and use only the JUCE library, or at least reduce the number of third-party libraries they use. In this, the original inspiration was Java's JDK, and JUCE was intended to be "something similar for C++".
A notable feature of JUCE when compared to other similar frameworks is its large set of audio functionality; this is because JUCE was originally developed as part of the Tracktion
Tracktion
Tracktion is a digital audio workstation for recording and editing audio and MIDI. The software is cross-platform, running on Mac OS X and Microsoft Windows.-History:Tracktion was originally developed by a single UK designer/programmer, Julian Storer...
audio sequencer before being split off into a standalone product. JUCE has support for audio devices (such as CoreAudio, ASIO, ALSA, JACK
JACK Audio Connection Kit
JACK is a professional sound server daemon that provides real-time, low latency connections for both audio and MIDI data between applications that implement its API...
, WASAPI, DirectSound
DirectSound
DirectSound is a software component of the Microsoft DirectX library for the Windows operating system. DirectSound provides a low-latency interface to the sound card driver and can handle the mixing and recording of multiple audio streams....
) and MIDI playback, polyphonic synthesizer
Synthesizer
A synthesizer is an electronic instrument capable of producing sounds by generating electrical signals of different frequencies. These electrical signals are played through a loudspeaker or set of headphones...
s, built-in readers for common audio file formats (such as WAV
WAV
Waveform Audio File Format , is a Microsoft and IBM audio file format standard for storing an audio bitstream on PCs...
, AIFF
AIFF
Audio Interchange File Format is an audio file format standard used for storing sound data for personal computers and other electronic audio devices...
, FLAC
FLAC
FLAC is a codec which allows digital audio to be losslessly compressed such that file size is reduced without any information being lost...
, and Vorbis
Vorbis
Vorbis is a free software / open source project headed by the Xiph.Org Foundation . The project produces an audio format specification and software implementation for lossy audio compression...
), as well as wrappers for building various types of audio plugin, such as VST
Virtual Studio Technology
Steinberg's Virtual Studio Technology is an interface for integrating software audio synthesizer and effect plugins with audio editors and hard-disk recording systems. VST and similar technologies use digital signal processing to simulate traditional recording studio hardware with software...
effects and instruments. This has led to its widespread use in the audio development community.
JUCE comes with wrapper classes for building audio and browser plugins. When building an audio plugin, a single binary is produced that supports multiple plugin formats (VST
Virtual Studio Technology
Steinberg's Virtual Studio Technology is an interface for integrating software audio synthesizer and effect plugins with audio editors and hard-disk recording systems. VST and similar technologies use digital signal processing to simulate traditional recording studio hardware with software...
, RTAS
Real Time AudioSuite
Real-Time AudioSuite is a format of audio plug-in developed by Digidesign, currently Avid Technology for their Pro Tools LE, and Pro Tools M-Powered systems, although they can be run on Pro Tools HD and Pro Tools TDM systems. RTAS plug-ins use the processing power of the host computer rather than...
, Audio Units
Audio Units
Audio Units are a system-level plug-in architecture provided by Core Audio in Mac OS X developed by Apple Computer. Audio Units are a set of application programming interface services provided by the operating system to generate, process, receive, or otherwise manipulate streams of audio in...
). Since all the platform and format-specific code is contained in the wrapper, a user can build Mac and Windows VST/RTAS/AUs from a single codebase.
Browser plugins are handled in a similar way: a single binary is produced that functions as both an NPAPI
NPAPI
Netscape Plugin Application Programming Interface is a cross-platform plugin architecture used by many web browsers.It was first developed for the Netscape family of browsers starting with Netscape Navigator 2.0 but was subsequently implemented by many other browsers, including all of the browsers...
and an ActiveX
ActiveX
ActiveX is a framework for defining reusable software components in a programming language-independent way. Software applications can then be composed from one or more of these components in order to provide their functionality....
plugin.
Tools
Some integral tools that are provided with (and written using) the JUCE framework are the "Introjucer" and "Jucer".The "Introjucer" is an IDE
Integrated development environment
An integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development...
tool for creating and managing JUCE projects. When the files and settings for a JUCE project have been specified, the Introjucer automatically generates a collection of 3rd-party project files to allow the project to be compiled natively on each target platform. It can currently generate Xcode
Xcode
Xcode is a suite of tools, developed by Apple, for developing software for Mac OS X and iOS. Xcode 4.2, the latest major version, is available on the Mac App Store for free for Mac OS X 10.7 , and on the Apple Developer Connection website for free to registered developers Xcode is a suite of tools,...
projects, Visual Studio projects, Linux Makefiles, and Android Ant
Apache Ant
Apache Ant is a software tool for automating software build processes. It is similar to Make but is implemented using the Java language, requires the Java platform, and is best suited to building Java projects....
builds. As well as providing a way to manage a project's files and settings, it also has some basic code editing abilities, and future versions promise an integrated GUI editor.
The "Jucer" is a visual GUI editor which allows user-interface components to be designed graphically, saving them as C++ code which can be incorporated directly into a JUCE application or plugin.
See also
- Widget toolkitWidget toolkitIn computing, a widget toolkit, widget library, or GUI toolkit is a set of widgets for use in designing applications with graphical user interfaces...
- List of widget toolkits
- wxWidgetsWxWidgetswxWidgets is a widget toolkit for creating graphical user interfaces for cross-platform applications. wxWidgets enables a program's GUI code to compile and run on several computer platforms with minimal or no code changes...
- cross platform open source C++ widgets toolkit developed by community