JUCE

Last updated
JUCE (Jules' Utility Class Extensions)
Original author(s) Julian Storer
Initial release2004;20 years ago (2004)
Stable release
7.0.12 / April 15, 2024;30 days ago (2024-04-15) [1]
Repository
Written in C++
Operating system Cross-platform
Type Development library
License GPL, commercial
Website www.juce.com

JUCE is an open-source cross-platform C++ application framework, used for the development of desktop and mobile applications. JUCE is used in particular for its GUI and plug-ins libraries. It is dual licensed under the GPLv3 and a commercial license. [2]

Contents

The aim of JUCE is to allow software to be written such that the same source code will compile and run identically on Windows, macOS and Linux platforms. It supports various development environments and compilers.

History

JUCE resulted from a split-out of the underlying C++ code that was developed by Julian Storer to create Tracktion's (now Waveform) DAW graphic and audio capabilities. It was first released to the public in 2004. It is covered by a dual GPL/commercial license.

JUCE and Raw Material Software were acquired in November 2014 by London-based hardware manufacturer ROLI for an undisclosed amount. [3]

In April 2020 it was announced that JUCE had been sold by ROLI to PACE Anti-Piracy Inc.. [4]

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.

Supported compilers

JUCE is officially confirmed to work properly with the following compilers.

Features

Like many other frameworks (e.g., Qt, wxWidgets, GTK, etc.), JUCE contains classes providing a range of functions that cover user-interface elements, graphics, audio, XML and JSON parsing, networking, cryptography, multi-threading, an integrated interpreter that mimics ECMAScript's syntax, 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 a framework for Tracktion, an 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 synthesizers, built-in readers for common audio file formats (such as WAV, AIFF, FLAC, MP3 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. [5]

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 & VST3, RTAS, AAX, Audio Units). Since all the platform and format-specific code is contained in the wrapper, a user can build Mac and Windows VST/VST3/RTAS/AAX/AUs from a single codebase. Since JUCE7 targeting, and hosting, of LV2 plugins is also possible. [6] Previously this was done with the use of various forks. [7] [8]

Browser plugins are handled in a similar way: a single binary is produced that functions as both an NPAPI and an ActiveX plugin.

Tools

The "Projucer" is an IDE tool for creating and managing JUCE projects. When the files and settings for a JUCE project have been specified, the Projucer 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, Android Ant builds and CodeBlocks projects. As well as providing a way to manage a project's files and settings, it also has a code editor, an integrated GUI editor, wizards for creating new projects and files, and a live coding engine useful for user interface design.

Version History

See also

Related Research Articles

In computing, cross-platform software is computer software that is designed to work in several computing platforms. Some cross-platform software requires a separate build for each platform, but some can be directly run on any platform without special preparation, being written in an interpreted language or compiled to portable bytecode for which the interpreters or run-time packages are common or standard components of all supported platforms.

Csound is a domain-specific computer programming language for audio programming. It is called Csound because it is written in C, as opposed to some of its predecessors.

<span class="mw-page-title-main">Ardour (software)</span> Open-source digital audio workstation

Ardour is a hard disk recorder and digital audio workstation application that runs on Linux, macOS, FreeBSD and Microsoft Windows. Its primary author is Paul Davis, who was also responsible for the JACK Audio Connection Kit. It is intended as a digital audio workstation suitable for professional use.

wxWidgets Widget toolkit

wxWidgets is a widget toolkit and tools library for creating graphical user interfaces (GUIs) 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. A wide choice of compilers and other tools to use with wxWidgets facilitates development of sophisticated applications. wxWidgets supports a comprehensive range of popular operating systems and graphical libraries, both proprietary and free, and is widely deployed in prominent organizations.

<span class="mw-page-title-main">Virtual Studio Technology</span> Audio plug-in software interface

Virtual Studio Technology (VST) is an audio plug-in software interface that integrates software synthesizers and effects units into digital audio workstations. VST and similar technologies use digital signal processing to simulate traditional recording studio hardware in software. Thousands of plugins exist, both commercial and freeware, and many audio applications support VST under license from its creator, Steinberg.

<span class="mw-page-title-main">Rosegarden</span> Digital audio workstation program for BSD and Linux

Rosegarden is a free software digital audio workstation program developed for Linux with ALSA, JACK and Qt4. It acts as an audio and MIDI sequencer, scorewriter and musical composition and editing tool. It is intended to be a free and alternative to such applications as Cubase.

<span class="mw-page-title-main">Kodi (software)</span> Free software media player

Kodi is a free and open-source media player and technology convergence software application developed by the Kodi Foundation, a non-profit technology consortium. Kodi is available for multiple operating systems and hardware platforms, with a software 10-foot user interface for use with televisions and remote controls. It allows users to play and view most streaming media, such as videos, music, podcasts, and videos from the Internet, as well as all common digital media files from local and network storage media, or TV gateway viewer.

<span class="mw-page-title-main">MusE</span> Free software MIDI/Audio sequencer

MusE is computer software, a sequencer for Musical Instrument Digital Interface (MIDI) and audio, with recording and editing abilities. It was originally written by Werner Schweer and now is developed by the MusE development team. It is free software released under GPL-2.0-or-later.

<span class="mw-page-title-main">Code::Blocks</span> Free, open source, cross-platform IDE

