RjLib

General

The rj-subdirectory of RjLib includes a big collection of useful Pd object for creating scenes. You can browse it at: http://trac.rjdj.me/browser/trunk/rjlib/rj and download it together with the rest of the RjLib using subversion:

     svn co http://svn.rjdj.me/scenes/trunk/rjlib/

To get an overview you should open the file rj/OVERVIEW.pd. The abstractions can be freely distributed according to the GPL v3 rsp. the "Standard Improved BSD License" known from Pd itself. Which license applies is indicated by a subpatch in each abstraction. See the file source:trunk/rjlib/rj/LICENSE.txt for the full license texts.

These abstraction are all in a directory called "rj" which can be used as a prefix in order to distinguish between rjlib abstractions and abstractions which are used from the scene directory directly. In order to make things shorter we refer to the abstraction by their name (without the rj prefix) in this document.

All abstraction that will be directly used have a type prefix, where the current types are as follows:

  • s_ synthesizers and instruments
  • m_ mapping objects (translate events into parameters of synths and effects)
  • e_ effects and filters
  • c_ control data generation objects
  • u_ utilities
  • g_ GUI objects

For each section, there is a textfile briefly listing the objects and a short description like this:

s_blsaw - bandlimited sawtooth wave 
s_blsquare - bandlimited square wave with PWM
...

This is used to dynamically generate an object's listing in rj/OVERVIEW.pd

Communication

The commands that are sent within rjlib are "typed" in a sense that it is differentiated between midi pitches, frequencies, amplitudes, etc.

Suggested standard commands and their arguments are:

  • note 67 100: a MIDI note with velocity ranging fro 0-127
  • pitch 60: pitch value in midi terms ranging from 0-127
  • freq 440: frequency value
  • vel 100: velocity value in midi terms ranging from 0-127
  • amp 0.4: an amplitude value
  • ampdb 99: amplitude value in Pd-dB terms (0=silent, 100=full volume)
  • ...

Preset system

rjlib uses a preset system based on the sssad.pd abstraction. Generally the rightmost inlet is reserved for messages whose last state can be saved. Some objects like [s_fm4] use the rightmost outlet as a shortcut to report their state. See the help files for [u_dispatch] and [u_loader] for details on the saving system.

Control

Overview file: source:trunk/rjlib/rj/c.txt

implemented

  • c_adsr: standard adsr
  • c_adsrj: GUI adsr
  • c_mphasor: message phasor for LFO building.
  • c_multimetro: variable period metro with counter inside
  • c_xfade: linear crossfade

not implemented

  • c_touch: preprocess touchscreen and send to touch symbol
  • c_accelerate: preprocess accelerometer
  • c_pitch: calculate pitch
  • c_simpleonset: calculate onset values
  • c_classifier: classify sounds

Mapping

Overview file: source:trunk/rjlib/rj/m.txt

implemented

  • m_bpm2ms: convert between BPM and periods in milliseconds
  • m_scale: scale the incoming values to a certain range
  • m_speedlimit: limit message speeds

not implemented

  • m_symsel: map number to a symbol
  • m_range: filters out a range of values
  • m_range2d: filters out a 2d range of values (e.g touchscreen)
  • ...

Synths

Overview file: source:trunk/rjlib/rj/s.txt

implemented

  • s_blsaw: bandlimited saw wave
  • s_blsquare: bandlimited square wave
  • s_buzz: Buzz
  • s_guitar: karplus strong guitar
  • s_looper: sample player with looping and internal file storage
  • s_playtable: playback a table
  • s_playtable2: playback a table stereo
  • s_fplaytable: playback without pitch shifting (faster) +
  • s_fplaytable2: playback without pitch shifting stereo +
  • s_rhodey: FM Rhodes piano

not implemented

  • s_drumelectro: Synthesized electro drumset
  • s_drumsample: Sampled drumsounds
  • s_sampler: One sample
  • s_msampler: Multiple samples
  • s_analog: Simple analog synth
  • s_fm: Fm synthesis
  • soundinput: Sound input

Effects

Overview file: source:trunk/rjlib/rj/e.txt

implemented

  • e_alias: resampler generates aliasing effect
  • e_bitcrusher: reduce bit depth of a signal
  • e_chorus: stereo chorus
  • e_chorusr: Roland style chorus
  • e_fbdelay: Feedback delay loop + input parameter
  • e_fbdelay2: Stereo feedback delay
  • e_pan: Stereo panning - constant power using cosine law
  • e_phaser: Phaser
  • e_pingpong: Ping-pong delay
  • e_softclip: Distortion
  • e_vocoder: Vocoder effect
  • e_reslop: Resonant lowpass filter
  • e_reverb: Reverb (maybe wrappers around rev1~, rev2~ and rev3~)
  • e_pitchshift: Pitch shifter
  • e_freqshift: Frequency shifter
  • soundoutput

not implemented

  • e_compress: Compressor
  • e_flanger: Flanger effect
  • e_pfilter: Parametric Filter
  • e_dubdel: Delay line
  • e_decimate: Bit decimator

Utilities

Overview file: source:trunk/rjlib/rj/u.txt

  • u_record: record samples into tables
  • u_samplebank: load samples into tables
  • u_samplebank2: load stereo samples into tables
  • u_stereo: convert mono effect into stereo

GUI

Overview file: source:trunk/rjlib/rj/g.txt