PitchBox is a small software application for transforming your voice or music in real-time.
PitchBox was developed for shows and exhibitions, and was hence tuned for that purpose. As such, most of the efforts
have been done in proposing ear-catching and attractive audio effects, and on reducing the latency as much as possible.
On the other hand, fewer efforts have been done in making it easy to install and setup, or in the amount of features it
provides.
If you want to use the audio effects of PitchBox within an audio editor, most of them are available as
LADSPA and VST plugins.
Screenshot
Download (version 2.1.0)
Generic version: PitchBox-2.1.0.7z (requires a JRE, see "Requirements" below)
Use 7zip to decompress .7z files if not supported by your operating system.
Windows 64-bit installer: PitchBox-Win-64bit-2.1.0.msi (includes its own JRE - Requires at least Windows 10 revision 1803)
If SmartScreen complains while installing, check that the version is genuine (it should not display "Unknown Publisher"). Also make sure you downloaded PitchBox from it's official home page https://www.pitchtech.ch/PitchBox/index.html. Then click on "More Info" and "Install Anyway".
Note: This project is not longer actively developped. You should not expect new versions or significant updates in the near future. Version 2.1.0 only adds a few features:
The native low-latency library now also works on 64 bit systems (Windows, Linux and macOS).
The application's window title shows "(RtAudio)" when the native low-latency library could be used, and "(JavaSound)" else.
In the "Buffer Size" setting, you can choose between ">=" (default) and "=". The second option is necessary for some ASIO drivers that only accept a single buffer size. With the first option, some complex effects such as STN Equalizer and Echo may use a greater buffer size to optimise performance.
PitchBox can now do mono to stereo processing, if you have a mono mic, and stereo output (in Settings, "Mode").
The "Pitch Shift" effect has a new "Rollers" mode that can achieve < 10 ms latency with a buffer size of 128 or less, and even < 5 ms with smaller values (needs a lot of CPU).
Requirements (version 2.1.0)
A Java Runtime Environment (JRE) version 8 or greater. The latest JRE can be downloaded at https://www.adoptium.net.
The Windows 64-bit (amd64) installer already includes its own embedded JRE. You still need an ASIO driver for low latency though (see 3rd point below).
Operating systems: Windows 7, 8, 10, 11+ (10 revision 8103 or 11+ for the installer), Linux, macOS 10.12+.
Those are the systems on which the native low-latency library is supported.
PitchBox may work on other operating systems (without the native low-latency library) as long as a JRE 8 or greater is available.
Windows only (recommanded for low-latency): A sound card with a native ASIO driver, or the generic ASIO4ALL driver.
Linux only: the native low-latency library requires ALSA (alsa-base). The JRE itself may require either ALSA or PulseAudio (depending on the version) to play audio when not using the native low-latency library.
Java Runtime Environment (JRE) version 5 or greater. The latest JRE can be downloaded at https://www.adoptium.net
Optional but strongly recommended for low latency: A sound card with a native ASIO driver, or the generic ASIO4ALL driver. Warning: only works with 32-bit JRE.
Linux
Kernel 2.6 or greater
Java Runtime Environment (JRE) version 5 or greater. The latest JRE can be downloaded at https://www.adoptium.net
Ubuntu users: the JRE is best installed using the synaptic package manager
As of writing this page, gcj still has some problems with PitchBox. Use the Sun JVM or the OpenJDK JRE instead if possible.
Other
PitchBox should run on any other system for which the Java Runtime Environment version 5 or greater is available
(Mac OS X, Solaris, etc). However, audio is recorded and played using JavaSound rather than using a native library,
and hence you may not be able to achieve low latencies.
Installation and Setup
Starting and using PitchBox
If the JRE is properly installed (see requirements), you should be able to start PitchBox just by double-clicking
on the PitchBox.jar file, or by using the context-menu "open with..." and choosing the Java runtime. Alternatively, you can also open a command-line, go in the PitchBox's directory, and start it using: java -jar PitchBox.jar
In the application,
Click on the "Audio In" check box to transform audio from any audio input (microphone, line-in) in real-time
Click on the "File" check box to open and transform audio from a music file (.mp3, .wav, etc)
Choose the effect you want in the "Audio effect" panel. "Normal" is the default one and plays the audio unmodified
Depending on the effect, you can modify additional parameters in the "Controls" panel while the audio is being processed
Choosing the audio input for real-time transformation
When "Audio In" is selected, PitchBox transforms audio in real-time from the default audio input port.
It will not automatically select the microphone input, or let you choose the audio input to use. It will also
not adjust the volume automatically.
Hence, you have to manually choose and setup the correct audio input port (microphone, line-in) using the setup tools
of your operating system or sound card.
On Windows, this is usually found in menu "Start/Settings/Control Panel/Sound", then by choosing the "recording"
tab. However, when using ASIO4ALL, you have to use ASIO4ALL's own control panel.
On Linux, this is usually done using the "alsamixer" command-line, or any graphical tool based on it.
On Ubuntu you can usually open it by clicking on the loudspeaker icon in the top right corner of the screen.
If you have multiple soundcards, sometimes you may need to change "Rec. dev." and/or "Play. dev." in PitchBox's settings to select
the proper one. Note that a soundcard might sometimes appear as the 3rd one or greater, even if there are only two soundcards in the system.
The proper way to setup the audio input widely differs from on system to another and from one sound card to another and it is
hence not possible to provide any precise user guide. Just a few hints:
The recording level should be adjusted such that the level-meter in PitchBox (top center of the window) goes to about 3/4 when speaking.
If it results in a too loud or too soft sound, then adjust the playback volume.
Never use the "stereo mix" input port with PitchBox (or with any record->process->play application)
Most audio input ports (microphone, line-in) sometimes also appear in the "Playback" tab. Usually, the levels
must be left to minimum (or mute) here, because they correspond to the "monitor" level, which is played
unmodified and without going through the audio applications.
Setting up the microphone
When trying to transform your voice from the microphone, audio feedback (high frequency loud tones, known as
Larsen effect) may occur, especially when using the build-in microphone of most today's laptops.
Audio feedback occurs because the microphone records some sound, which is transformed, amplified and played to
the loudspeaker a few milliseconds afterwards. This amplified sound is recorded itself again by the microphone,
and then transformed, amplified and played again, and this loop continues again and again. You get the picture.
Audio feedback cannot be prevented by the application, and may occur in any system with a real-time
record->amplify->play loop. A few hints to prevent audio feedback:
Reduce the playback volume. In general, as soon as the microphone re-records the amplified sounds at a lower
volume than the original ones, audio feedback disappears. You may still get echoes or resonances if the
volume is too close to the critical level.
Use headphones for playback.
Use a directional microphone (aka uni-directional, supercardioid or cardioid) instead of an omni-directional one
(most built-in laptop's microphones are omni-directional). Then make sure the microphone does not point in the
direction of the loudspeakers. Ideally, the loudspeakers must be behind the microphone.
Place the microphone as far as possible from the loudspeakers
Achieving low latency
With some effects, you may notice that the transformed voice is not played immediately, but about 1/4 seconds
after you speak, which is annoying, isn't it? This small delay is named latency, and is caused by several
factors. Furthermore, it depends on the effect itself. PitchBox has been designed to allow most effects to run at
low latencies, by following the advices below:
Within PitchBox,
Set the mode to Voice for effects that have a "mode" parameter. Note that while the voice mode
achieves the lowest latency, it also has the lowest quality. When processing a file, you should set the mode
to music to get the highest quality.
Click on the "Settings" button, and
reduce the "block size" parameter. Lower values decrease the latency, but also need more CPU power and accuracy from
the operating system. With too low values you will begin to hear clicks, buzz-like sounds, or the processing may
simply stop with an error. You may need several tries before finding the lowest value that works on your system.
change the "buffers" parameter (Linux only)
change the "sample rate" (some sound cards do not support 44100 or 48000Hz natively, and the driver does a
software resampling that may add latency)
If the PitchBox's window title shows "(RtAudio)" while playing, it means that the native low-latency library is in use. If it shows "(JavaSound)" instead, it means that the native low-latency library was not found or could not be used. In the later case, it might be difficult to achieve low latencies.
Note: the native low-latency library is based on RtAudio, with the ASIO interface on Windows, ALSA on Linux, and Core Audio on macOS.
If PitchBox failed to use the native low-latency library, it will not try again until you restart the application. If this was due to unsupported settings (such as a too low buffer size), you may need to restart the application, and change the settings before transforming any audio again.
By starting PitchBox from the command-line (java -jar PitchBox.jar), some debug information are displayed, that can sometimes help understanding what is going wrong.
When installed by the Windows 64-bit installer, use (from the PitchBox's directory): .\runtime\bin\java -XX:+UseZGC -jar .\app\PitchBox.jar
On Windows there is only one additional, but strong recommendation: use a sound card that has native ASIO support, or use the
generic ASIO4ALL driver (see requirements). Without ASIO, the latency will remain very high regardless of how
you change the settings of PitchBox.
On Linux, the application attempts to run at real-time priority, which significantly helps in achieving
low latencies. However, some distributions such as Ubuntu do not allow applications launched by a non-root user
to switch to real-time priority by default. In that case:
Create a new group named "audio" (if not already present), and add your account (or the account from which PitchBox is launched) to this group
Edit the file /etc/security/limits.d (you need to do this with root privileges) and add the following lines at the end of the file: @audio - rtprio 99 @audio - nice -10
Reboot
Another option is to simply launch PitchBox as root (or using sudo).
Low latency is usually difficult (or not possible) to achieve under virtualisation or emulation (VMWare, VirtualBox, etc).
On modern systems, and starting with Java version 17, the "Z" garbage collector (ZGC) can be used to improve stability with low-latency settings, as it never blocks the application for more than 1 ms. The ZGC can be activated by starting PitchBox from the command-line: "java -XX:+UseZGC -jar PitchBox.jar". The ZGC is used by default when using the Windows 64-bit .msi installer.
With laptops in general, there are usually power scheme choices such as "high performance", "power saver", etc.
In that case, it may help to choose something like "high performance" or similar rather than "power saver".
On "good systems" and with proper settings, you should be able to get a total latency
below 10ms for "Normal", "Flanger", "Graphic Eq", "Detune", "Miserablize", "Distort", "Zombify" and "Pitch Shift" (in Rollers mode).
below 20ms for "Echo", "Pitch Shift", "Whisperize", "Ghost Dance", "Thor" and "Vocoder"; all in Voice mode (when available)
below 30ms for "Robotize", "Water", "Octaver", "PitchScrew" in Voice mode, and "Pitch Shift", "Thor" and "Vocoder", all in Mixed mode (when available)
Unfortunately, I'm afraid I'm unable to tell you what a "good system" is for PitchBox, as it depends on
too many factors that are hardly ever documented. Except perhaps that you need at least a 1.2GHz CPU.
Troubleshooting
Sorry Prof. Drake, I couldn't finish my homework
This happens if you computer is too slow to process audio with the chosen effect and buffer size settings. As each effect has different
requirements in terms of CPU power, this error may only show up for some effects. Also note that you may sometimes
hear a lot of clicks or a buzz-like sound, sign that the computer is too slow as well, without the message appearing.
If this occurs, here's a few hints:
Click on "Settings", and try
increasing the buffer size
increasing the buffers (Linux only, or when in JavaSound mode)
setting the "Mode" to "Mono" instead of "Stereo"
If you use a laptop, check that the power scheme (if any) is set to "high performance" (or similar) rather
than "power saver" (or similar)
If your CPU is less than 1Ghz, there may not be a solution. Some effects just require a lot of CPU.
Failed to open audio device
This happens if the settings are not supported by your sound card driver or by the operating system.
The simplest solution is to click on the "Settings" button, and then on "Reset" and "OK" in the settings
dialog box. This restores the default audio device settings, which are compatible with almost all systems.
Alternatively, click on the "Settings" button, and then change the following in the settings dialog box:
If recording or playback seems to come from the wrong device, you may try to change "Rec. dev." and / or "Play. dev.".
First reset all settings to the default values. Then change these values to identify the correct playback and recording device,
and then only, change the other settings to optimize the latency.
Try changing the "Sample rate" setting: some soundcards only work with a single sample rate, usually 48000 Hz.
Try changing the "Buffer size" setting. Most sound drivers do not support the lowest or highest values.
Values around 1024 should be supported on most systems.
Try changing the "Buffers" parameters (although this is unlikely to make a change, unless running on Linux)
When transforming voice in real-time, check that the driver for your sound card actually supports
recording and full-duplex (recording and playing at the same time). This may not be the case on Linux,
especially with recent sound cards. If not supported, you can only transform audio from music files.
One some systems, the microphone only works in mono. In that case try selecting "Mono to Stereo" or "Mono" in the "Mode" setting.
I cannot hear any sound
Click on the current effect button again to restart processing.
Make sure you have checked "Audio in", or you have checked "File" and chosen an audio file
If an error is displayed, see the sections above
If the level meter of PitchBox (top center of the window) is animated when processing from a music file
and you still hear nothing, I'm afraid the problem is not due to PitchBox, but to the audio setup of
your system. Welcome to the messy world of computer audio!
PitchBox does not start or crashes
The Windows 64-bit .msi installer requires at least Windows 10 revision 1803. On older systems, the installer may finish successfully, but then PitchBox will not start. On such systems (including Window 7 and 8), you should use the Generic version of PitchBox (.7z) instead of the Windows 64-bit installer.
The generic version of PitchBox 2.1.0 requires a Java Runtime Environment (JRE) version 8 or greater. It will not work with an older JRE. The JRE must be installed separately.
If, for some reason, the native low-latency library makes PitchBox crash, you can disable it by starting PitchBox from the command line as follows: java -DJavaSound=true -jar PitchBox.jar