Code::Blocks is a free, open-source, cross-platform IDE that supports multiple compilers including GCC, Clang and Visual C++. It is developed in C++ using wxWidgets as the GUI toolkit. Using a plugin architecture, its capabilities and features are defined by the provided plugins. Currently, Code::Blocks is oriented towards C, C++, and Fortran. It has a custom build system and optional Make support.

<span class="mw-page-title-main">LMMS</span> Free software digital audio workstation

LMMS is a digital audio workstation application program. It allows music to be produced by arranging samples, synthesizing sounds, entering notes via computer keyboard or mouse or by playing on a MIDI keyboard, and combining the features of trackers and sequencers. It is free and open source software, written in Qt and released under GPL-2.0-or-later.

<span class="mw-page-title-main">REAPER</span> Digital audio workstation by Cockos

REAPER is a digital audio workstation and MIDI sequencer application created by Cockos. The current version is available for Microsoft Windows, macOS, and Linux. REAPER acts as a host to most industry-standard plug-in formats and can import all commonly used media formats, including video. REAPER and its included plug-ins are available in 32-bit and 64-bit format.

<span class="mw-page-title-main">LV2</span> Open standard for audio plugins

LV2 is a set of royalty-free open standards for music production plug-ins and matching host applications. It includes support for the synthesis and processing of digital audio and CV, events such as MIDI and OSC, and provides a free alternative to audio plug-in standards such as Virtual Studio Technology (VST) and Audio Units (AU).

<span class="mw-page-title-main">Qtractor</span> Digital audio workstation application for Linux

Qtractor is a hard disk recorder and digital audio workstation application for Linux. Qtractor is written in C++ and is based on the Qt framework. Its author is Rui Nuno Capela, who is also responsible for the Qjackctl, Qsynth and Qsampler line of Linux audio software. Qtractor's intention was to provide digital audio workstation software simple enough for the average home user, and yet powerful enough for the professional user.

<span class="mw-page-title-main">Qt Creator</span> QT development environment

Qt Creator is a cross-platform C++, JavaScript, Python and QML integrated development environment (IDE) which simplifies GUI application development. It is part of the SDK for the Qt GUI application development framework and uses the Qt API, which encapsulates host OS GUI function calls. It includes a visual debugger and an integrated WYSIWYG GUI layout and forms designer. The editor has features such as syntax highlighting and autocompletion. Qt Creator uses the C++ compiler from the GNU Compiler Collection on Linux. On Windows it can use MinGW or MSVC with the default install and can also use Microsoft Console Debugger when compiled from source code. Clang is also supported.

Dart is a programming language designed by Lars Bak and Kasper Lund and developed by Google. It can be used to develop web and mobile apps as well as server and desktop applications.

<span class="mw-page-title-main">Mono (software)</span> Computer software project

Mono is a free and open-source .NET Framework-compatible software framework. Originally by Ximian, it was later acquired by Novell, and is now being led by Xamarin, a subsidiary of Microsoft and the .NET Foundation. Mono can be run on many software systems such as Linux.

<span class="mw-page-title-main">Magnus Choir</span>

Magnus Choir is a commercial, proprietary music software synthesizer, for the Microsoft Windows and macOS operating systems, written by Daniel Laiseca and developed by Syntheway Virtual Musical Instruments. The first version was released in 2005.

libGDX is a free and open-source game-development application framework written in the Java programming language with some C and C++ components for performance dependent code. It allows for the development of desktop and mobile games by using the same code base. It is cross-platform, supporting Windows, Linux, macOS, Android, iOS, BlackBerry and web browsers with WebGL support.

NativeScript is an open-source framework to develop mobile apps on the iOS and Android platforms. It was originally conceived and developed by Progress. At the end of 2019 responsibility for the NativeScript project was taken over by long-time Progress partner, nStudio. In December 2020 nStudio also oversaw the induction of NativeScript into OpenJS Foundation as an Incubating Project. NativeScript apps are built using JavaScript, or by using any programming language that transpiles to JavaScript, such as TypeScript. NativeScript supports the Angular and Vue JavaScript frameworks. Mobile applications built with NativeScript result in fully native apps, which use the same APIs as if they were developed in Xcode or Android Studio. Additionally, software developers can re-purpose third-party libraries from CocoaPods, Maven, and npm.js in their mobile applications without the need for wrappers.

References

  1. Tom Poole (2024-04-15). "7.0.12". github.com. Retrieved 2024-05-15.
  2. JUCE License, JUCE, 2022-04-18, retrieved 2022-04-18
  3. "Music Hardware Maker ROLI Acquires JUCE, A Key Music Industry Framework". TechCrunch. 2014-11-18. Retrieved 2016-03-19.
  4. "JUCE Announces Acquisition by PACE | JUCE". juce.com. Archived from the original on 2020-04-19. Retrieved 2022-03-30.
  5. "Ecosystem". Archived from the original on August 7, 2013. Retrieved April 25, 2017.
  6. JUCE7 release notes: https://github.com/juce-framework/JUCE/releases/tag/7.0.0
  7. falkTX's DPF fork: https://github.com/DISTRHO/juce
  8. KottV's lv2-porting-project fork https://github.com/lv2-porting-project/JUCE
  9. "JUCE/ChangeList.txt at master · juce-framework/JUCE". GitHub. Retrieved 2023-09-15.