Discover
What's New
Features
Learn
Documentation
Tutorials
Made with JUCE
Resources
Forum
Get JUCE
Getting Started
Getting started with the Projucer
Learn how to install JUCE. Create a Projucer project, and generate Xcode/Visual Studio projects that you can run and debug.
Manage your Projucer projects
The Projucer is a very powerful tool for managing cross-platform projects. Learn how to configure your build settings, create new export targets and configurations, and use the Projucer's C++ code editor.
Create a basic audio plug-in, part 1
Set up your computer to create and build audio plug-ins using JUCE.
Create a basic audio plug-in, part 2
Create a simple VST or AudioUnit plugin using JUCE, featuring a custom GUI and MIDI input.
Choosing the right Projucer template for your application
Explore the different template projects that the Projucer offers and the main classes to watch for when conceiving your applications.
Getting started with the Projucer
Learn how to install JUCE. Create a Projucer project, and generate Xcode/Visual Studio projects that you can run and debug.
Audio
Build an audio player
Let your app read from audio files such as WAV, AIFF, Ogg-Vorbis etc. Add more GUI controls to your music player such as Play, Pause, and Stop buttons.
Processing audio input
Capture audio input, process it and pass it to the audio output.
Looping audio using the AudioSampleBuffer class
This tutorial shows how to play and loop audio stored in an AudioSampleBuffer object. This is a useful basis for sampling applications that manipulate recorded audio data.
Looping audio using the AudioSampleBuffer class (advanced)
This tutorial shows how to play and loop audio stored in an AudioSampleBuffer object using thread-safe techniques. A technique for loading the audio data on a background thread is also introduced.
Draw audio waveforms
Learn how to draw waveforms of audio files loaded from disk. This tutorial will familiarise the reader with the AudioThumbnail class.
The AudioDeviceManager class
This tutorial introduces the AudioDeviceManager class which is used for managing audio devices on all platforms.
Synth
Build a white noise generator
Create a basic audio app that outputs some sound. In this example, we will build a simple white noise generator.
Control audio levels
Add user controls to your audio app. Add a slider to let the user adjust the level of a noise generator.
Control audio levels using decibels
This tutorial shows how to process audio to change its output level using the decibel scale. This is a more common way in which to present audio level values to the user within audio applications.
Build a sine wave synthesiser
Learn how to use a sine wave to synthesise a basic musical tone. Let the user modify the pitch of the tone from the graphical user interface.
Build a MIDI synthesiser
This tutorial implements a polyphonic sine wave synthesiser that responds to MIDI input. This makes use of the Synthesiser class and related classes.
Wavetable synthesis
Incorporate wavetables to optimise your synthesiser oscillators. Manage the state of a sine wave oscillator using a wavetable and write data to the audio output.
MIDI
Create MIDI data
Generate MIDI data in your app so that you can control external synths and devices.
Handling MIDI events
This tutorial illustrates how to handle MIDI input events. In addition to handing MIDI data from an external source, an on-screen keyboard component is introduced.
Control audio levels using decibels
This tutorial shows how to process audio to change its output level using the decibel scale. This is a more common way in which to present audio level values to the user within audio applications.
Build a multi-polyphonic synthesiser
Learn the basics of the MPE standard and how to implement a synthesiser that supports MPE.
Understanding MPE zones
Learn the concept of zones and the conventions for zone layouts as defined in the MPE standard.
Wavetable synthesis
Incorporate wavetables to optimise your synthesiser oscillators. Manage the state of a sine wave oscillator using a wavetable and write data to the audio output.
Plugins
Adding plug-in parameters
Add parameters to your audio plug-in to allow control and automation from your digital audio workstation.
Saving and loading your plug-in state
Manage your plug-in parameters in an elegant and sophisticated manner.
Configuring the right bus layouts for your plugins
This tutorial shows how to process audio to change its output level using the decibel scale. This is a more common way in which to present audio level values to the user within audio applications.
Cascading plug-in effects
Create your own channel strip by learning how to daisy chain audio processors or plugins using an AudioProcessorGraph. Learn how to use the AudioProcessorGraph in both a plugin and standalone application context.
Plugin examples
This tutorial explains several audio/midi plug-in examples in detail and explores the open possibilities of plug-in development.
Wavetable synthesis
Incorporate wavetables to optimise your synthesiser oscillators. Manage the state of a sine wave oscillator using a wavetable and write data to the audio output.
DSP
Introduction to DSP
Discover the realm of digital signal processing and audio buffer manipulation. Learn the basics of the JUCE DSP module and how you can incorporate its classes in your own audio application and plugins.
Add distortion through waveshaping and convolution
Add grit to a synthesiser sound by creating harmonic distortion through waveshaping. Learn the basics of convolution to retrieve the sonic characteristics contained in an impulse response.
Create a string model with delay lines
Implement a realistic string model by means of physical modelling. Incorporate a delay line to create intricate echo patterns in the stereo sound field.
Optimisation using the SIMDRegister class
Take advantage of the processor's parallelism to perform single instruction multiple data calculations. Optimise your audio applications without introducing concurrency.
The fast Fourier transform
Learn how to display incoming audio data as a spectrogram by using the FFT class of the DSP module. Understand the benefits of using a Fast Fourier Transform.
Visualise the frequencies of a signal in real time
Learn how to display incoming audio data as a spectrum analyser by using the FFT class of the DSP module. Understand the benefits of using a windowing function.
Graphics
The application window
Create a basic GUI app with a resizable window.
The main component
Learn how to add a content component to your window that can hold different graphical elements.
The Graphics class
Fill your app with colour! Add colours, text, lines and other geometrical shapes.
Animating geometry
Create simple animations in your JUCE applications. Bring static geometry shapes to life using the AnimatedAppComponent class.
Build an OpenGL application
Learn how to get started with OpenGL as a high performance rendering library within your JUCE applications. Render beautiful 2D and 3D graphics in your audio apps and plugins.
Visualise the frequencies of a signal in real time
Learn how to display incoming audio data as a spectrum analyser by using the FFT class of the DSP module. Understand the benefits of using a windowing function.
Interface Design
Parent and child components
Learn how to arrange your components into a hierarchy to build a modular graphical user interface for your JUCE app.
Customise the look and feel of your app
Make a custom skin for your application by drawing your own buttons, sliders, and other components.
Colours in JUCE
Specify and apply colours within your application in various ways.
The Point, Line, and Rectangle classes
Use the Point, Line, and Rectangle classes to simplify your geometry calculations.
Advanced GUI layout techniques
Lay out your components with a simple yet powerful technique that will produce elegant code with fewer bugs.
Responsive GUI layouts using FlexBox and Grid
Build responsive GUI layouts that work across different screen sizes and orientations using the FlexBox and Grid classes. Learn how to quickly visualise Components using the Projucer Live Build editor.
Listeners and Broadcasters
Make your app interactive! Learn how to connect different elements of your GUI. In this example, we let a graphical element automatically change whenever the user clicks on a button.
The Slider class
Add sliders to your app to graphically modify a value within a range. Learn how to use the Slider class to handle different values and ranges, and how to use logarithmic ranges.
The Label class
Add labels to display text in your apps. Learn how to customise the appearance of text using the Label class and display simple text editors.
The ComboBox class
This tutorial introduces the ComboBox class, which is a component for displaying lists of items to the user. The contents of a ComboBox object can be modified dynamically, and can be used for text input, too.
Radio buttons and checkboxes
Use radio buttons and checkboxes to add selectable options to your application.
The TableListBox class
Incorporate tables into your JUCE user interfaces. Display data loaded from an XML file and customise the format of your table.
Mobile
Getting started with Android
This tutorial introduces the use of Android Studio for creating JUCE-based projects.
Managing Android screen sizes
Build your application for different screen sizes. There are many available screen sizes on Android, this tutorial examines some strategies to manage this.
In-App Purchases on desktop and mobile devices
Sell consumable and non-consumable In-App Purchases in your desktop and mobile applications. Learn how to setup and process payments for IAP products on both macOS/iOS and Android devices.
In-App Purchases on desktop and mobile devices
Sell consumable and non-consumable In-App Purchases in your desktop and mobile applications. Learn how to setup and process payments for IAP products on both macOS/iOS and Android devices.
Push Notifications on desktop and mobile devices
Trigger local and remote notifications in your desktop and mobile applications. Learn how to send push notifications from a remote server to both macOS/iOS and Android devices.
Responsive GUI layouts using FlexBox and Grid
Build responsive GUI layouts that work across different screen sizes and orientations using the FlexBox and Grid classes. Learn how to quickly visualise Components using the Projucer Live Build editor.
Utility Classes
The BigInteger class
This tutorial introduces the BigInteger class, which is for handling arbitrarily large integers. BigInteger objects are often used in cryptography applications, when large bit masks are needed, and anywhere else where really large integers are needed.
The Random class
This tutorial introduces generating random numbers using the Random class. Random numbers are useful in all sorts of situations including games, cryptography, and audio.
File reading
Open and read data from text and binary files.
The ValueTree class
Learn how to use the ValueTree class to manage data effectively in your applications.
Using an UndoManager with a ValueTree
Implement undo/redo actions in your applications. Easily restore previous intermediate states with UndoableAction objects and learn how to group undoable actions into transactions.
App analytics collection
Collect app usage data from users in JUCE applications. Send analytics events to Google Analytics using the analytics module.
Unlock your plugins through online registration
Improve the security of your apps and plugins by locking their access until authorisation. Learn how to provide users with a mechanism to unlock your plugins through online registration of keys.
Package your app or plugin for distribution
Learn how to prepare your audio application or plugin for distribution on various marketplaces. Create installers for all plugin types on different OS platforms.
Implement the OSC protocol in your app
Learn how to harness the Open Sound Control protocol to connect several applications together over a network. Send and receive interaction data between applications.
Purchase
Get JUCE
Discover
What's New in JUCE
Features
Learn
Documentaion
Tutorials
Made with JUCE
Resources
Support
JUCE Forum
Newsletter
Archive
About
Contact Us
JUCE Legal
JUCE Licensing FAQ
Events
Audio Developer Conference
Visit our Facebook
Visit our Twitter
Visit our LinkedIn
Visit our YouTube channel
© Raw Material Software Limited
user-circle
linkedin
facebook
pinterest
youtube
rss
twitter
instagram
facebook-blank
rss-blank
linkedin-blank
pinterest
youtube
twitter
instagram