Voici un résumé des raccourcis de Bhajis Loops :
Fenêtre d'arrangement
|
Editeur de pattern
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Editeur d'instrument
|
Editeur d'échantillon
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mode "Live"
Table de mixage
|
Automation
|
Si vous êtes sur la fenêtre d'arrangement et qu'un morceau est en cours de lecture, vous pouvez afficher cette boîte de dialogue en entrant la lettre G dans la zone graffiti. Cette boîte affiche les informations suivantes :
Vous pouvez appuyer sur le bouton Reset max pour réinitialiser les valeurs maximales affichées.
La fonction Export voicelist to card exporte les informations des voix dans un fichier nommé voices.bin à la racine de la première carte mémoire disponible. Si vous rencontrez des choses étranges et pensez que vous avez découvert un bug dans le moteur de lecture, ce fichier peut m'aider à identifier le problème.
Petit vaurien!
Note : Le patch disponible sur un célèbre site de WareZ est de bien pauvre facture et ne déverrouille pas totalement l'application.
(Sorry, in english)
Basically, a plug-in is a resource database (type : Plug, creator : AudX) with the following resources :
type : arml, id : 1. ARM Initialization code. A pointer to this code is passed to PceNativeCall when the plug-in is loaded. You should initialize look-up tables and buffers there.
type : arml, id : 2. ARM Cleanup code. This code is called whenever you stop playing, and the first time you start playing. You should reinitialize state variables or clean buffers there.
type : arml, id : 3. ARM Render code. This code is called whenever the content of a buffer is to be rendered.
type : tSTR, id : 8533. (Optional) string of the plug-in Help dialog.
type : name, id : 1000. Plug-in name.
type : info, id : 1000. A string containing credits, copyright, or other information. Typically displayed in the "about this plug-in" dialog.
type : data, id : 1000. 4 16-bit words in motorola byte order (UInt16), indicating the size (up to 64kb) of the 4 data buffers required by the plug-in (for example, for delay lines). Must be 0 if no data is required.
type : prms, id : 1000 : one char indicating the number of parameters (up to 32 parameters can be used) ; then, for each parameter, its name (zero terminated string), and 3 motorola-ordered, signed 16-bit integers indicating the minimal, maximal and default value of the parameter.
type : insr, id : 1000 : one char, equal to zero if the plug-in works in "send" mode ; one if it works in "insert" mode. Ideally, the output of a plug-in must be mixed with the original signal according to the following formulae :
Idéalement, les plugins devraient aussi être fournis sous forme de dll Windows (même nom que celui dans la base de données des plug-ins), afin de permettre le rendu de morceaux pendant une synchro hotsync.
Vous pouvez vous référer au code source du plug-in delay pour plus d'informations.
Lorsque ce n'est pas spécifié, les chaînes sont terminées par un zéro. Les booléens sont : 0 = faux ; 255 = vrai. Il se peut que des valeurs différentes de 255 pour Vrai mènent à des résultats imprévisibles.
Lorsque ce n'est pas spécifié, les entiers sont dans l'ordre Intel (certaines parties de Bhajis Loops sont écrites pour ARM, d'autres pour 68k, donc les deux formats sont utilisés).
En ce qui concerne l'évolution du format de fichier, la plupart des sections importantes commencent par un octet d'identification du format, afin qu'il soit possible d'identifier quelle version du programme a été utilisée pour écrire la section, et ignorer ou modifier les données si nécessaire.
byte: song format ID (From 1 to 10).
string: song format string ; must be equal to "Recipe for pure veg song
1.00:"
string: song title
string: song information
boolean: true if the song info dialog should be displayed whenever the song
is opened.
byte: beginning of loop
byte: end of loop (the loop markers in the arrange window)
intel short: number of steps per pattern (from 1 to 32)
intel short: shuffle (0 to 127). 0 = 1 1 1 1 1 1 1 1. 127 = 1.5 1.5 0.5 0.5
1.5 1.5 0.5 0.5 (relative durations)
if format >=4
boolean: true when ternary /8 signatures must be used
if format >=7 byte: number of beats per tap for the tap tempo function
byte: key (0: C, 1: C#, 2: D...)
byte: mode (0: major, 1: minor, 2: harmonic minor, 3..5: pentatonic, 6:
dorian, 7: lydian, 8: mixolydian)
end if
if format >= 9
byte[12]: for each note (C, C#, D...) index of the corresponding item
in the "Advanced tuning" dialog
motorola double[12]: for each note, frequency ratio to 261Hz C, as a double
precision float.
motorola short[12]: for each note, frequency ratio to 261Hz C, numerator.
motorola short[12]: for each note, frequency ratio to 261Hz C, denominator.
else
equally tempered scale must be used.
end
motorola long: BPM
char[SONGLENGTH * TRACKS]: song matrix (TRACKS = 8, SONGLENGTH 248).
if format >= 2
two [[BUS]] sections (one for each effect bus)
end if
if format >= 9
two extra [[BUS]] sections (one for each effect bus)
end if
if format >= 6 one [[BUS]] section (for the main effect bus)
if format >=5
intel short: master level L
intel short: master level R
boolean: continue
while continue
[[AUTOMATION TRACK]]
boolean: continue
end
end if
if format >= 3
motorola short: number NN of cues to read
NN [[CUE]] sections
5 [[CONTROLLER]] sections
end if
128 [[PATTERN]] sections
motorola short: number N of samples to read
N [[SAMPLE]] sections
if format < 9
32 [[INSTRUMENT]] sections
else
64 [[INSTRUMENT]] sections
end if
if format >= 8
motorola short: number of section warps
J [[WARP]] sections
end if
byte: bus format ID (must be 1)
short: return level
short: insert (=255 for insert effects ; =0 for other effects)
boolean: true if a plug-in is affected affected ; false otherwise
if plug-in affected
string: plug-in name
short[32]: plug-in params
end if
byte: pattern format ID (must be 1)
motorola long: pattern color
string: pattern name
motorola short: note count
if note count <> 0
motorola short: size of notes array (>= note count)
char[NOTE_ARGUMENTS * size of notes array]: pattern data
pattern data is stored as following:
'0 note start (0 to 255, in steps)
'1 note end (0 to 255, in steps)
'2 note (standard MIDI note #)
'3 instrument used (1 to 32)
'4 velocity (0 to 127)
'5 pan (0 to 127)
'6 sample playback offset (0 = sample start / 127 = sample end)
'7 note cutoff (0 to 127)
'8 vibrato rate .
'9 vibrato depth
'10 note pre-delay (0 = at this step ; 127 = at the next step)
'11 = 0 for normal notes ; = 255 to indicate that the note is a "pattern
break"
'12 portamento rate.
'13 (reserved)
'14 (reserved)
'15 (reserved)
end if
byte: sample format ID (1 to 6)
byte: bit depth (8 or 16)
if format = 4, byte: number of channels
motorola long: sample rate
motorola long: sample duration in frames
long: loop start
long: loop end
if format = 1, these values must be divided by 16384
if format = 2, these values must be divided by 8192
if format = 3, these values are expressed in frames and nothing has to be changed.
string: sample name
if format >= 5
if format >= 6, boolean : magic (you don't have to worry about it)
byte: recommended program change
byte: recommended key
byte: recommended pitch
end if
motorola long: sample size S in bytes
char[S]: sample data
byte: instrument format ID (1 to 10)
short: filter order for the LP filter (0 to 3)
if format >= 9, short: filter order for the HP filter (0 to 3)
short: filter cutoff (0 to 512)
short: filter resonance (0 to 127 ; values > 120 should not be used because
of self oscillation)
if format >= 2
short: env. attack
short: env. decay
short: env. sustain
short: env. release
else
short: env. decay
short: env. attack
(sustain is 0, release is 2048)
end if
short: 1 if envelope affects volume ; 0 otherwise
short: filter envelope rate.
if format >= 6
short: instrument volume (0 to 16384).
else
short: instrument volume (0 to 1024).
end if
if format >= 6
short: instrument pan (0 to 16384).
else
short: instrument pan (0 to 63).
end if
short: instrument pitch reference (MIDI note).
if format >= 3
short: finetune
end if
short: front cut (0 to 511)
short: vibrato rate (0 to 31)
short: vibrato depth (0 to 127)
if format >= 9 short: growl depth (0 to 127)
if format >= 4 and format < 9
short: bus number (0, 1 or 2)
short: send level
end if
if format >= 9
short: send level for bus 1
short: send level for bus 2
short: send level for bus 3
short: send level for bus 4
end if
if format >= 5
byte: MidiChannel
byte: MidiNote
if format >= 7 byte: MidiProgram
boolean: MustExtractSampleWhenRendering
boolean: MustRenderWholeTrackWhenRendering
end if
if format >=8: byte: voice affectation flag (binary value Z0000XXX, Z is set if "no note off" is activated, XXX is the voice affectation mode ; 0 for Pad, 1 for Poly, 2 for Mono, 3 for Legato, 4 for group).
if format >= 9
boolean: mute
boolean: solo
byte: index of the slave instrument
if format >= 10
byte: lower note
byte: upper note
boolean: instrument does not take the pitch in account
end
end
motorola long: instrument color
string: instrument name
byte: CUE section format ID, equal to 1 or 2.
byte: start point (bars)
byte: end point (bars)
if format >= 2, motorola long: color
string: cue name
byte: target. (1-64: instruments ; 65-68: plug-ins, 255: master section)
byte: parameter.
For plug-ins: the parameter is either the # of the plugin parameter, ranging from 1 to 32, or 33 to control the plug-in return level ;
For instruments, refer to this list:
Code:
"Volume", 0
"Pan", 1
"Filter cutoff", 2
"Filter resonance", 3
"Attack", 4
"Decay", 5
"Sustain", 6
"Release", 7
"Env. filter mod", 8
"Env. amp. mod", 9
"Front cut", 10
"Vibrato rate", 11
"Vibrato depth", 12
"Pitch (root note)", 13
"Pitch bend", 14
"Effect Send 1", 15
"Effect Send 2", 16
"Effect Send 3", 17
"Effect Send 4", 18
"Growl depth", 19
For master section: 0 = global master volume (L / R joint), 1 = master volume L, 2 = master volume R, 3 = tempo.
byte: automation track format ID (equal to 1)
byte: target. (1-64: instruments ; 65-68: plug-ins, 255: master section)
byte: parameter. (the same convention as for the [[CONTROLLERS]] section is
used).
boolean: has more breakpoints?
while has more breakpoints
[[BREAKPOINT]]
boolean: has more breakpoints?
wend
Two [[CONTROLLERS]] sections (one for the X axis, one for the Y axis)
motorolla double: value of the Glide parameter.
motorolla double: value of the Speed parameter.
byte: selected tracking mode (0: no tracking, 1: tracking, 2: tracking and smoothing).
byte: breakpoint format ID (equal to 1)
byte: x (bar)
byte: x (step)
byte: y
byte: Start section #
byte: Start bar #
byte: End section #
byte: End bar #
Contenus / Code © Olivier Gillet 2003-2006 - ol point gillet at gmail point com
Index - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14