Orinj version 7.0.0
Note: This page is not for the users of Orinj, but for developers who want to create digital signal processing effects for Orinj.
Orinj uses a strict framework for effects. This means that effects have to implement specific Java interfaces and extend specific Java classes and have to be placed in Java JAR files that contain XML descriptions according to a strictly defined XML schema. This allows Orinj to recognize and import effects during startup. Thus, effects are not a part of the Orinj code, but are separate from the software. Effects can be created and updated without Orinj. Similarly, Orinj can be updated without changing the underlying effects. This also means that developers can create their own effects.
The following are topics on the Orinj effect framework.
These are further explained below.
- oreffec.jar – this JAR file is the basis for all Orinj effects. It contains the interfaces that should be implemented by the effect itself and by the graphical user interface for the effect.
- Example delay package – this topic includes the source code for an example Orinj effect – a simple delay with as single delayed and decayed repetition of the signal. The actual JAR package is described in this topic. The following topics provide further detail on the actual effect and its graphical user interface.
- Example delay Delay.java – this topic describes the source code for the class that implements the actual delay effect.
- Example delay DelayPane.java – this topic describes the source code for the class that implements the graphical user interface for the delay effect.
- Example delay effect.xml – every effect package must contain an effect.xml file that describes the effects in the package to Orinj. This topic describes the effect.xml file included in the example delay package.
- Testing effects – this topic includes source code that allows developers to test their effects.
Effects and multithreading
While Orinj uses various threads during playback, recording, and the premixing of tracks (see Orinj Working with sessions tracks), no two such threads will access effects simultaneously. This means that effects created for Orinj do not need additional code to be thread safe.
For example, many of the default Orinj effects initialize audio buffer storage at the beginning of playback or mixing and use buffer storage during playback and mixing. Playback, however, will not begin until the premixing of tracks is complete and hence playback will not attempt to initialize or use audio buffer storage while premixing is doing the same.