Code Monkey home page Code Monkey logo

audio-effects's Introduction

Reiss-McPherson Audio Effects examples

This repo contains updated and revised versions of JUCE-based audio effect plug-in code examples, originally published by Joshua D. Reiss and Andrew McPherson, to accompany their 2014 book Audio Effects: Theory, Implementation and Application.

The original code was developed with a much earlier version of the JUCE software framework than is in use today, since which there have been some API-breaking changes. I am in the process of re-writing all the examples.

This code is licensed under the GNU General Public License, version 3 (with a few exceptions -- see below under "Licensing").

Important link

As explained below and elsewhere, I haven't actually completed the re-implementation of the phase vocoder based effects. I would direct the interested reader to this excellent work by Juan Gil, PhD Fellow at Aalborg University in Denmark.

Original code

The original code examples are preserved at the SoundSoftware site. Several of the projects are now substantially out-of-date and don't compile cleanly in Microsoft Visual Studio 2017 and Xcode 10.

The effects folder in this repo contains lightly-updated versions of the original projects, which (with one exception) at least compile, though with many warnings. Due to changes in the JUCE framework since the code was written, several of the plug-ins don't actually run properly.

New code

The effects-new folder contains re-written versions of Reiss and McPherson's original examples (plus one or two new ones). I'm doing this in pursuit of five goals:

  1. Clean compile and build under VS2017 and Xcode 10.
  2. Improved consistency in the code base.
  3. Purging all deprecated JUCE coding practices.
  4. Improved parameter handling through use of juce::AudioProcessorValueTreeState and related classes.
  5. Improved graphical user interfaces, which are simple, yet usable.

See the README.md files in effects-new folder and its subfolders for more details.

The JUCE framework

The JUCE Framework itself is NOT included here. To use this code, you will need to obtain and install your own copy of the framework from the JUCE web site. Your life will be easier if you install the framework in the preferred location for your platform: C:\JUCE on Windows, and ~/JUCE on macOS and Linux.

Once you have installed the JUCE framework, you should be able to double-click any of the .jucer project files to open them in the JUCE Projucer application (referred to by its older name, "Introjucer", in the 2014 Reiss-McPherson book), and "export" ready-to-build projects for your IDE(s) from there. Refer to the JUCE site for details.

Licensing

The JUCE framework is not free--it is commercial software which happens to be offered under a dual-license scheme. Its development is funded by people and companies who pay for a commercial license, which permits them to use it in closed-source projects. However, the developers are kind enough to allow it to be used without payment in open-source projects, provided these are offered under the GNU General Public License, version 3 (GPL3). In accordance with this requirement, all the code examples published here are governed by the GPL3.

The GPL3 forbids unauthorized use of GPL-licensed code in closed-source projects, which in turn means that if you copy any part of a GPL-licensed program for use in another project, that project must itself be GPL-licensed and open-source. However, the GPL3 also states clearly that authorized uses can be exempt from these rules. This is what allows dual-licensing schemes of the sort used by JUCE, and also allows me to designate certain parts of these projects (of which I am the sole author and copyright holder) as being more freely usable under the MIT License.

audio-effects's People

Contributors

getdunne avatar mcas4150 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.