Code Monkey home page Code Monkey logo

grnlr's Introduction

GRNLR

GRNLR is an open source granular synthesis VST/AU instrument for Mac and Windows with a focus on flexibility and ease of use. It offers a approach to granular synthesis that allows for a great number of simultaneous playing grains as well as supporting extremely short and long grains. The instrument comes with a tutorial documenting every stage of the development process. The tutorial is intended as a resource for people wanting to learn how to write their own instruments using the JUCE Framework.

Here is a playlist of 7 short pieces I wrote using the plugin.

grnlr's People

Contributors

passivist 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  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

grnlr's Issues

Plugin crashes when using hold button

I think this has something to do with this line:
midiNote = activeNotes[Random::getSystemRandom().nextInt(activeNotes.size())][0];
and activeNotes going out of bounds resulting in a segmentation fault:
JUCE Assertion failure in juce_Random.cpp:80 Segmentation fault: 11

no gui

i tried it in lmms doesn't have a gui.

Plugin Crashes on Windows

Plugin Crashes on Windows when grains are triggered very quickly (>0.01s) due to the vector holding the grains getting out ouf bounds.

This is most likely because we iterate over the vector while we are deleting finished grains.

Add Logging Mechanism

Add a logging mechanism to make debugging in commercial DAWs easier. Right now the Terminal Output of the Plugin is only accessible from the JUCE Plugin Host. DAWs like Logic or Ableton don't output much to the Terminal so it would be useful to write all the output to a log file!

Plugin should not rely on the user to open the UI

The Message Thread is only started when the GUI of the plugin is opened. This results in the values of all the parameters and the sample path not being restored until the GUI is opened by the user.

Find some way to start the message thread at the same time the audio thread is started!

Grain Onsets Jitter

The scheduling threads doesn't wait the correct amount resulting in the grain onsets jittering. The difference between the time the grain should play and it actually playing seems to be related to the sample rate:

dur: 0.24 next: 11520 jitter: -256
dur: 0.24 next: 11520 jitter: 256
dur: 0.24 next: 11520 jitter: -256
dur: 0.24 next: 11520 jitter: 256
dur: 0.24 next: 11520 jitter: -256
dur: 0.24 next: 11520 jitter: 256

dur: 0.024 next: 1152 jitter: -128
dur: 0.024 next: 1152 jitter: -128
dur: 0.024 next: 1152 jitter: -128
dur: 0.024 next: 1152 jitter: 384
dur: 0.024 next: 1152 jitter: -128
dur: 0.024 next: 1152 jitter: -128
dur: 0.024 next: 1152 jitter: -128
dur: 0.024 next: 1152 jitter: 384
dur: 0.024 next: 1152 jitter: -128
dur: 0.024 next: 1152 jitter: -128
dur: 0.024 next: 1152 jitter: -128

a multiple of the sample rate (48khz) doesn't result in errors:

dur: 0.48 next: 23040 jitter: 0
dur: 0.48 next: 23040 jitter: 0
dur: 0.48 next: 23040 jitter: 0

Constructor for AudioProcessor is called 2 times

It appears that the constructor for GrrnlrrAudioProcessor is called two times.

When trying to add a logging class to the project (and not deleting it in the destructor) I got this warning from JUCE:

*** Leaked objects detected: 2 instance(s) of class FileLogger
JUCE Assertion failure in juce_LeakedObjectDetector.h:95

But there should have been only one instance of FileLogger created...

Random Object is Leaking

Plugin Returns when closing:

*** Leaked objects detected: 1 instance(s) of class Random
JUCE Assertion failure in juce_LeakedObjectDetector.h:95

maybe fix by using getSystemRandom()

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.