raptor
所属分类:数学计算
开发工具:C
文件大小:0KB
下载次数:0
上传日期:2018-01-12 22:46:35
上 传 者:
sh-1993
说明: 猛禽,随机琶音发生器(作为Pd补丁实现的实时算法合成程序)
(Raptor, the random arpeggiator (real-time algorithmic composition program implemented as a Pd patch))
文件列表:
COPYING (35147, 2018-01-12)
Makefile (4010, 2018-01-12)
Raptor5.pd (36562, 2018-01-12)
Raptors.jzml (53337, 2018-01-12)
Raptors.mk2 (117, 2018-01-12)
Raptors.pd (42664, 2018-01-12)
Raptors.touchosc (2265, 2018-01-12)
factor.pure (1694, 2018-01-12)
hrm.pure (2353, 2018-01-12)
indisp.pure (1244, 2018-01-12)
loader.c (2367, 2018-01-12)
mkmeter.pure (426, 2018-01-12)
mksym.pure (234, 2018-01-12)
mktuplet.pure (967, 2018-01-12)
ms2ticks.pure (323, 2018-01-12)
oscbrowser.pd (5867, 2018-01-12)
oscfilter.pure (152, 2018-01-12)
pd/ (0, 2018-01-12)
pd/m_pd.h (28079, 2018-01-12)
pdstub.c (774, 2018-01-12)
presets/ (0, 2018-01-12)
presets/arp.raptor (194, 2018-01-12)
presets/bass.raptor (197, 2018-01-12)
presets/defaults.raptor (167, 2018-01-12)
presets/piano.raptor (252, 2018-01-12)
presets/shred.raptor (252, 2018-01-12)
presets/shred2.raptor (254, 2018-01-12)
presets/storm.raptor (254, 2018-01-12)
presets/sweep.raptor (194, 2018-01-12)
presets/vibes.raptor (258, 2018-01-12)
presets/wave.raptor (254, 2018-01-12)
pure-remote.pd (1109, 2018-01-12)
raptor-meta.pd.in (353, 2018-01-12)
raptor-preset.pd (6346, 2018-01-12)
raptor.pure (38255, 2018-01-12)
splitmeter.pure (511, 2018-01-12)
symchange.pure (193, 2018-01-12)
ticks2ms.pure (323, 2018-01-12)
... ...
Raptor 5: The Random Arpeggiator
================================
Albert Grf
Computer Music Research Group
Johannes Gutenberg University (JGU) Mainz, Germany
The Raptors.pd patch implements an experimental algorithmic composition
arpeggiator program with 3 parts (i.e., 3 Raptor instances running in
parallel, each with their own set of parameters). A few sample presets are
included in the presets folder, and you can use the raptor-preset subpatch (in
the lower left corner of the main patch) to switch between these. This
subpatch also has some controls to change meter and tempo.
The patch accepts MIDI note input, as well as controller and system realtime
messages for the most important controls as detailed below. The controller
assignments should be convenient to use with popular modern MIDI controllers
featuring keys, pads and rotary controllers, such as the Akai MPK mini, or
more "classic" equipment like the Behringer controllers.
The actual algorithmic core of Raptor is implemented as a Pd external written
in Pure, see the raptor.pure program. Thus in addition to Miller Puckette's Pd
you'll also need the author's Pure plugin loader for Pd (pd-pure) to run it.
Any recent version and flavour of Pd will do; see . The
author's Pure programming language and the pd-pure plugin loader can be found
at . We also provide ready-made packages of
pd-pure for Linux (Arch, Ubuntu and derivatives) and macOS (via [MacPorts][]),
please refer to the link above for details. Mac users may also want to check
the [Pure on Mac OS X][] wiki page for detailed instructions.
[MacPorts]: http://www.macports.org/
[Pure on Mac OS X]: https://github.com/agraef/pure-lang/wiki/PureOnMacOSX
## Copying
Copyright (c) 2005-2018 by Albert Grf.
Raptor is free software: you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.
Raptor is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program. If not, see .
## Changing Presets, Tempo and Meter
The main Raptors patch has a raptor-preset subpatch offering controls to
change presets, meter and tempo in a convenient fashion.
The preset-changing control is the radio button strip in the right upper
corner of the subpatch. Simply click on one of the radio buttons to change the
preset. This will affect all three parts. Note that currently the preset names
for the different parts are hard-wired, so in order to change these you'll
have to open the subpatch and edit the patch accordingly. Also note that once
the patch and the initial presets have been loaded, subsequently switching
presets will *not* affect the tempo and meter any more, so that these can be
changed freely with the other controls in the subpatch, see below. However, it
is possible to force tempo and meter settings to be loaded from a preset. To
do this, press and hold the Ctrl key (or click the red button in the lower
right corner of the subpatch) and then choose the preset you want to load by
clicking on the corresponding radio button as usual.
The remaining controls in the subpatch provide a way to set tempo and meter in
a convenient fashion that will be familiar to musicians.
The tempo (in BPM a.k.a. beats per minute) can be changed using the slider or
the number entry widget in the bottom row of the subpatch. By default, in
tempo calculations a "beat" is taken to mean a quarter note. The actual
frequency of base pulses in the chosen meter then is m/4 times the BPM
value, where m is the denominator of the meter (see below).
The meter can be changed with the three strips of radio buttons in the middle
of the subpatch. The *green* strip changes the *numerator* (number of base
pulses), the *red* strip the *denominator* (unit of the base pulses) and the
*white* strip the *subdivision* of the meter (tuplets). The latter setting
applies a heuristic which lets you play tuplets of the given kind (1
indicating no subdivision, 2 duplets, 3 triplets, etc., up to 7-tuplets)
without changing the basic meter and tempo.
NB: Raptor's tuplet heuristic isn't perfect and in some corner cases only
calculates a rough approximation which is expressible as a Raptor meter in the
format discussed below. In particular, you should make sure that the tuplet's
real length (which is 3 in the case of duplets and quadruplets, 2 in the case
of triplets and 4 in the case of 5-, 6- and 7-tuplets) divides the number of
base pulses, otherwise the numerator of the resulting meter will be rounded
down to the nearest integer. For complicated meters it is often easier to get
what you want by adjusting tempo and meter directly, using the input format
for meters discussed below.
In any case, the resulting meter is displayed in the symbol entry widget above
the white strip of radio buttons. The symbol box can also be used to just
directly enter the desired meter. The format used by Raptor allows you to
specify a meter using the customary n/m notation where n denotes the numerator
(the number of base pulses making up a measure) and m the denominator (unit of
the base pulse) of the meter. The latter is usually a power of 2, but Raptor
allows you to use any positive integer there, which is useful when tuplets are
the base pulse of the meter. Moreover, the numerator n can also be specified
in *stratified* form by explicitly listing the decomposition of the meter into
different levels separated by dashes. E.g., 12/16 can also be specified as
4-3/16 or 2-2-3/16. Or you could write 6-2/16 or 2-3-2/16 to denote a 6/8
meter subdivided into 16th notes. Likewise, a 6/8 meter subdivided into
triplets would be specified as 18/24, 6-3/24 or 2-3-3/24.
If you don't specify a stratified meter, Raptor does the stratification
internally anyway, by decomposing the numerator into its prime factors in
ascending order. Finally, if the denominator m is omitted, Raptor chooses the
power of 2 which is closest to the numerator as a reasonable default, so that
in most cases you can also just specify the (unstratified or stratified)
numerator of the meter. E.g., 2 becomes 2/2, 3 becomes 3/4, 9 becomes 3-3/8,
12 becomes 2-2-3/16, 2-3-2 becomes 2-3-2/16, etc.
One important limitation to keep in mind is that Raptor only supports integer
(non-fractional) components in both the numerator and denominator of the meter
right now. As already mentioned, this affects, in particular, the tuplet
heuristic. The default meter shown initially in the raptor-preset patch is 4/4
(common time) a.k.a. 2-2/4, but note that this may be overridden by the preset
loaded at startup. The raptor-preset patch always changes tempo and meter for
all Raptor parts simultaneously. However, it is also possible to change meter
and tempo (and even the definition of a "beat") by changing the corresponding
fields in each individual Raptor part. This makes things much more complicated
and will only be needed in special situations; in particular, it allows you to
configure polyrhythms in Raptor, which isn't possible possible with just the
raptor-preset patch.
## Editing Presets
You can click the Edit button in each of the three Raptor parts to open the
corresponding subpatch, which will give you a bunch of additional control
parameters which can be changed to affect Raptor's operation. (A more detailed
description of the parameters is beyond the scope of this document, so we
refer the reader to the raptor.pure script instead.)
Once you have changed the parameters to your liking, you can close the
subpatch and click the Save button to write your changes to the corresponding
preset file. You can also use the SaveAs button if you want to save the
settings in a new preset file instead, or use the Load button to load a
different preset file.
## Performance Controls
In addition, each Raptor part also has a few special toggles visible in the
main patch which are typically used in real-time during performance:
- "Mute" (abbreviated "M") silences one part, i.e., it suppresses note output
from that part (but not the metronome clicks, see "Metronome" below).
- "Hold" ("H") provides a kind of ostinato effect in which input notes are
kept indefinitely. Raptor will then loop playing the same notes and chords
at random until "Hold" is switched off again.
- "Pause" ("P") pauses a part until it is switched off again, at which point
the part resumes with the next pulse it was about to play when paused.
Parameter changes such as meter and tempo are still registered and will take
effect when the part resumes. This is typically applied to all parts
simultaneously, but if your timing is exact enough, you can also use this
with individual parts to achieve some interesting polyrhythmic effects.
Muting individual parts can also be done with the F1, F2 and F3 keys, and you
can hold or pause all parts with the F5 and F6 keys, respectively. All these
functions can also be controlled using various MIDI controllers. In
particular, the sustain pedal is by default assigned to the "Hold" function,
but can also be switched to "Pause" by pressing the F7 key (see "Keyboard
Shortcuts", "Switches" and "Other Controllers" below).
## Transport and Sync
The "controls" subpatch in the upper right corner of the main patch has
"Start" and "Stop" buttons which let you start and stop Raptor manually.
There's also a "Reset" button to reset all parts and have them reload their
current presets, as well as "Hold" and "Pause" toggles which control the
corresponding switches of all parts simultaneously (see above).
Raptor can also be started and stopped remotely by sending it the appropriate
system realtime messages (see "Sequencer Messages" below). However, the most
convenient option for remote control and automation is through Jack transport.
Raptor then also picks up the current tempo and meter (if the host DAW
provides that information). The "jack-transport" patch in the bottom right
corner of the main patch lets you connect to Jack transport (red toggle), as
well as start and stop Jack transport and rewind to the initial Jack transport
location. This requires the author's [pd-jacktime][] external to work. Two
suitable DAWs which have full support for Jack transport are [Ardour][]
(available on Linux, Mac and Windows) and [Qtractor][] (Linux-only).
[pd-jacktime]: https://github.com/agraef/pd-jacktime
[Ardour]: https://ardour.org/
[Qtractor]: https://qtractor.sourceforge.io/
## Harmonicity Controls
The "harm-sweep" subpatch gives you direct access to various parameters
controlling Raptor's note generation process. A discussion of these parameters
is beyond the scope of this document, but in a nutshell, they are used to
control the degree of harmonicity in the generated notes. If the (minimum)
harmonicity is high, the generated notes and chords will match the chords you
play on Raptor's MIDI input. Lowering the harmonicity gives the algorithm more
leeway (for very low values you'll get complete atonality).
In addition, there's a preference parameter which controls how much Raptor
will prefer notes with a high degree of harmonicity (this works best if the
minimum harmonicity is not too high, giving Raptor more freedom to choose
disharmonious notes). The preference value can also be negative, in which case
Raptor will favor disharmonious rather than harmonious notes. Moreover, all
these parameters are also varied automatically according to pulse strengths,
using associated "bias" parameters (these aren't shown in the "harm-sweep"
subpatch, but can be edited in the different Raptor parts and are also
accessible using corresponding MIDI controls, see below).
The subpatch also offers some controls to initiate automatic "sweeps" of the
harmonicity and preference parameters, using the radio button strips at the
bottom. All changes done in this subpatch apply only to the *active* part(s)
(all, upper, lower or lead) set in the radio button strip on the right.
## Keyboard Shortcuts
Raptor provides some keyboard shortcuts (mostly function keys) to control the
most important functions of the patch. Note that to make these work, the patch
must have keyboard focus. F1, F2 and F3 will mute/unmute the corresponding
part, F4 toggles the metronome clicks, F5 and F6 toggle the "Hold" and "Pause"
controls of all parts, F7 switches the assignment of the sustain pedal (see
"Other Controllers" below) between "Hold" and "Pause", F8 changes presets by
cycling through them, and F9 starts and stops playback. Also, the cursor keys
on the numeric keypad let you control the harmonicity sweep functions in the
"harm-sweep" subpatch.
## Controller Assignments
(e.g., K1-8 on Akai MPK mini)
- CC1/CC5: Harmonicity/Bias
- CC2/CC6: Preference/Bias
- CC7: Volume
- CC4/CC8: Density/Bias
Note that Harmonicity/Preference/Density and the corresponding Bias controls
apply to the active part(s) set in the "harm-sweep" subpatch, see above. The
Volume controller sets the corresponding controls in all parts and is also
passed through to MIDI output. Also note that all these controls are reset
when switching presets (see below).
**FCB 1010 users:** The FCB 1010 has its *right* continuous controller pedal
assigned to CC7 by default and can thus be used to control the Volume setting
of all Raptor parts. You may want change this to match your preferences and
playing style. E.g., I have the FCB's left and right continuous controller
pedals (CC27 and CC7) assigned to CC1 and CC2, respectively, so that I can
control both the Harmonicity and Preference parameters of the active part(s)
while playing. The controls can be remapped most conveniently by using some
appropriate MIDI plugin inside a DAW (like pizmidi's midiConverter3), or a
stand-alone MIDI filter/mapping software (like qmidiroute on Linux, MidiPipe
on the Mac,or MidiOx on Windows).
## Switches
(PAD1-8 on Akai MPK mini in CC mode)
- CC20: Start/Stop
- CC21: Metronome
- CC22: Hold/Pause
- CC23: Preset-
- CC24: Mute 1
- CC25: Mute 2
- CC26: Mute 3
- CC27: Preset+
CC23 and CC27 work like push buttons (only react to "on" values), the others
are toggles. Note that in contrast to standard MIDI semantics, *any* value >0
means "on" here; so velocity-sensitive buttons like on customary pad
controllers should work fine. A suitable Akai MPK mini II configuration
is included (Raptors.mk2).
**FCB 1010 users:** The FCB 1010 has its *left* continuous controller pedal
assigned to CC27 by default, which will wreak havoc with Raptor's preset
setting when you operate this controller. Thus you'll want to to reassign the
pedal to a different CC number (such as CC1, see above).
## Program Changes
The presets #0-#4 can also be accessed directly through program changes (PC)
1-5, which correspond to Pads 1-5 on Akai MPK mini in PROG CHANGE mode, and to
foot switches 1-5 on a Behringer FCB 1010 foot controller.
PC changes will be taken modulo 5, i.e., they wrap around after PC 5, so they
will also work with the higher banks on the FCB 1010. To make this more
useful, Raptor actually implements four "sets" with different variations of the
presets, which are identical to the original presets #0-#4 but with some parts
muted, as follows:
- Set #0 (PC 1-5): all parts playing
- Set #1 (PC 6-10): lead part ("piano") muted
- Set #2 (PC 11-15): upper part ("guitar") muted
- Set #3 (PC 16-20): lead and upper part muted ("bass" solo)
- Set #4 (PC 21-25): all parts muted (no output from Raptor)
Again, these wrap around after set #4, so that higher banks of the FCB 1010
(second row of FCB bank 02 and beyond) will simply cycle through Raptor
sets #0-#4. Note that all this assumes the FCB 1010 default setup which has PC
1-10 mapped out over its ten banks accessible with the Up/Down pedals.
## Other Controllers
- CC16 (0-4): Preset #0-#4 (alternative way to change presets, mainly useful
for automation)
- CC64: Hold/Pause (sustain pedal)
- CC80: Start/Stop (alternative way to control transport state, see below)
Note that CC64 (the sustain pedal) and CC80 (general purpose button #1) are
interpreted using standard MIDI button semantics, so a value >=64 means "on",
<64 "off".
Also note that all these settings are just examples tailored to the external
MIDI gear and software applications that I use; you can customize these to
your heart's content (have a look at the midi-in subpatch of the controls
subpatch in the Raptors main patch).
## Sequencer Messages
If you don't have Jack transport as a sync option available in your DAW, then
Raptor's playback state can also be controlled through the usual system
realtime messages start/cont/stop. This should work with most popular DAWs.
(Bitwig Studio and Reaper have been tested. Tracktion's system realtime
implementation seems to be broken, so you'll have to use the CC80 workaround
described below. YMMV, though.)
To synchronize Raptor with your DAW, it's usually sufficient to turn on MIDI
clock sync in the DAW and make sure that the transport messages are delivered
to Raptor (but see *Limitations/TODO* below for some caveats).
If your DAW doesn't support MIDI clock sync then you can also start/stop
Raptor explicitly through a special controller message (CC80, see above).
Use a CC80 value >= 64 to start, <64 to stop Raptor.
Note that in any case Raptor keeps its own internal time, so it only
interprets system realtime messages controlling the transport state. Thus you
have to make sure that the DAW starts out at the beginning of a measure and
tempo/meter settings match up with Raptor (or use Jack transport with a DAW
that emits real-time tempo and meter messages, such as Ardour).
## OSC Support
In addition to MIDI, Raptor can also be controlled through OSC (including
parameter feedback). This is bidirectional, so Raptor will feed control data
back to the connected OSC device(s). A corresponding TouchOSC layout is
included (Raptors.touchosc). The main patch also includes an OSC browser
subpatch which lets you detect and connect to OSC devices on the local network
(either manually or through Zeroconf). Using Zeroconf, the Raptor patch is
visible to OSC devices as "Raptor".
Raptor supports OSC natively (if you have the requisite mrpeach externals
installed), so no MIDI bridge is needed. The Zeroconf support requires that
you have a corresponding system service running, usually Avahi on Linux, or
Bonjour on Mac OS X or Windows. Also note that in order to make OSC
communication work, your local network must have the OSC UDP input and output
ports open, so you might have to configure the firewall on your local router
accordingly.
For convenience, Raptor always connects to OSC (on the local UDP port given as
the argument of the oscbrowser abstraction) and starts browsing for possible
OSC clients during startup (i.e., patch load time). The default input port is
8000 which matches TouchOSC's default. If this interferes with other OSC
receiving software (such as OSCulator on the Mac) then you may want to change
the argument of oscbrowser to a different port number and reconfigure your OSC
devices accordingly.
Also, oscbrowser will auto-connect to the first available OSC client on the
local network as soon as it finds one. If this isn't desired then you can turn ... ...
近期下载者:
相关文件:
收藏者: