melhorando desempenho dos scripts de indexação e inserindo mais projetos
This commit is contained in:
1 parent
c8323d56cf
commit
42da68afa0
463 files changed
+1015859
-73243
No files matched your search
@@ -3,3 +3,8 @@ _site
|
|||||||
.jekyll-cache
|
.jekyll-cache
|
||||||
.jekyll-metadata
|
.jekyll-metadata
|
||||||
vendor
|
vendor
|
||||||
|
mmp
|
||||||
|
.venv
|
||||||
|
venv
|
||||||
|
.bundle
|
||||||
|
src
|
||||||
+12
-15
@@ -15,7 +15,7 @@ plugins:
|
|||||||
page_gen-dirs: true
|
page_gen-dirs: true
|
||||||
|
|
||||||
page_gen:
|
page_gen:
|
||||||
- data: all
|
- data: all
|
||||||
template: projetos
|
template: projetos
|
||||||
dir: mmp_pages
|
dir: mmp_pages
|
||||||
index_files: false
|
index_files: false
|
||||||
@@ -23,7 +23,6 @@ page_gen:
|
|||||||
name: file
|
name: file
|
||||||
debug: false
|
debug: false
|
||||||
|
|
||||||
|
|
||||||
# Configuração do datapage_gen:
|
# Configuração do datapage_gen:
|
||||||
#page_gen:
|
#page_gen:
|
||||||
# - data: all
|
# - data: all
|
||||||
@@ -34,8 +33,6 @@ page_gen:
|
|||||||
# title: "Arquivos com tipo: :TAG"
|
# title: "Arquivos com tipo: :TAG"
|
||||||
# debug: false
|
# debug: false
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Build settings
|
# Build settings
|
||||||
|
|
||||||
# Exclude from processing.
|
# Exclude from processing.
|
||||||
@@ -47,15 +44,15 @@ page_gen:
|
|||||||
# their entries' file path in the `include:` list.
|
# their entries' file path in the `include:` list.
|
||||||
#
|
#
|
||||||
exclude:
|
exclude:
|
||||||
# - .sass-cache/
|
# - .sass-cache/
|
||||||
# - .jekyll-cache/
|
# - .jekyll-cache/
|
||||||
# - gemfiles/
|
# - gemfiles/
|
||||||
# - Gemfile
|
# - Gemfile
|
||||||
# - Gemfile.lock
|
# - Gemfile.lock
|
||||||
# - node_modules/
|
# - node_modules/
|
||||||
# - vendor/bundle/
|
# - vendor/bundle/
|
||||||
# - vendor/cache/
|
# - vendor/cache/
|
||||||
# - vendor/gems/
|
# - vendor/gems/
|
||||||
# - vendor/ruby/
|
# - vendor/ruby/
|
||||||
# - scripts/
|
# - scripts/
|
||||||
- mmp/instruments/lmms/presets/ZynAddSubFX
|
- mmp/instruments/lmms/presets/ZynAddSubFX
|
||||||
@@ -0,0 +1,701 @@
|
|||||||
|
bpm: '140'
|
||||||
|
file: A return from the dancing stars
|
||||||
|
src: /nethome/jotachina/projetos/mmpSearch/mmp/A return from the dancing stars.mmp
|
||||||
|
tags:
|
||||||
|
TAG:
|
||||||
|
- bassline
|
||||||
|
- plugin
|
||||||
|
- automation
|
||||||
|
automation:
|
||||||
|
- Traccia di automazione
|
||||||
|
bassline:
|
||||||
|
- Kick
|
||||||
|
- HiHatC
|
||||||
|
plugin:
|
||||||
|
- audiofileprocessor
|
||||||
|
- zynaddsubfx
|
||||||
|
sample: []
|
||||||
|
tracks:
|
||||||
|
- bassline_name: Kick
|
||||||
|
instruments:
|
||||||
|
- audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.02'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0.02'
|
||||||
|
src: drums/kick01.ogg
|
||||||
|
stutter: '0'
|
||||||
|
basenote: '57'
|
||||||
|
fxch: '1'
|
||||||
|
instrument_name: Kick
|
||||||
|
instrument_type: '0'
|
||||||
|
pan: '0'
|
||||||
|
patterns:
|
||||||
|
- name: Kick
|
||||||
|
pos: '0'
|
||||||
|
steps:
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- true
|
||||||
|
- false
|
||||||
|
- true
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- true
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- true
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- name: Kick
|
||||||
|
pos: '192'
|
||||||
|
steps:
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '100'
|
||||||
|
- audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: drums/hihat_closed01.ogg
|
||||||
|
stutter: '0'
|
||||||
|
basenote: '57'
|
||||||
|
fxch: '2'
|
||||||
|
instrument_name: hihat_closed01.ogg
|
||||||
|
instrument_type: '0'
|
||||||
|
pan: '0'
|
||||||
|
patterns:
|
||||||
|
- name: hihat_closed01.ogg
|
||||||
|
pos: '0'
|
||||||
|
steps:
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- name: hihat_closed01.ogg
|
||||||
|
pos: '192'
|
||||||
|
steps:
|
||||||
|
- true
|
||||||
|
- false
|
||||||
|
- true
|
||||||
|
- false
|
||||||
|
- true
|
||||||
|
- false
|
||||||
|
- true
|
||||||
|
- false
|
||||||
|
- true
|
||||||
|
- false
|
||||||
|
- true
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- true
|
||||||
|
- true
|
||||||
|
- true
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '100'
|
||||||
|
- audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: drums/hihat_opened01.ogg
|
||||||
|
stutter: '0'
|
||||||
|
basenote: '57'
|
||||||
|
fxch: '3'
|
||||||
|
instrument_name: Piatto 1
|
||||||
|
instrument_type: '0'
|
||||||
|
pan: '0'
|
||||||
|
patterns:
|
||||||
|
- name: Piatto 1
|
||||||
|
pos: '0'
|
||||||
|
steps:
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- true
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- name: Piatto 1
|
||||||
|
pos: '192'
|
||||||
|
steps:
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '100'
|
||||||
|
tags: audiofileprocessor
|
||||||
|
type: bassline
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '2'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '100'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '90'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.09'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0.09'
|
||||||
|
src: drumsynth/misc_synth/wowmelodictone.ds
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '1'
|
||||||
|
chordrange: '3'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '1'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.01'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '2940'
|
||||||
|
fres: '3.51'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '1'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0'
|
||||||
|
hold: '0'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.23'
|
||||||
|
sustain: '0.95'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '3'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '69'
|
||||||
|
fxch: '6'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '100'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '127'
|
||||||
|
fixedinputvelocity: '0'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '0'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: Tamburo Elettronico
|
||||||
|
type: plugin
|
||||||
|
- bassline_name: HiHatC
|
||||||
|
instruments: []
|
||||||
|
tags: ''
|
||||||
|
type: bassline
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '100'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
controller:
|
||||||
|
bandwidth_depth: '64'
|
||||||
|
filter_cutoff_depth: '64'
|
||||||
|
filter_q_depth: '64'
|
||||||
|
mod_wheel_depth: '80'
|
||||||
|
panning_depth: '64'
|
||||||
|
pitchwheel_bendrange: '200'
|
||||||
|
portamento_pitchthresh: '3'
|
||||||
|
portamento_pitchthreshtype: '1'
|
||||||
|
portamento_portamento: '0'
|
||||||
|
portamento_propdepth: '90'
|
||||||
|
portamento_proportional: '0'
|
||||||
|
portamento_proprate: '80'
|
||||||
|
portamento_time: '64'
|
||||||
|
portamento_updowntimestretch: '64'
|
||||||
|
resonance_bandwidth_depth: '64'
|
||||||
|
resonance_center_depth: '64'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '2'
|
||||||
|
insertion_effects:
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
instrument_effects:
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
instrument_name: zynaddsubfx
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '57'
|
||||||
|
fxch: '5'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '100'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '127'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
system_effects:
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- type: '0'
|
||||||
|
vol: '0'
|
||||||
|
track_name: Basso Elettronico 1
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '100'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
controller:
|
||||||
|
bandwidth_depth: '64'
|
||||||
|
filter_cutoff_depth: '64'
|
||||||
|
filter_q_depth: '64'
|
||||||
|
mod_wheel_depth: '80'
|
||||||
|
panning_depth: '64'
|
||||||
|
pitchwheel_bendrange: '200'
|
||||||
|
portamento_pitchthresh: '3'
|
||||||
|
portamento_pitchthreshtype: '1'
|
||||||
|
portamento_portamento: '0'
|
||||||
|
portamento_propdepth: '90'
|
||||||
|
portamento_proportional: '0'
|
||||||
|
portamento_proprate: '80'
|
||||||
|
portamento_time: '64'
|
||||||
|
portamento_updowntimestretch: '64'
|
||||||
|
resonance_bandwidth_depth: '64'
|
||||||
|
resonance_center_depth: '64'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '1'
|
||||||
|
insertion_effects:
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
instrument_effects:
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
instrument_name: zynaddsubfx
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '45'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '100'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '127'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
system_effects:
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- type: '0'
|
||||||
|
vol: '0'
|
||||||
|
track_name: Strings Elettronica 4
|
||||||
|
type: plugin
|
||||||
|
- automations:
|
||||||
|
- automation_name: Traccia di automazione
|
||||||
|
automation_patterns:
|
||||||
|
- len: '1728'
|
||||||
|
mute: '0'
|
||||||
|
name: Volume principale
|
||||||
|
pos: '17280'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '100'
|
||||||
|
- pos: '1536'
|
||||||
|
value: '6'
|
||||||
|
- len: '192'
|
||||||
|
mute: '0'
|
||||||
|
name: Volume principale
|
||||||
|
pos: '0'
|
||||||
|
prog: '0'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '100'
|
||||||
|
- len: '1536'
|
||||||
|
mute: '0'
|
||||||
|
name: Volume principale
|
||||||
|
pos: '14208'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '100'
|
||||||
|
- pos: '576'
|
||||||
|
value: '199'
|
||||||
|
- pos: '1800'
|
||||||
|
value: '98'
|
||||||
|
- len: '1536'
|
||||||
|
mute: '0'
|
||||||
|
name: Volume principale
|
||||||
|
pos: '15744'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '100'
|
||||||
|
- pos: '576'
|
||||||
|
value: '198'
|
||||||
|
- pos: '1800'
|
||||||
|
value: '98'
|
||||||
|
- len: '1536'
|
||||||
|
mute: '0'
|
||||||
|
name: Volume principale
|
||||||
|
pos: '4224'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '100'
|
||||||
|
- pos: '576'
|
||||||
|
value: '199'
|
||||||
|
- pos: '1800'
|
||||||
|
value: '98'
|
||||||
|
automationtrack: Present
|
||||||
|
type: automation
|
||||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
+19950
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,173 @@
|
|||||||
|
bpm: '200'
|
||||||
|
file: Floating
|
||||||
|
src: /nethome/jotachina/projetos/mmpSearch/mmp/Floating.mmp
|
||||||
|
tags:
|
||||||
|
TAG:
|
||||||
|
- plugin
|
||||||
|
automation: []
|
||||||
|
bassline: []
|
||||||
|
plugin:
|
||||||
|
- zynaddsubfx
|
||||||
|
sample: []
|
||||||
|
tracks:
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
controller:
|
||||||
|
bandwidth_depth: '64'
|
||||||
|
filter_cutoff_depth: '64'
|
||||||
|
filter_q_depth: '64'
|
||||||
|
mod_wheel_depth: '80'
|
||||||
|
panning_depth: '64'
|
||||||
|
pitchwheel_bendrange: '100'
|
||||||
|
portamento_pitchthresh: '3'
|
||||||
|
portamento_pitchthreshtype: '1'
|
||||||
|
portamento_portamento: '0'
|
||||||
|
portamento_propdepth: '90'
|
||||||
|
portamento_proportional: '0'
|
||||||
|
portamento_proprate: '80'
|
||||||
|
portamento_time: '64'
|
||||||
|
portamento_updowntimestretch: '64'
|
||||||
|
resonance_bandwidth_depth: '64'
|
||||||
|
resonance_center_depth: '64'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '0'
|
||||||
|
numofeffects: '0'
|
||||||
|
insertion_effects:
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
instrument_effects:
|
||||||
|
- par: '119'
|
||||||
|
preset: '0'
|
||||||
|
route: '0'
|
||||||
|
type: '3'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
instrument_name: zynaddsubfx
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '57'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '100'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
system_effects:
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- type: '0'
|
||||||
|
vol: '0'
|
||||||
|
track_name: Ice Rhodes3
|
||||||
|
type: plugin
|
||||||
@@ -0,0 +1,171 @@
|
|||||||
|
bpm: '160'
|
||||||
|
file: Galneryus Classical
|
||||||
|
src: /nethome/jotachina/projetos/mmpSearch/mmp/Galneryus Classical.mmp
|
||||||
|
tags:
|
||||||
|
TAG:
|
||||||
|
- plugin
|
||||||
|
automation: []
|
||||||
|
bassline: []
|
||||||
|
plugin:
|
||||||
|
- zynaddsubfx
|
||||||
|
sample: []
|
||||||
|
tracks:
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
controller:
|
||||||
|
bandwidth_depth: '64'
|
||||||
|
filter_cutoff_depth: '64'
|
||||||
|
filter_q_depth: '64'
|
||||||
|
mod_wheel_depth: '80'
|
||||||
|
panning_depth: '64'
|
||||||
|
pitchwheel_bendrange: '100'
|
||||||
|
portamento_pitchthresh: '3'
|
||||||
|
portamento_pitchthreshtype: '1'
|
||||||
|
portamento_portamento: '0'
|
||||||
|
portamento_propdepth: '90'
|
||||||
|
portamento_proportional: '0'
|
||||||
|
portamento_proprate: '80'
|
||||||
|
portamento_time: '64'
|
||||||
|
portamento_updowntimestretch: '64'
|
||||||
|
resonance_bandwidth_depth: '64'
|
||||||
|
resonance_center_depth: '64'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '0'
|
||||||
|
numofeffects: '0'
|
||||||
|
insertion_effects:
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
instrument_effects:
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
instrument_name: zynaddsubfx
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '57'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '100'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
system_effects:
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- type: '0'
|
||||||
|
vol: '0'
|
||||||
|
track_name: Saw Strings 3
|
||||||
|
type: plugin
|
||||||
@@ -0,0 +1,171 @@
|
|||||||
|
bpm: '200'
|
||||||
|
file: Hizaki Classical
|
||||||
|
src: /nethome/jotachina/projetos/mmpSearch/mmp/Hizaki Classical.mmp
|
||||||
|
tags:
|
||||||
|
TAG:
|
||||||
|
- plugin
|
||||||
|
automation: []
|
||||||
|
bassline: []
|
||||||
|
plugin:
|
||||||
|
- zynaddsubfx
|
||||||
|
sample: []
|
||||||
|
tracks:
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
controller:
|
||||||
|
bandwidth_depth: '64'
|
||||||
|
filter_cutoff_depth: '64'
|
||||||
|
filter_q_depth: '64'
|
||||||
|
mod_wheel_depth: '80'
|
||||||
|
panning_depth: '64'
|
||||||
|
pitchwheel_bendrange: '100'
|
||||||
|
portamento_pitchthresh: '3'
|
||||||
|
portamento_pitchthreshtype: '1'
|
||||||
|
portamento_portamento: '0'
|
||||||
|
portamento_propdepth: '90'
|
||||||
|
portamento_proportional: '0'
|
||||||
|
portamento_proprate: '80'
|
||||||
|
portamento_time: '64'
|
||||||
|
portamento_updowntimestretch: '64'
|
||||||
|
resonance_bandwidth_depth: '64'
|
||||||
|
resonance_center_depth: '64'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '0'
|
||||||
|
numofeffects: '0'
|
||||||
|
insertion_effects:
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
instrument_effects:
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
instrument_name: zynaddsubfx
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '57'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '100'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
system_effects:
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- type: '0'
|
||||||
|
vol: '0'
|
||||||
|
track_name: Saw Strings 3
|
||||||
|
type: plugin
|
||||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,338 @@
|
|||||||
|
bpm: '200'
|
||||||
|
file: My worst enemy
|
||||||
|
src: /nethome/jotachina/projetos/mmpSearch/mmp/My worst enemy.mmp
|
||||||
|
tags:
|
||||||
|
TAG:
|
||||||
|
- plugin
|
||||||
|
automation: []
|
||||||
|
bassline: []
|
||||||
|
plugin:
|
||||||
|
- zynaddsubfx
|
||||||
|
sample: []
|
||||||
|
tracks:
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
controller:
|
||||||
|
bandwidth_depth: '64'
|
||||||
|
filter_cutoff_depth: '64'
|
||||||
|
filter_q_depth: '64'
|
||||||
|
mod_wheel_depth: '80'
|
||||||
|
panning_depth: '64'
|
||||||
|
pitchwheel_bendrange: '100'
|
||||||
|
portamento_pitchthresh: '3'
|
||||||
|
portamento_pitchthreshtype: '1'
|
||||||
|
portamento_portamento: '0'
|
||||||
|
portamento_propdepth: '90'
|
||||||
|
portamento_proportional: '0'
|
||||||
|
portamento_proprate: '80'
|
||||||
|
portamento_time: '64'
|
||||||
|
portamento_updowntimestretch: '64'
|
||||||
|
resonance_bandwidth_depth: '64'
|
||||||
|
resonance_center_depth: '64'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '0'
|
||||||
|
numofeffects: '0'
|
||||||
|
insertion_effects:
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
instrument_effects:
|
||||||
|
- par: '1'
|
||||||
|
preset: '0'
|
||||||
|
route: '0'
|
||||||
|
type: '6'
|
||||||
|
- par: '64'
|
||||||
|
preset: '0'
|
||||||
|
route: '0'
|
||||||
|
type: '7'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
instrument_name: zynaddsubfx
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '57'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '100'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
system_effects:
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- type: '0'
|
||||||
|
vol: '0'
|
||||||
|
track_name: Trash Guitar 1
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
controller:
|
||||||
|
bandwidth_depth: '64'
|
||||||
|
filter_cutoff_depth: '64'
|
||||||
|
filter_q_depth: '64'
|
||||||
|
mod_wheel_depth: '80'
|
||||||
|
panning_depth: '64'
|
||||||
|
pitchwheel_bendrange: '100'
|
||||||
|
portamento_pitchthresh: '3'
|
||||||
|
portamento_pitchthreshtype: '1'
|
||||||
|
portamento_portamento: '0'
|
||||||
|
portamento_propdepth: '90'
|
||||||
|
portamento_proportional: '0'
|
||||||
|
portamento_proprate: '80'
|
||||||
|
portamento_time: '64'
|
||||||
|
portamento_updowntimestretch: '64'
|
||||||
|
resonance_bandwidth_depth: '64'
|
||||||
|
resonance_center_depth: '64'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '0'
|
||||||
|
numofeffects: '0'
|
||||||
|
insertion_effects:
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
instrument_effects:
|
||||||
|
- par: '1'
|
||||||
|
preset: '0'
|
||||||
|
route: '0'
|
||||||
|
type: '6'
|
||||||
|
- par: '64'
|
||||||
|
preset: '0'
|
||||||
|
route: '0'
|
||||||
|
type: '7'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
instrument_name: zynaddsubfx
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '57'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '100'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
system_effects:
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- type: '0'
|
||||||
|
vol: '0'
|
||||||
|
track_name: Trash Guitar 1
|
||||||
|
type: plugin
|
||||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,790 @@
|
|||||||
|
bpm: '100'
|
||||||
|
file: On track
|
||||||
|
src: /nethome/jotachina/projetos/mmpSearch/mmp/On track.mmp
|
||||||
|
tags:
|
||||||
|
TAG:
|
||||||
|
- plugin
|
||||||
|
- sample
|
||||||
|
- bassline
|
||||||
|
- automation
|
||||||
|
automation:
|
||||||
|
- Automation track
|
||||||
|
bassline:
|
||||||
|
- Beat/Bassline 0
|
||||||
|
plugin:
|
||||||
|
- tripleoscillator
|
||||||
|
- kicker
|
||||||
|
- zynaddsubfx
|
||||||
|
- bitinvader
|
||||||
|
sample:
|
||||||
|
- you're not alone.ogg
|
||||||
|
tracks:
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '1'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '3'
|
||||||
|
arprepeats: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '300'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '5'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '1'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0.24'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '1'
|
||||||
|
lspd: '0.0225'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '3'
|
||||||
|
lspd_syncmode: '8'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '1'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '7'
|
||||||
|
fwet: '1'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '3'
|
||||||
|
lspd: '0.06'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '3'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '1'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.13'
|
||||||
|
hold: '0'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.05'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrument_name: tripleoscillator
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '93'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '35.2'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
tags: tripleoscillator
|
||||||
|
track_name: SBass
|
||||||
|
tripleoscillator:
|
||||||
|
coarse0: '0'
|
||||||
|
coarse1: '0'
|
||||||
|
coarse2: '0'
|
||||||
|
finel0: '0'
|
||||||
|
finel1: '4'
|
||||||
|
finel2: '-2'
|
||||||
|
finer0: '0'
|
||||||
|
finer1: '-4'
|
||||||
|
finer2: '2'
|
||||||
|
modalgo1: '0'
|
||||||
|
modalgo2: '0'
|
||||||
|
modalgo3: '2'
|
||||||
|
pan0: '0'
|
||||||
|
pan1: '0'
|
||||||
|
pan2: '0'
|
||||||
|
phoffset0: '0'
|
||||||
|
phoffset1: '0'
|
||||||
|
phoffset2: '0'
|
||||||
|
stphdetun0: '0'
|
||||||
|
stphdetun1: '0'
|
||||||
|
stphdetun2: '0'
|
||||||
|
userwavefile0: ''
|
||||||
|
userwavefile1: ''
|
||||||
|
userwavefile2: ''
|
||||||
|
vol0: '33'
|
||||||
|
vol1: '33'
|
||||||
|
vol2: '33'
|
||||||
|
wavetype0: '3'
|
||||||
|
wavetype1: '5'
|
||||||
|
wavetype2: '5'
|
||||||
|
type: plugin
|
||||||
|
- sample_info:
|
||||||
|
len: '7298'
|
||||||
|
muted: '0'
|
||||||
|
pan: '0'
|
||||||
|
pos: '816'
|
||||||
|
sample_rate: '44100'
|
||||||
|
src: /home/roe/Documents/Audio/you're not alone.ogg
|
||||||
|
vol: '40'
|
||||||
|
sample_name: you're not alone.ogg
|
||||||
|
track_name: Sample track
|
||||||
|
type: sample
|
||||||
|
- bassline_name: Beat/Bassline 0
|
||||||
|
instruments:
|
||||||
|
- basenote: '69'
|
||||||
|
fxch: '0'
|
||||||
|
instrument_name: Kicker
|
||||||
|
instrument_type: '0'
|
||||||
|
pan: '0'
|
||||||
|
patterns:
|
||||||
|
- name: ''
|
||||||
|
pos: '0'
|
||||||
|
steps:
|
||||||
|
- true
|
||||||
|
- false
|
||||||
|
- true
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- true
|
||||||
|
- false
|
||||||
|
- true
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
- false
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
plugin_name: kicker
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '100'
|
||||||
|
- basenote: '117'
|
||||||
|
fxch: '0'
|
||||||
|
instrument_name: Shaker
|
||||||
|
instrument_type: '0'
|
||||||
|
pan: '0'
|
||||||
|
patterns:
|
||||||
|
- name: ''
|
||||||
|
pos: '0'
|
||||||
|
steps:
|
||||||
|
- true
|
||||||
|
- true
|
||||||
|
- true
|
||||||
|
- true
|
||||||
|
- true
|
||||||
|
- true
|
||||||
|
- true
|
||||||
|
- true
|
||||||
|
- true
|
||||||
|
- true
|
||||||
|
- true
|
||||||
|
- true
|
||||||
|
- true
|
||||||
|
- true
|
||||||
|
- true
|
||||||
|
- true
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
plugin_name: kicker
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '22.7'
|
||||||
|
tags: kicker
|
||||||
|
type: bassline
|
||||||
|
- automations:
|
||||||
|
- automation_name: Automation track
|
||||||
|
automation_patterns: []
|
||||||
|
automationtrack: Present
|
||||||
|
type: automation
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arprepeats: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
controller:
|
||||||
|
bandwidth_depth: '64'
|
||||||
|
filter_cutoff_depth: '64'
|
||||||
|
filter_q_depth: '64'
|
||||||
|
mod_wheel_depth: '80'
|
||||||
|
panning_depth: '64'
|
||||||
|
pitchwheel_bendrange: '100'
|
||||||
|
portamento_pitchthresh: '3'
|
||||||
|
portamento_pitchthreshtype: '1'
|
||||||
|
portamento_portamento: '0'
|
||||||
|
portamento_propdepth: '90'
|
||||||
|
portamento_proportional: '0'
|
||||||
|
portamento_proprate: '80'
|
||||||
|
portamento_time: '64'
|
||||||
|
portamento_updowntimestretch: '64'
|
||||||
|
resonance_bandwidth_depth: '64'
|
||||||
|
resonance_center_depth: '64'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '0'
|
||||||
|
numofeffects: '0'
|
||||||
|
insertion_effects:
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
instrument_effects:
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
instrument_name: zynaddsubfx
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '69'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '100'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
system_effects:
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- type: '0'
|
||||||
|
vol: '0'
|
||||||
|
track_name: Trem Synth Piano 3
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '3'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arprepeats: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '100'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
bitinvader:
|
||||||
|
interpolation: '1'
|
||||||
|
normalize: '1'
|
||||||
|
sampleLength: '128'
|
||||||
|
sampleShape: 2kpgviIPhz3VQAM+oJkyu8pZrr5y/Ta/5nhxv9QFf7+cp3a//hNovwSBTb+OOR+/s2TIvruEJL5Oy2I9DDSIPmge7D4MVx0/pyQ5P5aHTz8Qp2M/XIhxP/SJdT/mnnI/vbltP2jiZj+x51o/F5pJP9gINj84YiE/iLIJP/+T3D5WAaQ+bGVePt5p8j06A3o81CG5vQSrP77SmIm+xamuvjpD1L5u/vu+wEURv+w7Ib878Su/XHgxv3ClM7+oLzS/HPIyv4ZlLr/YxSW/wR0avzoZDb+KHv++RRrjvoILxr7yV6e+DyCFvhxUO74+g8a9lA3luyFIqz0CcTM+qPOIPq+Rtj68guA++kkDP1jHFD8MlyQ/vC4yP8h7PT/ZxEY/uqdNP9osUT9WVlE/Ct5PP56cTj8xiU0/zBpLPzCMRj9S4UA/EWU7P7zTNT8MlC4/AWwkP/B3Fz/0qQg/ZfLxPrRG0j5sRbM+YtmUPgeFaz7TSik+YFjFPaeVzTw4qT69Je/yvQgvRb4juYm+LTGxvrwJ176QXPm+WKkLv5mbGL924iO/Fsstv16RNr9kaD6/HV9Fv3NZS7+CQFC/wBJUvxubVr/NUle/VvdVvwo8U78WaFC/qfpNv4QBS79SKUa/ykU/vwxcN7+UOy+/upQmv4KdHL+EJRG/OqYEv9Ya774AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
|
||||||
|
version: '0.1'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '1'
|
||||||
|
att: '0.674'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.499'
|
||||||
|
hold: '0'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '4'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.501'
|
||||||
|
userwavefile: factorysample:instruments/bassslap01.ogg
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '4960'
|
||||||
|
fres: '1.13'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '1'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.499'
|
||||||
|
hold: '0.499'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.501'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '1'
|
||||||
|
att: '0.05'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0'
|
||||||
|
hold: '0'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '1'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '0'
|
||||||
|
numofeffects: '0'
|
||||||
|
instrument_name: bitinvader
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '69'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '4.8'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '127'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
track_name: subbass
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '3'
|
||||||
|
arprepeats: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '100'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '2'
|
||||||
|
elcut:
|
||||||
|
amt: '0.45'
|
||||||
|
att: '0.6'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.812'
|
||||||
|
hold: '0.3'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.54'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '-0.99'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0'
|
||||||
|
lamt: '1'
|
||||||
|
latt: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.0075'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '6'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.152'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0.72'
|
||||||
|
att: '0.348'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.372'
|
||||||
|
hold: '0.2'
|
||||||
|
lamt: '1'
|
||||||
|
latt: '0.356'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.015'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '5'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.604'
|
||||||
|
sustain: '0.316'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '4'
|
||||||
|
instrument_name: tripleoscillator
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '69'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '14.4'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
tags: tripleoscillator
|
||||||
|
track_name: morning spark
|
||||||
|
tripleoscillator:
|
||||||
|
coarse0: '0'
|
||||||
|
coarse1: '7'
|
||||||
|
coarse2: '-5'
|
||||||
|
finel0: '0'
|
||||||
|
finel1: '0'
|
||||||
|
finel2: '0'
|
||||||
|
finer0: '0'
|
||||||
|
finer1: '0'
|
||||||
|
finer2: '0'
|
||||||
|
modalgo1: '2'
|
||||||
|
modalgo2: '2'
|
||||||
|
modalgo3: '2'
|
||||||
|
pan0: '0'
|
||||||
|
pan1: '0'
|
||||||
|
pan2: '0'
|
||||||
|
phoffset0: '0'
|
||||||
|
phoffset1: '130'
|
||||||
|
phoffset2: '198'
|
||||||
|
stphdetun0: '126'
|
||||||
|
stphdetun1: '0'
|
||||||
|
stphdetun2: '0'
|
||||||
|
userwavefile0: ''
|
||||||
|
userwavefile1: ''
|
||||||
|
userwavefile2: ''
|
||||||
|
vol0: '80'
|
||||||
|
vol1: '75'
|
||||||
|
vol2: '75'
|
||||||
|
wavetype0: '2'
|
||||||
|
wavetype1: '3'
|
||||||
|
wavetype2: '2'
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arprepeats: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '100'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0.33'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.23'
|
||||||
|
hold: '0'
|
||||||
|
lamt: '0.38'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.041'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.15'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '701'
|
||||||
|
fres: '3.01'
|
||||||
|
ftype: '7'
|
||||||
|
fwet: '1'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '1'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.16'
|
||||||
|
hold: '0'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.05'
|
||||||
|
sustain: '0.1'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '6'
|
||||||
|
instrument_name: tripleoscillator
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '24.8'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '127'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '0'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
tags: tripleoscillator
|
||||||
|
track_name: SEGuitar
|
||||||
|
tripleoscillator:
|
||||||
|
coarse0: '0'
|
||||||
|
coarse1: '0'
|
||||||
|
coarse2: '0'
|
||||||
|
finel0: '0'
|
||||||
|
finel1: '-2'
|
||||||
|
finel2: '-2'
|
||||||
|
finer0: '-2'
|
||||||
|
finer1: '2'
|
||||||
|
finer2: '0'
|
||||||
|
modalgo1: '1'
|
||||||
|
modalgo2: '0'
|
||||||
|
modalgo3: '2'
|
||||||
|
pan0: '0'
|
||||||
|
pan1: '0'
|
||||||
|
pan2: '0'
|
||||||
|
phoffset0: '0'
|
||||||
|
phoffset1: '0'
|
||||||
|
phoffset2: '0'
|
||||||
|
stphdetun0: '0'
|
||||||
|
stphdetun1: '0'
|
||||||
|
stphdetun2: '0'
|
||||||
|
userwavefile0: ''
|
||||||
|
userwavefile1: ''
|
||||||
|
userwavefile2: ''
|
||||||
|
vol0: '33'
|
||||||
|
vol1: '33'
|
||||||
|
vol2: '33'
|
||||||
|
wavetype0: '5'
|
||||||
|
wavetype1: '5'
|
||||||
|
wavetype2: '5'
|
||||||
|
type: plugin
|
||||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
+1818
File diff suppressed because it is too large.
Load diff
+541
@@ -0,0 +1,541 @@
|
|||||||
|
bpm: '200'
|
||||||
|
file: PRICE-SINGLE-1-USD-FULL-COLLECTION-15-USD-0001-TEMPLATE-A-1-old-TEMPLATE-HH-00032-HAPPY-HARDCORE-ACID-READY
|
||||||
|
src: /nethome/jotachina/projetos/mmpSearch/mmp/PRICE-SINGLE-1-USD-FULL-COLLECTION-15-USD-0001-TEMPLATE-A-1-old-TEMPLATE-HH-00032-HAPPY-HARDCORE-ACID-READY.mmp
|
||||||
|
tags:
|
||||||
|
TAG:
|
||||||
|
- plugin
|
||||||
|
- automation
|
||||||
|
automation:
|
||||||
|
- Automation track
|
||||||
|
bassline: []
|
||||||
|
plugin:
|
||||||
|
- vestige
|
||||||
|
- audiofileprocessor
|
||||||
|
sample: []
|
||||||
|
tracks:
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TAL-Elek7ro - TAL
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TAL-Elek7ro - TAL
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TAL-Elek7ro - TAL
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: SuperWave P8
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TB strip
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TB strip
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: SuperWave P8
|
||||||
|
type: plugin
|
||||||
|
- automations:
|
||||||
|
- automation_name: Automation track
|
||||||
|
automation_patterns:
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '0'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.32'
|
||||||
|
- pos: '3048'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '3744'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '6120'
|
||||||
|
value: '0.32'
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '6144'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.32'
|
||||||
|
- pos: '3048'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '3744'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '6120'
|
||||||
|
value: '0.32'
|
||||||
|
automationtrack: Present
|
||||||
|
type: automation
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/Donald
|
||||||
|
Trump with family Build New America for future generations.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '128.8'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-1
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/Charlie
|
||||||
|
and Erika Kirk continue main Evolution of Humanity forever.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '129.6'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-1
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/The
|
||||||
|
new Communist High-Tech Russia of Alexander and Natalia Zakharchenko is building
|
||||||
|
a magical future!.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '127.2'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-2
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/DE
|
||||||
|
The great Raver high-tech evolution continues throughout the World of Love and
|
||||||
|
Happiness of Ursula von Der Leyne.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '129.6'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-2
|
||||||
|
type: plugin
|
||||||
+658
@@ -0,0 +1,658 @@
|
|||||||
|
bpm: '200'
|
||||||
|
file: PRICE-SINGLE-1-USD-FULL-COLLECTION-15-USD-0001-TEMPLATE-A-1-old-TEMPLATE-HH-00034-HAPPY-HARDCORE-ACID-READY
|
||||||
|
src: /nethome/jotachina/projetos/mmpSearch/mmp/PRICE-SINGLE-1-USD-FULL-COLLECTION-15-USD-0001-TEMPLATE-A-1-old-TEMPLATE-HH-00034-HAPPY-HARDCORE-ACID-READY.mmp
|
||||||
|
tags:
|
||||||
|
TAG:
|
||||||
|
- plugin
|
||||||
|
- automation
|
||||||
|
automation:
|
||||||
|
- Automation track
|
||||||
|
bassline: []
|
||||||
|
plugin:
|
||||||
|
- vestige
|
||||||
|
- audiofileprocessor
|
||||||
|
sample: []
|
||||||
|
tracks:
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TAL-Elek7ro - TAL
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TAL-Elek7ro - TAL
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TAL-Elek7ro - TAL
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: SuperWave P8
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TB strip
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TB strip
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: SuperWave P8
|
||||||
|
type: plugin
|
||||||
|
- automations:
|
||||||
|
- automation_name: Automation track
|
||||||
|
automation_patterns:
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '0'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.32'
|
||||||
|
- pos: '3048'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '3744'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '6120'
|
||||||
|
value: '0.32'
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '6144'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.32'
|
||||||
|
- pos: '3048'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '3744'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '6120'
|
||||||
|
value: '0.32'
|
||||||
|
automationtrack: Present
|
||||||
|
type: automation
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/USA
|
||||||
|
Joe and Jill Biden's beautiful Raver High Tech America is building a great future!.flac
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '146.4'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-1
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/Donald
|
||||||
|
Trump with family Build New America for future generations.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '148.8'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-1
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/Charlie
|
||||||
|
and Erika Kirk continue main Evolution of Humanity forever.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '145.6'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-1
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/The
|
||||||
|
new Communist High-Tech Russia of Alexander and Natalia Zakharchenko is building
|
||||||
|
a magical future!.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '146.4'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-2
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/DE
|
||||||
|
The great Raver high-tech evolution continues throughout the World of Love and
|
||||||
|
Happiness of Ursula von Der Leyne.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '147.2'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-2
|
||||||
|
type: plugin
|
||||||
+762
@@ -0,0 +1,762 @@
|
|||||||
|
bpm: '200'
|
||||||
|
file: PRICE-SINGLE-1-USD-FULL-COLLECTION-15-USD-0001-TEMPLATE-A-1-old-TEMPLATE-HH-00035-HAPPY-HARDCORE-ACID-READY
|
||||||
|
src: /nethome/jotachina/projetos/mmpSearch/mmp/PRICE-SINGLE-1-USD-FULL-COLLECTION-15-USD-0001-TEMPLATE-A-1-old-TEMPLATE-HH-00035-HAPPY-HARDCORE-ACID-READY.mmp
|
||||||
|
tags:
|
||||||
|
TAG:
|
||||||
|
- plugin
|
||||||
|
- automation
|
||||||
|
automation:
|
||||||
|
- Automation track
|
||||||
|
- Automation track
|
||||||
|
bassline: []
|
||||||
|
plugin:
|
||||||
|
- vestige
|
||||||
|
- audiofileprocessor
|
||||||
|
sample: []
|
||||||
|
tracks:
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TAL-Elek7ro - TAL
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TAL-Elek7ro - TAL
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TAL-Elek7ro - TAL
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: SuperWave P8
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TB strip
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TB strip
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: SuperWave P8
|
||||||
|
type: plugin
|
||||||
|
- automations:
|
||||||
|
- automation_name: Automation track
|
||||||
|
automation_patterns:
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '0'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.32'
|
||||||
|
- pos: '3048'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '3744'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '6120'
|
||||||
|
value: '0.32'
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '6144'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.32'
|
||||||
|
- pos: '3048'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '3744'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '6120'
|
||||||
|
value: '0.32'
|
||||||
|
automationtrack: Present
|
||||||
|
type: automation
|
||||||
|
- automation_name: Automation track
|
||||||
|
automation_patterns:
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '0'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.32'
|
||||||
|
- pos: '3048'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '3744'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '6120'
|
||||||
|
value: '0.32'
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '6144'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.32'
|
||||||
|
- pos: '3048'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '3744'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '6120'
|
||||||
|
value: '0.32'
|
||||||
|
automationtrack: Present
|
||||||
|
type: automation
|
||||||
|
- automations:
|
||||||
|
- automation_name: Automation track
|
||||||
|
automation_patterns:
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '0'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.32'
|
||||||
|
- pos: '3048'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '3744'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '6120'
|
||||||
|
value: '0.32'
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '6144'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.32'
|
||||||
|
- pos: '3048'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '3744'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '6120'
|
||||||
|
value: '0.32'
|
||||||
|
automationtrack: Present
|
||||||
|
type: automation
|
||||||
|
- automation_name: Automation track
|
||||||
|
automation_patterns:
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '0'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.32'
|
||||||
|
- pos: '3048'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '3744'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '6120'
|
||||||
|
value: '0.32'
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '6144'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.32'
|
||||||
|
- pos: '3048'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '3744'
|
||||||
|
value: '0.57'
|
||||||
|
- pos: '6120'
|
||||||
|
value: '0.32'
|
||||||
|
automationtrack: Present
|
||||||
|
type: automation
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/USA
|
||||||
|
Joe and Jill Biden's beautiful Raver High Tech America is building a great future!.flac
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '146.4'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-1
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/Donald
|
||||||
|
Trump with family Build New America for future generations.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '148.8'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-1
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/Charlie
|
||||||
|
and Erika Kirk continue main Evolution of Humanity forever.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '145.6'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-1
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/The
|
||||||
|
new Communist High-Tech Russia of Alexander and Natalia Zakharchenko is building
|
||||||
|
a magical future!.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '146.4'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-2
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/DE
|
||||||
|
The great Raver high-tech evolution continues throughout the World of Love and
|
||||||
|
Happiness of Ursula von Der Leyne.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '147.2'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-2
|
||||||
|
type: plugin
|
||||||
+667
@@ -0,0 +1,667 @@
|
|||||||
|
bpm: '145'
|
||||||
|
file: PRICE-SINGLE-1-USD-FULL-COLLECTION-15-USD-0003-TEMPLATE-A-1-old-TEMPLATE-TR-00031-TRUE-IBIZA-TRANCE-READY
|
||||||
|
src: /nethome/jotachina/projetos/mmpSearch/mmp/PRICE-SINGLE-1-USD-FULL-COLLECTION-15-USD-0003-TEMPLATE-A-1-old-TEMPLATE-TR-00031-TRUE-IBIZA-TRANCE-READY.mmp
|
||||||
|
tags:
|
||||||
|
TAG:
|
||||||
|
- plugin
|
||||||
|
automation: []
|
||||||
|
bassline: []
|
||||||
|
plugin:
|
||||||
|
- zynaddsubfx
|
||||||
|
- vestige
|
||||||
|
- audiofileprocessor
|
||||||
|
sample: []
|
||||||
|
tracks:
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '100'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
controller:
|
||||||
|
bandwidth_depth: '64'
|
||||||
|
filter_cutoff_depth: '64'
|
||||||
|
filter_q_depth: '64'
|
||||||
|
mod_wheel_depth: '80'
|
||||||
|
panning_depth: '64'
|
||||||
|
pitchwheel_bendrange: '200'
|
||||||
|
portamento_pitchthresh: '3'
|
||||||
|
portamento_pitchthreshtype: '1'
|
||||||
|
portamento_portamento: '0'
|
||||||
|
portamento_propdepth: '90'
|
||||||
|
portamento_proportional: '0'
|
||||||
|
portamento_proprate: '80'
|
||||||
|
portamento_time: '64'
|
||||||
|
portamento_updowntimestretch: '64'
|
||||||
|
resonance_bandwidth_depth: '64'
|
||||||
|
resonance_center_depth: '64'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '4'
|
||||||
|
insertion_effects:
|
||||||
|
- par: '20'
|
||||||
|
part: '0'
|
||||||
|
preset: '0'
|
||||||
|
type: '1'
|
||||||
|
- par: '20'
|
||||||
|
part: '0'
|
||||||
|
preset: '0'
|
||||||
|
type: '1'
|
||||||
|
- par: '64'
|
||||||
|
part: '0'
|
||||||
|
preset: '0'
|
||||||
|
type: '7'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
instrument_effects:
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
instrument_name: zynaddsubfx
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '69'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '121.6'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
system_effects:
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- type: '0'
|
||||||
|
vol: '0'
|
||||||
|
track_name: Lenin_ZynAddSubFX-10273502-Hihat
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TAL-Elek7ro - TAL
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TAL-Elek7ro - TAL
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TAL-Elek7ro - TAL
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: SuperWave P8
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: DVS-8K
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: SuperWave P8
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/Donald
|
||||||
|
Trump with family Build New America for future generations.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '97.6'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-1
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/Charlie
|
||||||
|
and Erika Kirk continue main Evolution of Humanity forever.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '120'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-1-1
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/The
|
||||||
|
new Communist High-Tech Russia of Alexander and Natalia Zakharchenko is building
|
||||||
|
a magical future!.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '104'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-2
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/DE
|
||||||
|
The great Raver high-tech evolution continues throughout the World of Love and
|
||||||
|
Happiness of Ursula von Der Leyne.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '100'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-2
|
||||||
|
type: plugin
|
||||||
+805
@@ -0,0 +1,805 @@
|
|||||||
|
bpm: '163'
|
||||||
|
file: PRICE-SINGLE-1-USD-FULL-COLLECTION-15-USD-0003-TEMPLATE-A-1-old-TEMPLATE-TR-00163-IBIZA-ACID-TRANCE-READY
|
||||||
|
src: /nethome/jotachina/projetos/mmpSearch/mmp/PRICE-SINGLE-1-USD-FULL-COLLECTION-15-USD-0003-TEMPLATE-A-1-old-TEMPLATE-TR-00163-IBIZA-ACID-TRANCE-READY.mmp
|
||||||
|
tags:
|
||||||
|
TAG:
|
||||||
|
- plugin
|
||||||
|
- automation
|
||||||
|
automation:
|
||||||
|
- Automation track
|
||||||
|
- Automation track
|
||||||
|
bassline: []
|
||||||
|
plugin:
|
||||||
|
- zynaddsubfx
|
||||||
|
- vestige
|
||||||
|
- audiofileprocessor
|
||||||
|
sample: []
|
||||||
|
tracks:
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '100'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
controller:
|
||||||
|
bandwidth_depth: '64'
|
||||||
|
filter_cutoff_depth: '64'
|
||||||
|
filter_q_depth: '64'
|
||||||
|
mod_wheel_depth: '80'
|
||||||
|
panning_depth: '64'
|
||||||
|
pitchwheel_bendrange: '200'
|
||||||
|
portamento_pitchthresh: '3'
|
||||||
|
portamento_pitchthreshtype: '1'
|
||||||
|
portamento_portamento: '0'
|
||||||
|
portamento_propdepth: '90'
|
||||||
|
portamento_proportional: '0'
|
||||||
|
portamento_proprate: '80'
|
||||||
|
portamento_time: '64'
|
||||||
|
portamento_updowntimestretch: '64'
|
||||||
|
resonance_bandwidth_depth: '64'
|
||||||
|
resonance_center_depth: '64'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '4'
|
||||||
|
insertion_effects:
|
||||||
|
- par: '20'
|
||||||
|
part: '0'
|
||||||
|
preset: '0'
|
||||||
|
type: '1'
|
||||||
|
- par: '20'
|
||||||
|
part: '0'
|
||||||
|
preset: '0'
|
||||||
|
type: '1'
|
||||||
|
- par: '64'
|
||||||
|
part: '0'
|
||||||
|
preset: '0'
|
||||||
|
type: '7'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
instrument_effects:
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
instrument_name: zynaddsubfx
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '69'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '92.8'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
system_effects:
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- type: '0'
|
||||||
|
vol: '0'
|
||||||
|
track_name: Lenin_ZynAddSubFX-10273502-Hihat
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TAL-Elek7ro - TAL
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TAL-Elek7ro - TAL
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TAL-Elek7ro - TAL
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TB strip
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TB strip
|
||||||
|
type: plugin
|
||||||
|
- automations:
|
||||||
|
- automation_name: Automation track
|
||||||
|
automation_patterns:
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '0'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.12'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.38'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.38'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '6144'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.12'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.38'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.38'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
automationtrack: Present
|
||||||
|
type: automation
|
||||||
|
- automation_name: Automation track
|
||||||
|
automation_patterns:
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '0'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.24'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '6144'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.24'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
automationtrack: Present
|
||||||
|
type: automation
|
||||||
|
- automations:
|
||||||
|
- automation_name: Automation track
|
||||||
|
automation_patterns:
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '0'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.12'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.38'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.38'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '6144'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.12'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.38'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.38'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
automationtrack: Present
|
||||||
|
type: automation
|
||||||
|
- automation_name: Automation track
|
||||||
|
automation_patterns:
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '0'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.24'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '6144'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.24'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
automationtrack: Present
|
||||||
|
type: automation
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/Donald
|
||||||
|
Trump with family Build New America for future generations.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '200'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-1
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/Charlie
|
||||||
|
and Erika Kirk continue main Evolution of Humanity forever.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '200'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-1-1
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/The
|
||||||
|
new Communist High-Tech Russia of Alexander and Natalia Zakharchenko is building
|
||||||
|
a magical future!.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '200'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-2
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/DE
|
||||||
|
The great Raver high-tech evolution continues throughout the World of Love and
|
||||||
|
Happiness of Ursula von Der Leyne.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '200'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-2
|
||||||
|
type: plugin
|
||||||
+980
@@ -0,0 +1,980 @@
|
|||||||
|
bpm: '163'
|
||||||
|
file: PRICE-SINGLE-1-USD-FULL-COLLECTION-15-USD-0003-TEMPLATE-A-1-old-TEMPLATE-TR-00165-IBIZA-ACID-TRANCE-READY
|
||||||
|
src: /nethome/jotachina/projetos/mmpSearch/mmp/PRICE-SINGLE-1-USD-FULL-COLLECTION-15-USD-0003-TEMPLATE-A-1-old-TEMPLATE-TR-00165-IBIZA-ACID-TRANCE-READY.mmp
|
||||||
|
tags:
|
||||||
|
TAG:
|
||||||
|
- plugin
|
||||||
|
- automation
|
||||||
|
automation:
|
||||||
|
- Automation track
|
||||||
|
- Automation track
|
||||||
|
- Automation track
|
||||||
|
bassline: []
|
||||||
|
plugin:
|
||||||
|
- zynaddsubfx
|
||||||
|
- vestige
|
||||||
|
- audiofileprocessor
|
||||||
|
sample: []
|
||||||
|
tracks:
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '100'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
controller:
|
||||||
|
bandwidth_depth: '64'
|
||||||
|
filter_cutoff_depth: '64'
|
||||||
|
filter_q_depth: '64'
|
||||||
|
mod_wheel_depth: '80'
|
||||||
|
panning_depth: '64'
|
||||||
|
pitchwheel_bendrange: '200'
|
||||||
|
portamento_pitchthresh: '3'
|
||||||
|
portamento_pitchthreshtype: '1'
|
||||||
|
portamento_portamento: '0'
|
||||||
|
portamento_propdepth: '90'
|
||||||
|
portamento_proportional: '0'
|
||||||
|
portamento_proprate: '80'
|
||||||
|
portamento_time: '64'
|
||||||
|
portamento_updowntimestretch: '64'
|
||||||
|
resonance_bandwidth_depth: '64'
|
||||||
|
resonance_center_depth: '64'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '4'
|
||||||
|
insertion_effects:
|
||||||
|
- par: '20'
|
||||||
|
part: '0'
|
||||||
|
preset: '0'
|
||||||
|
type: '1'
|
||||||
|
- par: '20'
|
||||||
|
part: '0'
|
||||||
|
preset: '0'
|
||||||
|
type: '1'
|
||||||
|
- par: '64'
|
||||||
|
part: '0'
|
||||||
|
preset: '0'
|
||||||
|
type: '7'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
instrument_effects:
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
instrument_name: zynaddsubfx
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '69'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '92.8'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
system_effects:
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- type: '0'
|
||||||
|
vol: '0'
|
||||||
|
track_name: Lenin_ZynAddSubFX-10273502-Hihat
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TAL-Elek7ro - TAL
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TAL-Elek7ro - TAL
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TAL-Elek7ro - TAL
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TB strip
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TB strip
|
||||||
|
type: plugin
|
||||||
|
- error: "Plugin 'vestige' n\xE3o est\xE1 na lista de suportados"
|
||||||
|
track_name: TB strip
|
||||||
|
type: plugin
|
||||||
|
- automations:
|
||||||
|
- automation_name: Automation track
|
||||||
|
automation_patterns:
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '0'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.12'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.38'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.38'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '6144'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.12'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.38'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.38'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
automationtrack: Present
|
||||||
|
type: automation
|
||||||
|
- automation_name: Automation track
|
||||||
|
automation_patterns:
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '0'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.24'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '6144'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.24'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
automationtrack: Present
|
||||||
|
type: automation
|
||||||
|
- automation_name: Automation track
|
||||||
|
automation_patterns:
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '0'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.24'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '6144'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.24'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
automationtrack: Present
|
||||||
|
type: automation
|
||||||
|
- automations:
|
||||||
|
- automation_name: Automation track
|
||||||
|
automation_patterns:
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '0'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.12'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.38'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.38'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '6144'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.12'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.38'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.38'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
automationtrack: Present
|
||||||
|
type: automation
|
||||||
|
- automation_name: Automation track
|
||||||
|
automation_patterns:
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '0'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.24'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '6144'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.24'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
automationtrack: Present
|
||||||
|
type: automation
|
||||||
|
- automation_name: Automation track
|
||||||
|
automation_patterns:
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '0'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.24'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '6144'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.24'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
automationtrack: Present
|
||||||
|
type: automation
|
||||||
|
- automations:
|
||||||
|
- automation_name: Automation track
|
||||||
|
automation_patterns:
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '0'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.12'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.38'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.38'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '6144'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.12'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.38'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.38'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
automationtrack: Present
|
||||||
|
type: automation
|
||||||
|
- automation_name: Automation track
|
||||||
|
automation_patterns:
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '0'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.24'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '6144'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.24'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
automationtrack: Present
|
||||||
|
type: automation
|
||||||
|
- automation_name: Automation track
|
||||||
|
automation_patterns:
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '0'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.24'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
- len: '6168'
|
||||||
|
mute: '0'
|
||||||
|
name: TB strip>1
|
||||||
|
pos: '6144'
|
||||||
|
prog: '1'
|
||||||
|
tens: '1'
|
||||||
|
times:
|
||||||
|
- pos: '0'
|
||||||
|
value: '0.24'
|
||||||
|
- pos: '3024'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '3600'
|
||||||
|
value: '0.5'
|
||||||
|
- pos: '6168'
|
||||||
|
value: '0.24'
|
||||||
|
automationtrack: Present
|
||||||
|
type: automation
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/Donald
|
||||||
|
Trump with family Build New America for future generations.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '200'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-1
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/Charlie
|
||||||
|
and Erika Kirk continue main Evolution of Humanity forever.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '200'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-1-1
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/The
|
||||||
|
new Communist High-Tech Russia of Alexander and Natalia Zakharchenko is building
|
||||||
|
a magical future!.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '200'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-2
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0.999'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: D:/VSTSYNTHS-0001/VSTSYNTHS/MAIN-SYNTHS-FOLDER/AAA-0000001/AGITATION-00001/DE
|
||||||
|
The great Raver high-tech evolution continues throughout the World of Love and
|
||||||
|
Happiness of Ursula von Der Leyne.wav
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '1'
|
||||||
|
numofeffects: '5'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '81'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '-20'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '200'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: AGIT-2
|
||||||
|
type: plugin
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,781 @@
|
|||||||
|
bpm: '260'
|
||||||
|
file: Psychedelic storm
|
||||||
|
src: /nethome/jotachina/projetos/mmpSearch/mmp/Psychedelic storm.mmp
|
||||||
|
tags:
|
||||||
|
TAG:
|
||||||
|
- plugin
|
||||||
|
automation: []
|
||||||
|
bassline: []
|
||||||
|
plugin:
|
||||||
|
- zynaddsubfx
|
||||||
|
- audiofileprocessor
|
||||||
|
sample: []
|
||||||
|
tracks:
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
controller:
|
||||||
|
bandwidth_depth: '64'
|
||||||
|
filter_cutoff_depth: '64'
|
||||||
|
filter_q_depth: '64'
|
||||||
|
mod_wheel_depth: '80'
|
||||||
|
panning_depth: '64'
|
||||||
|
pitchwheel_bendrange: '100'
|
||||||
|
portamento_pitchthresh: '3'
|
||||||
|
portamento_pitchthreshtype: '1'
|
||||||
|
portamento_portamento: '0'
|
||||||
|
portamento_propdepth: '90'
|
||||||
|
portamento_proportional: '0'
|
||||||
|
portamento_proprate: '80'
|
||||||
|
portamento_time: '64'
|
||||||
|
portamento_updowntimestretch: '64'
|
||||||
|
resonance_bandwidth_depth: '64'
|
||||||
|
resonance_center_depth: '64'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '0'
|
||||||
|
numofeffects: '0'
|
||||||
|
insertion_effects:
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
instrument_effects:
|
||||||
|
- par: '1'
|
||||||
|
preset: '0'
|
||||||
|
route: '0'
|
||||||
|
type: '6'
|
||||||
|
- par: '64'
|
||||||
|
preset: '0'
|
||||||
|
route: '0'
|
||||||
|
type: '7'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
instrument_name: zynaddsubfx
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '57'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '118.4'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
system_effects:
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- type: '0'
|
||||||
|
vol: '0'
|
||||||
|
track_name: Trash Guitar 1
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
controller:
|
||||||
|
bandwidth_depth: '64'
|
||||||
|
filter_cutoff_depth: '64'
|
||||||
|
filter_q_depth: '64'
|
||||||
|
mod_wheel_depth: '80'
|
||||||
|
panning_depth: '64'
|
||||||
|
pitchwheel_bendrange: '100'
|
||||||
|
portamento_pitchthresh: '3'
|
||||||
|
portamento_pitchthreshtype: '1'
|
||||||
|
portamento_portamento: '0'
|
||||||
|
portamento_propdepth: '90'
|
||||||
|
portamento_proportional: '0'
|
||||||
|
portamento_proprate: '80'
|
||||||
|
portamento_time: '64'
|
||||||
|
portamento_updowntimestretch: '64'
|
||||||
|
resonance_bandwidth_depth: '64'
|
||||||
|
resonance_center_depth: '64'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '0'
|
||||||
|
numofeffects: '0'
|
||||||
|
insertion_effects:
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
instrument_effects:
|
||||||
|
- par: '1'
|
||||||
|
preset: '0'
|
||||||
|
route: '0'
|
||||||
|
type: '6'
|
||||||
|
- par: '64'
|
||||||
|
preset: '0'
|
||||||
|
route: '0'
|
||||||
|
type: '7'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
instrument_name: zynaddsubfx
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '57'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '116'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
system_effects:
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- type: '0'
|
||||||
|
vol: '0'
|
||||||
|
track_name: Trash Guitar 1
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
controller:
|
||||||
|
bandwidth_depth: '64'
|
||||||
|
filter_cutoff_depth: '64'
|
||||||
|
filter_q_depth: '64'
|
||||||
|
mod_wheel_depth: '80'
|
||||||
|
panning_depth: '64'
|
||||||
|
pitchwheel_bendrange: '100'
|
||||||
|
portamento_pitchthresh: '3'
|
||||||
|
portamento_pitchthreshtype: '1'
|
||||||
|
portamento_portamento: '0'
|
||||||
|
portamento_propdepth: '90'
|
||||||
|
portamento_proportional: '0'
|
||||||
|
portamento_proprate: '80'
|
||||||
|
portamento_time: '64'
|
||||||
|
portamento_updowntimestretch: '64'
|
||||||
|
resonance_bandwidth_depth: '64'
|
||||||
|
resonance_center_depth: '64'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '0'
|
||||||
|
numofeffects: '0'
|
||||||
|
insertion_effects:
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
instrument_effects:
|
||||||
|
- par: '1'
|
||||||
|
preset: '0'
|
||||||
|
route: '0'
|
||||||
|
type: '6'
|
||||||
|
- par: '64'
|
||||||
|
preset: '0'
|
||||||
|
route: '0'
|
||||||
|
type: '7'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
instrument_name: zynaddsubfx
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '57'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '120'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
system_effects:
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- type: '0'
|
||||||
|
vol: '0'
|
||||||
|
track_name: Trash Guitar 1
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
controller:
|
||||||
|
bandwidth_depth: '64'
|
||||||
|
filter_cutoff_depth: '64'
|
||||||
|
filter_q_depth: '64'
|
||||||
|
mod_wheel_depth: '80'
|
||||||
|
panning_depth: '64'
|
||||||
|
pitchwheel_bendrange: '100'
|
||||||
|
portamento_pitchthresh: '3'
|
||||||
|
portamento_pitchthreshtype: '1'
|
||||||
|
portamento_portamento: '0'
|
||||||
|
portamento_propdepth: '90'
|
||||||
|
portamento_proportional: '0'
|
||||||
|
portamento_proprate: '80'
|
||||||
|
portamento_time: '64'
|
||||||
|
portamento_updowntimestretch: '64'
|
||||||
|
resonance_bandwidth_depth: '64'
|
||||||
|
resonance_center_depth: '64'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '0'
|
||||||
|
numofeffects: '0'
|
||||||
|
insertion_effects:
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
instrument_effects:
|
||||||
|
- par: '1'
|
||||||
|
preset: '0'
|
||||||
|
route: '0'
|
||||||
|
type: '6'
|
||||||
|
- par: '64'
|
||||||
|
preset: '0'
|
||||||
|
route: '0'
|
||||||
|
type: '7'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
instrument_name: zynaddsubfx
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '57'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '124.8'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
system_effects:
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- type: '0'
|
||||||
|
vol: '0'
|
||||||
|
track_name: Trash Guitar 1
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
audiofileprocessor:
|
||||||
|
amp: '100'
|
||||||
|
eframe: '1'
|
||||||
|
interp: '1'
|
||||||
|
lframe: '0'
|
||||||
|
looped: '0'
|
||||||
|
reversed: '0'
|
||||||
|
sframe: '0'
|
||||||
|
src: effects/warp01.ogg
|
||||||
|
stutter: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '0'
|
||||||
|
numofeffects: '0'
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '57'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '41.6'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
plugin_name: audiofileprocessor
|
||||||
|
track_name: warp01.ogg
|
||||||
|
type: plugin
|
||||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,171 @@
|
|||||||
|
bpm: '250'
|
||||||
|
file: Syu Classical
|
||||||
|
src: /nethome/jotachina/projetos/mmpSearch/mmp/Syu Classical.mmp
|
||||||
|
tags:
|
||||||
|
TAG:
|
||||||
|
- plugin
|
||||||
|
automation: []
|
||||||
|
bassline: []
|
||||||
|
plugin:
|
||||||
|
- zynaddsubfx
|
||||||
|
sample: []
|
||||||
|
tracks:
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
controller:
|
||||||
|
bandwidth_depth: '64'
|
||||||
|
filter_cutoff_depth: '64'
|
||||||
|
filter_q_depth: '64'
|
||||||
|
mod_wheel_depth: '80'
|
||||||
|
panning_depth: '64'
|
||||||
|
pitchwheel_bendrange: '100'
|
||||||
|
portamento_pitchthresh: '3'
|
||||||
|
portamento_pitchthreshtype: '1'
|
||||||
|
portamento_portamento: '0'
|
||||||
|
portamento_propdepth: '90'
|
||||||
|
portamento_proportional: '0'
|
||||||
|
portamento_proprate: '80'
|
||||||
|
portamento_time: '64'
|
||||||
|
portamento_updowntimestretch: '64'
|
||||||
|
resonance_bandwidth_depth: '64'
|
||||||
|
resonance_center_depth: '64'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '0'
|
||||||
|
numofeffects: '0'
|
||||||
|
insertion_effects:
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
instrument_effects:
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
instrument_name: zynaddsubfx
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '57'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '100'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
system_effects:
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- type: '0'
|
||||||
|
vol: '0'
|
||||||
|
track_name: Saw Strings 3
|
||||||
|
type: plugin
|
||||||
@@ -0,0 +1,648 @@
|
|||||||
|
bpm: '180'
|
||||||
|
file: Tears of Tragedy Classical 2
|
||||||
|
src: /nethome/jotachina/projetos/mmpSearch/mmp/Tears of Tragedy Classical 2.mmp
|
||||||
|
tags:
|
||||||
|
TAG:
|
||||||
|
- plugin
|
||||||
|
automation: []
|
||||||
|
bassline: []
|
||||||
|
plugin:
|
||||||
|
- zynaddsubfx
|
||||||
|
sample: []
|
||||||
|
tracks:
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
controller:
|
||||||
|
bandwidth_depth: '64'
|
||||||
|
filter_cutoff_depth: '64'
|
||||||
|
filter_q_depth: '64'
|
||||||
|
mod_wheel_depth: '80'
|
||||||
|
panning_depth: '64'
|
||||||
|
pitchwheel_bendrange: '100'
|
||||||
|
portamento_pitchthresh: '3'
|
||||||
|
portamento_pitchthreshtype: '1'
|
||||||
|
portamento_portamento: '0'
|
||||||
|
portamento_propdepth: '90'
|
||||||
|
portamento_proportional: '0'
|
||||||
|
portamento_proprate: '80'
|
||||||
|
portamento_time: '64'
|
||||||
|
portamento_updowntimestretch: '64'
|
||||||
|
resonance_bandwidth_depth: '64'
|
||||||
|
resonance_center_depth: '64'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '0'
|
||||||
|
numofeffects: '0'
|
||||||
|
insertion_effects:
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
instrument_effects:
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
instrument_name: zynaddsubfx
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '57'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '136.8'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
system_effects:
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- type: '0'
|
||||||
|
vol: '0'
|
||||||
|
track_name: Ohh Choir
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
controller:
|
||||||
|
bandwidth_depth: '64'
|
||||||
|
filter_cutoff_depth: '64'
|
||||||
|
filter_q_depth: '64'
|
||||||
|
mod_wheel_depth: '80'
|
||||||
|
panning_depth: '64'
|
||||||
|
pitchwheel_bendrange: '100'
|
||||||
|
portamento_pitchthresh: '3'
|
||||||
|
portamento_pitchthreshtype: '1'
|
||||||
|
portamento_portamento: '0'
|
||||||
|
portamento_propdepth: '90'
|
||||||
|
portamento_proportional: '0'
|
||||||
|
portamento_proprate: '80'
|
||||||
|
portamento_time: '64'
|
||||||
|
portamento_updowntimestretch: '64'
|
||||||
|
resonance_bandwidth_depth: '64'
|
||||||
|
resonance_center_depth: '64'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '0'
|
||||||
|
numofeffects: '0'
|
||||||
|
insertion_effects:
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
instrument_effects:
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
instrument_name: zynaddsubfx
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '57'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '137.6'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
system_effects:
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- type: '0'
|
||||||
|
vol: '0'
|
||||||
|
track_name: Rhodes Strings4
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
controller:
|
||||||
|
bandwidth_depth: '64'
|
||||||
|
filter_cutoff_depth: '64'
|
||||||
|
filter_q_depth: '64'
|
||||||
|
mod_wheel_depth: '80'
|
||||||
|
panning_depth: '64'
|
||||||
|
pitchwheel_bendrange: '100'
|
||||||
|
portamento_pitchthresh: '3'
|
||||||
|
portamento_pitchthreshtype: '1'
|
||||||
|
portamento_portamento: '0'
|
||||||
|
portamento_propdepth: '90'
|
||||||
|
portamento_proportional: '0'
|
||||||
|
portamento_proprate: '80'
|
||||||
|
portamento_time: '64'
|
||||||
|
portamento_updowntimestretch: '64'
|
||||||
|
resonance_bandwidth_depth: '64'
|
||||||
|
resonance_center_depth: '64'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '0'
|
||||||
|
numofeffects: '0'
|
||||||
|
insertion_effects:
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
instrument_effects:
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
instrument_name: zynaddsubfx
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '57'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '96'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
system_effects:
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- type: '0'
|
||||||
|
vol: '0'
|
||||||
|
track_name: Metal Sound 2
|
||||||
|
type: plugin
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
controller:
|
||||||
|
bandwidth_depth: '64'
|
||||||
|
filter_cutoff_depth: '64'
|
||||||
|
filter_q_depth: '64'
|
||||||
|
mod_wheel_depth: '80'
|
||||||
|
panning_depth: '64'
|
||||||
|
pitchwheel_bendrange: '100'
|
||||||
|
portamento_pitchthresh: '3'
|
||||||
|
portamento_pitchthreshtype: '1'
|
||||||
|
portamento_portamento: '0'
|
||||||
|
portamento_propdepth: '90'
|
||||||
|
portamento_proportional: '0'
|
||||||
|
portamento_proprate: '80'
|
||||||
|
portamento_time: '64'
|
||||||
|
portamento_updowntimestretch: '64'
|
||||||
|
resonance_bandwidth_depth: '64'
|
||||||
|
resonance_center_depth: '64'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '0'
|
||||||
|
numofeffects: '0'
|
||||||
|
insertion_effects:
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
- part: '-1'
|
||||||
|
type: '0'
|
||||||
|
instrument_effects:
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
- route: '0'
|
||||||
|
type: '0'
|
||||||
|
instrument_name: zynaddsubfx
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '57'
|
||||||
|
fxch: '0'
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '1'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '108'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '0'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '0'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
system_effects:
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- send_vol: '0'
|
||||||
|
type: '0'
|
||||||
|
vol: '0'
|
||||||
|
- type: '0'
|
||||||
|
vol: '0'
|
||||||
|
track_name: Saw Strings 4
|
||||||
|
type: plugin
|
||||||
+200030
File diff suppressed because it is too large.
Load diff
+5370
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
+523701
-32890
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,155 @@
|
|||||||
|
bpm: '120'
|
||||||
|
file: grokihub-intro-meme
|
||||||
|
src: /nethome/jotachina/projetos/mmpSearch/mmp/grokihub-intro-meme.mmp
|
||||||
|
tags:
|
||||||
|
TAG:
|
||||||
|
- plugin
|
||||||
|
automation: []
|
||||||
|
bassline: []
|
||||||
|
plugin:
|
||||||
|
- nes
|
||||||
|
sample: []
|
||||||
|
tracks:
|
||||||
|
- arpeggiator:
|
||||||
|
arp: '0'
|
||||||
|
arp-enabled: '0'
|
||||||
|
arpcycle: '0'
|
||||||
|
arpdir: '0'
|
||||||
|
arpgate: '100'
|
||||||
|
arpmiss: '0'
|
||||||
|
arpmode: '0'
|
||||||
|
arprange: '1'
|
||||||
|
arprepeats: '1'
|
||||||
|
arpskip: '0'
|
||||||
|
arptime: '200'
|
||||||
|
arptime_denominator: '4'
|
||||||
|
arptime_numerator: '4'
|
||||||
|
arptime_syncmode: '0'
|
||||||
|
chordcreator:
|
||||||
|
chord: '0'
|
||||||
|
chord-enabled: '0'
|
||||||
|
chordrange: '1'
|
||||||
|
elcut:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
eldata:
|
||||||
|
fcut: '14000'
|
||||||
|
fres: '0.5'
|
||||||
|
ftype: '0'
|
||||||
|
fwet: '0'
|
||||||
|
elres:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
elvol:
|
||||||
|
amt: '0'
|
||||||
|
att: '0'
|
||||||
|
ctlenvamt: '0'
|
||||||
|
dec: '0.5'
|
||||||
|
hold: '0.5'
|
||||||
|
lamt: '0'
|
||||||
|
latt: '0'
|
||||||
|
lpdel: '0'
|
||||||
|
lshp: '0'
|
||||||
|
lspd: '0.1'
|
||||||
|
lspd_denominator: '4'
|
||||||
|
lspd_numerator: '4'
|
||||||
|
lspd_syncmode: '0'
|
||||||
|
pdel: '0'
|
||||||
|
rel: '0.1'
|
||||||
|
sustain: '0.5'
|
||||||
|
userwavefile: ''
|
||||||
|
x100: '0'
|
||||||
|
fxchain:
|
||||||
|
enabled: '0'
|
||||||
|
numofeffects: '0'
|
||||||
|
instrument_name: nes
|
||||||
|
instrumenttrack:
|
||||||
|
basenote: '69'
|
||||||
|
fxch: N/A
|
||||||
|
pan: '0'
|
||||||
|
pitch: '0'
|
||||||
|
pitchrange: '2'
|
||||||
|
usemasterpitch: '1'
|
||||||
|
vol: '200'
|
||||||
|
midiport:
|
||||||
|
basevelocity: '63'
|
||||||
|
fixedinputvelocity: '-1'
|
||||||
|
fixedoutputnote: '-1'
|
||||||
|
fixedoutputvelocity: '-1'
|
||||||
|
inputchannel: '0'
|
||||||
|
inputcontroller: '-1'
|
||||||
|
outputchannel: '1'
|
||||||
|
outputcontroller: '-1'
|
||||||
|
outputprogram: '1'
|
||||||
|
readable: '0'
|
||||||
|
writable: '0'
|
||||||
|
nescaline:
|
||||||
|
crs1: '0'
|
||||||
|
crs2: '0'
|
||||||
|
crs3: '0'
|
||||||
|
dc1: '0'
|
||||||
|
dc2: '2'
|
||||||
|
envlen1: '0'
|
||||||
|
envlen2: '0'
|
||||||
|
envlen4: '0'
|
||||||
|
envloop1: '0'
|
||||||
|
envloop2: '0'
|
||||||
|
envloop4: '0'
|
||||||
|
envon1: '0'
|
||||||
|
envon2: '0'
|
||||||
|
envon4: '0'
|
||||||
|
nfreq4: '0'
|
||||||
|
nfrqmode4: '0'
|
||||||
|
nmode4: '0'
|
||||||
|
nq4: '1'
|
||||||
|
nswp4: '0'
|
||||||
|
on1: '1'
|
||||||
|
on2: '1'
|
||||||
|
on3: '1'
|
||||||
|
on4: '0'
|
||||||
|
swamt1: '0'
|
||||||
|
swamt2: '0'
|
||||||
|
sweep1: '0'
|
||||||
|
sweep2: '0'
|
||||||
|
swrate1: '0'
|
||||||
|
swrate2: '0'
|
||||||
|
vibr: '0'
|
||||||
|
vol: '1'
|
||||||
|
vol1: '15'
|
||||||
|
vol2: '15'
|
||||||
|
vol3: '15'
|
||||||
|
vol4: '15'
|
||||||
|
track_name: Nescaline
|
||||||
|
type: plugin
|
||||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
+1765
File diff suppressed because it is too large.
Load diff
+1607
File diff suppressed because it is too large.
Load diff
+219
-184
@@ -7,7 +7,7 @@ title: "{{ page.file }}"
|
|||||||
{% include sidebar.html %}
|
{% include sidebar.html %}
|
||||||
<main class="content">
|
<main class="content">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<br>
|
<br />
|
||||||
|
|
||||||
<h1 class="title is-3 mb-4"><code>{{ page.file }}</code></h1>
|
<h1 class="title is-3 mb-4"><code>{{ page.file }}</code></h1>
|
||||||
|
|
||||||
@@ -16,275 +16,305 @@ title: "{{ page.file }}"
|
|||||||
<div class="columns is-mobile is-multiline is-vcentered">
|
<div class="columns is-mobile is-multiline is-vcentered">
|
||||||
{% if page.file %}
|
{% if page.file %}
|
||||||
<div class="column is-narrow">
|
<div class="column is-narrow">
|
||||||
<span><strong><code>📁 Arquivo:</code></strong> {{ page.file }}</span>
|
<span
|
||||||
|
><strong><code>📁 Arquivo:</code></strong> {{ page.file }}</span
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %} {% if page.bpm %}
|
||||||
{% if page.bpm %}
|
|
||||||
<div class="column is-narrow">
|
<div class="column is-narrow">
|
||||||
<span><strong><code>🎵 BPM:</code></strong> {{ page.bpm }}</span>
|
<span
|
||||||
|
><strong><code>🎵 BPM:</code></strong> {{ page.bpm }}</span
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %} {% assign audio_file_path = '/mmp/wav/' | append: page.file |
|
||||||
|
append: '.wav' %} {% if page.file %}
|
||||||
{% assign audio_file_path = '/mmp/wav/' | append: page.file | append: '.wav' %}
|
|
||||||
{% if page.file %}
|
|
||||||
<section class="audio-player-section mb-6">
|
<section class="audio-player-section mb-6">
|
||||||
<audio controls>
|
<audio controls>
|
||||||
<source src="{{ audio_file_path | relative_url }}" type="audio/wav">
|
<source src="{{ audio_file_path | relative_url }}" type="audio/wav" />
|
||||||
{% assign audio_ogg_path = '/mmp/ogg/' | append: page.file | append: '.ogg' %}
|
{% assign audio_ogg_path = '/mmp/ogg/' | append: page.file | append:
|
||||||
<source src="{{ audio_ogg_path | relative_url }}" type="audio/ogg">
|
'.ogg' %}
|
||||||
|
<source src="{{ audio_ogg_path | relative_url }}" type="audio/ogg" />
|
||||||
Seu navegador não suporta o elemento <code>audio</code>.
|
Seu navegador não suporta o elemento <code>audio</code>.
|
||||||
</audio>
|
</audio>
|
||||||
</section>
|
</section>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
<div class="columns">
|
<div class="columns">
|
||||||
|
<div class="column is-half">
|
||||||
<div class="column is-two-thirds">
|
{% if page.tags %} {% assign tags_vazias = true %} {% for categoria in
|
||||||
|
page.tags %} {% if categoria[1] and categoria[1].size > 0 %} {% assign
|
||||||
{% if page.tags %}
|
tags_vazias = false %} {% endif %} {% endfor %} {% unless tags_vazias
|
||||||
{% assign tags_vazias = true %}
|
%}
|
||||||
{% for categoria in page.tags %}
|
|
||||||
{% if categoria[1] and categoria[1].size > 0 %}
|
|
||||||
{% assign tags_vazias = false %}
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% unless tags_vazias %}
|
|
||||||
<section class="tags-section mb-6">
|
<section class="tags-section mb-6">
|
||||||
<details>
|
<details>
|
||||||
<summary class="title is-5" style="cursor: pointer; padding-left: 0;">
|
<summary
|
||||||
|
class="title is-5"
|
||||||
|
style="cursor: pointer; padding-left: 0"
|
||||||
|
>
|
||||||
<code>🏷️ Tags</code>
|
<code>🏷️ Tags</code>
|
||||||
</summary>
|
</summary>
|
||||||
{% for categoria in page.tags %}
|
{% for categoria in page.tags %} {% if categoria[1] and
|
||||||
{% if categoria[1] and categoria[1].size > 0 %}
|
categoria[1].size > 0 %}
|
||||||
<div class="mb-4">
|
<div class="mb-4">
|
||||||
<strong><code>{{ categoria[0] }}:</code></strong>
|
<strong><code>{{ categoria[0] }}:</code></strong>
|
||||||
<div class="tags mt-2">
|
<div class="tags mt-2">
|
||||||
{% for valor in categoria[1] %}
|
{% for valor in categoria[1] %} {% if valor != "" %} {% assign
|
||||||
{% if valor != "" %}
|
tag_slug = valor | replace: ' ', '+' %} {% if categoria[0] ==
|
||||||
{% assign tag_slug = valor | replace: ' ', '+' %}
|
'bassline' %}
|
||||||
{% if categoria[0] == 'bassline' %}
|
<a
|
||||||
<a href="{{ '/bassline/?bassline=' | append: tag_slug | relative_url }}" class="tag is-info is-light">{{ valor }}</a>
|
href="{{ '/bassline/?bassline=' | append: tag_slug | relative_url }}"
|
||||||
|
class="tag is-info is-light"
|
||||||
|
>{{ valor }}</a
|
||||||
|
>
|
||||||
{% elsif categoria[0] == 'sample' %}
|
{% elsif categoria[0] == 'sample' %}
|
||||||
<a href="{{ '/sample/?sample=' | append: tag_slug | relative_url }}" class="tag is-info is-light">{{ valor }}</a>
|
<a
|
||||||
|
href="{{ '/sample/?sample=' | append: tag_slug | relative_url }}"
|
||||||
|
class="tag is-info is-light"
|
||||||
|
>{{ valor }}</a
|
||||||
|
>
|
||||||
{% elsif categoria[0] == 'plugin' %}
|
{% elsif categoria[0] == 'plugin' %}
|
||||||
<a href="{{ '/plugin/?plugin=' | append: tag_slug | relative_url }}" class="tag is-info is-light">{{ valor }}</a>
|
<a
|
||||||
|
href="{{ '/plugin/?plugin=' | append: tag_slug | relative_url }}"
|
||||||
|
class="tag is-info is-light"
|
||||||
|
>{{ valor }}</a
|
||||||
|
>
|
||||||
{% elsif categoria[0] == 'automation' %}
|
{% elsif categoria[0] == 'automation' %}
|
||||||
<a href="{{ '/automation/?automation=' | append: tag_slug | relative_url }}" class="tag is-info is-light">{{ valor }}</a>
|
<a
|
||||||
|
href="{{ '/automation/?automation=' | append: tag_slug | relative_url }}"
|
||||||
|
class="tag is-info is-light"
|
||||||
|
>{{ valor }}</a
|
||||||
|
>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a href="{{ '/' | append: tag_slug | relative_url }}" class="tag is-info is-light">{{ valor }}</a>
|
<a
|
||||||
{% endif %}
|
href="{{ '/' | append: tag_slug | relative_url }}"
|
||||||
{% endif %}
|
class="tag is-info is-light"
|
||||||
{% endfor %}
|
>{{ valor }}</a
|
||||||
|
>
|
||||||
|
{% endif %} {% endif %} {% endfor %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %} {% endfor %}
|
||||||
{% endfor %}
|
|
||||||
</details>
|
</details>
|
||||||
</section>
|
</section>
|
||||||
{% endunless %}
|
{% endunless %} {% endif %} {% if page.tracks and page.tracks.size > 0
|
||||||
{% endif %}
|
%}
|
||||||
|
|
||||||
{% if page.tracks and page.tracks.size > 0 %}
|
|
||||||
<section class="instruments-section">
|
<section class="instruments-section">
|
||||||
<details open>
|
<details open>
|
||||||
<summary class="title is-5" style="cursor: pointer; padding-left: 0;">
|
<summary
|
||||||
|
class="title is-5"
|
||||||
|
style="cursor: pointer; padding-left: 0"
|
||||||
|
>
|
||||||
<code>🎚️ Instrumentos </code>
|
<code>🎚️ Instrumentos </code>
|
||||||
</summary>
|
</summary>
|
||||||
|
|
||||||
<div class="content mt-3">
|
<div class="content mt-3">
|
||||||
<ul style="list-style: none; padding-left: 0;">
|
<ul style="list-style: none; padding-left: 0">
|
||||||
{% for track in page.tracks %}
|
{% for track in page.tracks %} {% assign tem_instr = false %}
|
||||||
{% assign tem_instr = false %}
|
{% if track.instruments and track.instruments.size > 0 %} {%
|
||||||
{% if track.instruments and track.instruments.size > 0 %}
|
assign tem_instr = true %} {% endif %} {% if
|
||||||
{% assign tem_instr = true %}
|
track.bassline_name or tem_instr %}
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if track.bassline_name or tem_instr %}
|
|
||||||
<li class="mb-5">
|
<li class="mb-5">
|
||||||
{% if track.bassline_name %}
|
|
||||||
<p class="has-text-weight-bold mb-2">🎼 {{ track.bassline_name }}</p>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if tem_instr %}
|
{% if tem_instr %}
|
||||||
<ul class="pl-4">
|
<ul class="pl-4">
|
||||||
{% for instrument in track.instruments %}
|
{% for instrument in track.instruments %} {% if
|
||||||
{% if instrument.instrument_name %}
|
instrument.instrument_name %} {% assign sample_src =
|
||||||
<li style="margin-bottom: 0.4rem;">
|
instrument.audiofileprocessor.src | default: "" | strip %}
|
||||||
|
{% assign has_sample = false %} {% if
|
||||||
|
instrument.audiofileprocessor and sample_src != "" %} {%
|
||||||
|
assign has_sample = true %} {% endif %}
|
||||||
|
|
||||||
<div style="display: flex; align-items: center; gap: 8px;">
|
<li style="margin-bottom: 0.4rem">
|
||||||
{% assign display_name = instrument.instrument_name %}
|
<details {% if has_sample %}open{% endif %}>
|
||||||
{% if display_name contains "audiofileprocessor" and instrument.patterns %}
|
<summary
|
||||||
{% assign first_pattern_name = instrument.patterns | map: 'name' | first %}
|
style="
|
||||||
{% if first_pattern_name and first_pattern_name != empty %}
|
cursor: pointer;
|
||||||
{% assign display_name = first_pattern_name | remove: ".ogg" | remove: ".wav" | remove: ".flac" | remove: ".mp3" %}
|
outline: none;
|
||||||
{% elsif instrument.audiofileprocessor.src %}
|
margin-bottom: 0.5rem;
|
||||||
{% assign src_parts = instrument.audiofileprocessor.src | split: '/' %}
|
"
|
||||||
{% assign file_name = src_parts | last %}
|
>
|
||||||
{% assign display_name = file_name | remove: ".ogg" | remove: ".wav" | remove: ".flac" | remove: ".mp3" %}
|
<div
|
||||||
{% endif %}
|
style="
|
||||||
{% endif %}
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
{% assign instrument_slug = display_name | replace: ' ', '+' %}
|
gap: 8px;
|
||||||
<a href="{{ '/instruments/?instrument=' | append: instrument_slug | relative_url }}" class="tag is-info is-light">
|
"
|
||||||
|
>
|
||||||
|
{% assign display_name =
|
||||||
|
instrument.instrument_name %} {% if display_name
|
||||||
|
contains "audiofileprocessor" and
|
||||||
|
instrument.patterns %} {% assign
|
||||||
|
first_pattern_name = instrument.patterns | map:
|
||||||
|
'name' | first %} {% if first_pattern_name and
|
||||||
|
first_pattern_name != empty %} {% assign
|
||||||
|
display_name = first_pattern_name | remove: ".ogg"
|
||||||
|
| remove: ".wav" | remove: ".flac" | remove:
|
||||||
|
".mp3" %} {% elsif
|
||||||
|
instrument.audiofileprocessor.src %} {% assign
|
||||||
|
src_parts = instrument.audiofileprocessor.src |
|
||||||
|
split: '/' %} {% assign file_name = src_parts |
|
||||||
|
last %} {% assign display_name = file_name |
|
||||||
|
remove: ".ogg" | remove: ".wav" | remove: ".flac"
|
||||||
|
| remove: ".mp3" %} {% endif %} {% endif %} {%
|
||||||
|
assign instrument_slug = display_name | replace: '
|
||||||
|
', '+' %}
|
||||||
|
<a
|
||||||
|
href="{{ '/instruments/?instrument=' | append: instrument_slug | relative_url }}"
|
||||||
|
class="tag is-info is-light"
|
||||||
|
>
|
||||||
<code>{{ display_name }}</code>
|
<code>{{ display_name }}</code>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
</summary>
|
||||||
|
|
||||||
{% comment %}
|
{% for pattern in instrument.patterns %} {% assign
|
||||||
LOOP para múltiplos patterns com rótulo P1, P2, P3.
|
pattern_steps = pattern.steps %} {% if pattern_steps
|
||||||
{% endcomment %}
|
and pattern_steps.size > 0 %}
|
||||||
{% for pattern in instrument.patterns %}
|
<div
|
||||||
{% assign pattern_steps = pattern.steps %}
|
class="mt-2 ml-4"
|
||||||
|
style="display: flex; align-items: center; gap: 4px"
|
||||||
{% if pattern_steps and pattern_steps.size > 0 %}
|
>
|
||||||
<div class="mt-2" style="display: flex; align-items: center; gap: 4px;">
|
{% assign bassline_index = forloop.index | minus: 1
|
||||||
|
%}
|
||||||
|
|
||||||
<span class="is-size-7 has-text-grey-light">
|
<span class="is-size-7 has-text-grey-light">
|
||||||
P{{ forloop.index }}:
|
{{ track.bassline_name }}{{ bassline_index }}:
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
{% comment %}
|
<div
|
||||||
>>> INÍCIO DA LÓGICA DE STEPS CLICÁVEIS (4-steps) <<<
|
class="patterns-container"
|
||||||
(O container agora é 'row' para manter os chunks na horizontal)
|
style="
|
||||||
{% endcomment %}
|
display: flex;
|
||||||
<div class="patterns-container" style="display: flex; flex-direction: row; flex-wrap: wrap; gap: 4px;">
|
flex-direction: row;
|
||||||
{% assign total_steps = pattern_steps.size %}
|
flex-wrap: wrap;
|
||||||
{% assign chunk_size = 4 %}
|
gap: 4px;
|
||||||
|
"
|
||||||
{% comment %} Calcula quantos pedaços de 4 steps teremos {% endcomment %}
|
>
|
||||||
{% assign num_chunks = total_steps | divided_by: chunk_size %}
|
{% assign total_steps = pattern_steps.size %} {%
|
||||||
|
assign chunk_size = 4 %} {% assign num_chunks =
|
||||||
{% comment %}
|
total_steps | divided_by: chunk_size %} {% assign
|
||||||
FIX: Primeiro calculamos o 'resto' e salvamos numa variável
|
remainder = total_steps | modulo: chunk_size %} {%
|
||||||
{% endcomment %}
|
if remainder > 0 %} {% assign num_chunks =
|
||||||
{% assign remainder = total_steps | modulo: chunk_size %}
|
num_chunks | plus: 1 %} {% endif %} {% for i in
|
||||||
|
(0..num_chunks) %} {% assign start_index = i |
|
||||||
{% comment %}
|
times: chunk_size %} {% assign current_chunk_array
|
||||||
FIX: Agora sim usamos a variável na comparação
|
= pattern_steps | slice: start_index, chunk_size
|
||||||
{% endcomment %}
|
%} {% if current_chunk_array.size > 0 %} {% assign
|
||||||
{% if remainder > 0 %}
|
chunk_string = "" %} {% for step in
|
||||||
{% assign num_chunks = num_chunks | plus: 1 %}
|
current_chunk_array %} {% if step == true or step
|
||||||
{% endif %}
|
== 'true' or step == 1 %} {% assign chunk_string =
|
||||||
|
chunk_string | append: '1' %} {% else %} {% assign
|
||||||
{% for i in (0..num_chunks) %}
|
chunk_string = chunk_string | append: '0' %} {%
|
||||||
{% assign start_index = i | times: chunk_size %}
|
endif %} {% endfor %} {% assign search_url =
|
||||||
|
'/pattern/?p=' | append: chunk_string |
|
||||||
{% comment %} Pega a fatia de 4 steps {% endcomment %}
|
relative_url %}
|
||||||
{% assign current_chunk_array = pattern_steps | slice: start_index, chunk_size %}
|
|
||||||
|
|
||||||
{% if current_chunk_array.size > 0 %}
|
|
||||||
|
|
||||||
{% comment %} 1. Serializa o chunk (ex: [1,0,0,1] -> "1001") {% endcomment %}
|
|
||||||
{% assign chunk_string = "" %}
|
|
||||||
{% for step in current_chunk_array %}
|
|
||||||
{% if step == true or step == 'true' or step == 1 %}
|
|
||||||
{% assign chunk_string = chunk_string | append: '1' %}
|
|
||||||
{% else %}
|
|
||||||
{% assign chunk_string = chunk_string | append: '0' %}
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% comment %}
|
|
||||||
2. Cria o link clicável
|
|
||||||
{% endcomment %}
|
|
||||||
{% assign search_url = '/pattern/?p=' | append: chunk_string | relative_url %}
|
|
||||||
|
|
||||||
<a href="{{ search_url }}" title="Buscar padrão {{ chunk_string }}" style="display: inline-block;">
|
|
||||||
|
|
||||||
{% comment %} 3. Renderiza o visual do step DENTRO do link {% endcomment %}
|
|
||||||
<div style="display: flex; flex-direction: row; border: 1px solid #999; padding: 2px; border-radius: 2px; background-color: #f0f0f0;">
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="{{ search_url }}"
|
||||||
|
title="Buscar padrão {{ chunk_string }}"
|
||||||
|
style="display: inline-block"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
style="
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
border: 1px solid #999;
|
||||||
|
padding: 2px;
|
||||||
|
border-radius: 2px;
|
||||||
|
background-color: #f0f0f0;
|
||||||
|
"
|
||||||
|
>
|
||||||
{% for step_active in current_chunk_array %}
|
{% for step_active in current_chunk_array %}
|
||||||
{% assign step_color = '#d9d9d9' %}
|
{% assign step_color = '#d9d9d9' %} {% if
|
||||||
{% if step_active == true or step_active == 'true' or step_active == 1 %}
|
step_active == true or step_active == 'true'
|
||||||
{% assign step_color = '#4caf50' %}
|
or step_active == 1 %} {% assign step_color =
|
||||||
{% endif %}
|
'#4caf50' %} {% endif %}
|
||||||
|
<div
|
||||||
<div style="width: 5px; height: 10px; background-color: {{ step_color }}; border-radius: 1px; margin-right: 1px;"></div>
|
style="width: 5px; height: 10px; background-color: {{ step_color }}; border-radius: 1px; margin-right: 1px;"
|
||||||
{% endfor %}
|
></div>
|
||||||
|
{% endfor %} {% assign remaining_steps =
|
||||||
{% comment %} Preenche com steps vazios se o chunk for menor que 4 {% endcomment %}
|
chunk_size | minus: current_chunk_array.size
|
||||||
{% assign remaining_steps = chunk_size | minus: current_chunk_array.size %}
|
%} {% if remaining_steps > 0 %} {% for j in
|
||||||
{% if remaining_steps > 0 %}
|
(1..remaining_steps) %}
|
||||||
{% for j in (1..remaining_steps) %}
|
<div
|
||||||
<div style="width: 5px; height: 10px; background-color: #d9d9d9; border-radius: 1px; margin-right: 1px;"></div>
|
style="
|
||||||
{% endfor %}
|
width: 5px;
|
||||||
{% endif %}
|
height: 10px;
|
||||||
|
background-color: #d9d9d9;
|
||||||
|
border-radius: 1px;
|
||||||
|
margin-right: 1px;
|
||||||
|
"
|
||||||
|
></div>
|
||||||
|
{% endfor %} {% endif %}
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %} {% endfor %}
|
||||||
{% endfor %}
|
|
||||||
</div>
|
</div>
|
||||||
{% comment %} >>> FIM DA LÓGICA DE STEPS CLICÁVEIS <<< {% endcomment %}
|
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %} {% endfor %}
|
||||||
{% endfor %}
|
</details>
|
||||||
|
|
||||||
|
{% if has_sample %} {% assign audio_filename_with_path =
|
||||||
{% comment %} Player de áudio e condição de sample ausente {% endcomment %}
|
'src/samples/' | append: sample_src %}
|
||||||
{% assign sample_src = instrument.audiofileprocessor.src | default: "" | strip %}
|
<div class="audio-player-section mt-3 pl-4">
|
||||||
|
|
||||||
{% if instrument.audiofileprocessor and sample_src != "" %}
|
|
||||||
{% assign audio_filename_with_path = 'src/samples/' | append: sample_src %}
|
|
||||||
<div class="audio-player-section mt-3">
|
|
||||||
<audio controls>
|
<audio controls>
|
||||||
<source
|
<source
|
||||||
src="{{ audio_filename_with_path | relative_url }}"
|
src="{{ audio_filename_with_path | relative_url }}"
|
||||||
type="audio/ogg"
|
type="audio/ogg"
|
||||||
>
|
/>
|
||||||
{% assign wav_path = audio_filename_with_path | replace: '.ogg', '.wav' %}
|
{% assign wav_path = audio_filename_with_path |
|
||||||
|
replace: '.ogg', '.wav' %}
|
||||||
<source
|
<source
|
||||||
src="{{ wav_path | relative_url }}"
|
src="{{ wav_path | relative_url }}"
|
||||||
type="audio/wav"
|
type="audio/wav"
|
||||||
>
|
/>
|
||||||
Seu navegador não suporta o elemento <code>audio</code>.
|
Seu navegador não suporta o elemento
|
||||||
|
<code>audio</code>.
|
||||||
</audio>
|
</audio>
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<p class="has-text-danger is-size-7 mt-3">
|
<p class="has-text-danger is-size-7 mt-1 pl-4">
|
||||||
O sample **não foi enviado** 😢
|
O sample **não foi enviado** 😢
|
||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %} {% endfor %}
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
</ul>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %} {% endfor %}
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="column is-one-third">
|
<div class="column is-half">
|
||||||
<div class="box p-4 has-background-info-light">
|
<div class="box p-4 has-background-info-light">
|
||||||
<h3 class="title is-6 has-text-info mb-3">🛠️ Abra na Criação Colaborativa</h3>
|
<h3 class="title is-6 has-text-info mb-3">
|
||||||
|
🛠️ Abra na Criação Colaborativa
|
||||||
|
</h3>
|
||||||
|
|
||||||
{% comment %}
|
{% comment %} CONSTRUÇÃO DA URL CORRIGIDA PARA AMBIENTES DE TESTE:
|
||||||
CONSTRUÇÃO DA URL CORRIGIDA PARA AMBIENTES DE TESTE:
|
{% endcomment %} {% assign creation_url =
|
||||||
{% endcomment %}
|
'/~jotachina/mmpSearch/creation.html?project=' | append: page.file
|
||||||
{% assign creation_url = '/~jotachina/mmpSearch/creation.html?project=' | append: page.file %}
|
%}
|
||||||
<span class="icon"><i class="fa-solid fa-up-right-from-square"></i></span>
|
<span class="icon"
|
||||||
|
><i class="fa-solid fa-up-right-from-square"></i
|
||||||
|
></span>
|
||||||
<a
|
<a
|
||||||
href="{{ creation_url }}"
|
href="{{ creation_url }}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
class="button is-info is-fullwidth is-medium mb-4"
|
class="button is-info is-fullwidth is-medium mb-4"
|
||||||
>Abrir no MMPCreator</a>
|
>Abrir no MMPCreator</a
|
||||||
|
>
|
||||||
|
|
||||||
<p class="is-size-7 has-text-grey-dark">
|
<p class="is-size-7 has-text-grey-dark">
|
||||||
O link abrirá o projeto em uma nova aba para edição.
|
O link abrirá o projeto em uma nova aba para edição.
|
||||||
<br>
|
<br />
|
||||||
Arquivo: <code>{{ page.file }}</code>
|
Arquivo: <code>{{ page.file }}</code>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@@ -294,7 +324,12 @@ title: "{{ page.file }}"
|
|||||||
<iframe
|
<iframe
|
||||||
src="{{ embed_url }}"
|
src="{{ embed_url }}"
|
||||||
title="Prévia do Projeto"
|
title="Prévia do Projeto"
|
||||||
style="width: 500px; height: 800px; border: 1px solid #ccc; border-radius: 4px;"
|
style="
|
||||||
|
width: 100%;
|
||||||
|
height: 800px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 4px;
|
||||||
|
"
|
||||||
>
|
>
|
||||||
</iframe>
|
</iframe>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,773 +0,0 @@
|
|||||||
{
|
|
||||||
"basses": {
|
|
||||||
"bass01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"bass_acid01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"bass_acid02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"bass_hard01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"bass_hard02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"bass_punch01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"horror_bass01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"matrix1000_pluck01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"rave_bass01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"rave_bass02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"rave_bass04.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"synth_acid01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"synth_acid02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"techno_synth01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"bassloops": {
|
|
||||||
"briff01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"rave_bass01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"rave_bass02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"tb303_01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"techno_bass01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"techno_bass02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"techno_synth01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"techno_synth02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"techno_synth03.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"techno_synth04.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"beats": {
|
|
||||||
"909beat01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"break01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"break02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"break03.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"electro_beat01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"electro_beat02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"house_loop01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"jungle01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"rave_hihat01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"rave_hihat02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"rave_kick01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"rave_kick02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"rave_snare01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"drums": {
|
|
||||||
"bassdrum01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"bassdrum02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"bassdrum03.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"bassdrum04.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"bassdrum_acoustic01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"bassdrum_acoustic02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"clap01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"clap02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"clap03.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"clap04.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"clav01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"clav02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"crash01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"crash02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"hihat_closed01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"hihat_closed02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"hihat_closed03.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"hihat_closed04.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"hihat_closed05.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"hihat_foot_pedal01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"hihat_opened01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"hihat_opened02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"hihat_opened03.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"kick01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"kick02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"kick03.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"kick04.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"kick_distorted01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"kick_hard01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"kick_hardcore01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"kick_hiphop01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"kick_long01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"kick_soft01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"kick_soft02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"nasty_bass01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"nasty_rim01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"nasty_snare01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"ride01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"ride02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"rim01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"shaker01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"shaker02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"shaker03.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"sidestick01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"snare01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"snare02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"snare03.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"snare04.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"snare05.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"snare06.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"snare07.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"snare_acoustic01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"snare_electro01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"snare_harsh01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"snare_hiphop01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"snare_hiphop02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"snare_muffled01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"snare_muffled02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"snare_rim01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"snare_short01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"tom01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"tom02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"tom03.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"tom04.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"tom05.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"tom_hi01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"tom_low01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"tom_mid01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"wood01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"zap01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"zap02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"zap03.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"drumsynth": {
|
|
||||||
"acoustic": {},
|
|
||||||
"cr78": {},
|
|
||||||
"cr8000": {},
|
|
||||||
"effects": {},
|
|
||||||
"electro": {},
|
|
||||||
"farfisa": {},
|
|
||||||
"ferraro": {},
|
|
||||||
"instrument": {},
|
|
||||||
"jorgensohn": {},
|
|
||||||
"latin": {},
|
|
||||||
"linn": {},
|
|
||||||
"magnetboy": {},
|
|
||||||
"misc": {},
|
|
||||||
"misc_bass": {},
|
|
||||||
"misc_claps": {},
|
|
||||||
"misc_electro": {},
|
|
||||||
"misc_fx": {},
|
|
||||||
"misc_hats": {},
|
|
||||||
"misc_perc": {},
|
|
||||||
"misc_synth": {},
|
|
||||||
"r_n_b": {},
|
|
||||||
"tr606": {},
|
|
||||||
"tr77": {},
|
|
||||||
"tr808": {},
|
|
||||||
"tr909": {}
|
|
||||||
},
|
|
||||||
"effects": {
|
|
||||||
"chroma_sound_effect01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"explode01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"filter_sweep01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"scratch01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"start01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"start02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"stop01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"warp01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"warp02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"wind_chimes01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"instruments": {
|
|
||||||
"bassslap01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"bassslap02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"cello01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"church_organ01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"church_organ02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"church_organ03.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"church_organ04.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"e_organ01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"e_piano_accord01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"e_piano_accord02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"flute01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"harpsichord01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"piano01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"piano02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"steel_guitar01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"steel_guitar_heavy_distorted01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"steel_guitar_medium_distorted01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"steel_guitar_slight_distorted01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"trumpet01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"violin_double_stop01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"violin_fingered01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"violin_pizzicato01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"latin": {
|
|
||||||
"latin_brass01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"latin_guitar01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"latin_guitar02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"latin_guitar03.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"misc": {
|
|
||||||
"applause01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"bass!.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"breath01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"buzz!.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"dong01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"dong02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"dong03.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"electric_ping01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"hit01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"hit02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"metalish_dong01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"metronome01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"metronome02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"raving_crowd01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"snaph01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"undefined01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"samples": {
|
|
||||||
"reuniao_funkwhale.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"shapes": {
|
|
||||||
"additive.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"additive2.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"bunglist.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"bunglist2.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"bunglist3.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"bunglist4.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"bunglist5.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"bunglist6.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"bunglist7.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"bunglist8.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"bunglist9.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"harmonics.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"low_sine.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"micro.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"moog.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"roundbass.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"roundsaw.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"saw+sine.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"sine_dist.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"smooth_inv_saw.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"smooth_inv_saw2.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"smooth_inv_saw_dist.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"technobass.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"technosynth1.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"technosynth2.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"technosynth3.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"technosynth4.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"technosynth5.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"technosynth6.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"vowel_a.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"vowel_u.wav": {
|
|
||||||
"_isFile": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"stringsnpads": {
|
|
||||||
"bell_choir01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"bell_choir02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"chorus01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"chorus02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"heaven_strings01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"juno_pad01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"korg_poly6_drone01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"nord_ambient01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"orion_string01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"rave_choir01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"space_strings01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"space_strings02.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"space_strings03.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"strings01.ogg": {
|
|
||||||
"_isFile": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"waveforms": {
|
|
||||||
"10saw.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"10sine.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"10sqr.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"10tri.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"analogsqr.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"fmsaw1.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"fmsine.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"fmsine2.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"halfsine.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"impulse.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"lfo_trancegate_quarter.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"lfo_trancegate_sawdecay_quarter.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"lfo_trancegate_sinedecay_quarter.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"lfo_trancegate_triplet_half.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"lfo_trancegate_triplet_half_2.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"lfo_trancegate_triplet_quarter.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"lfo_trancegate_whole.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"lfo_trancegate_whole_2.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"modsqr.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"saw1.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"saw2.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"sinesaw.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"w2_addsyn.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"w2_angrysaw.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"w2_hexagon.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"w2_invsine.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"w2_invsineabs.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"w2_invsinehalf.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"w2_noisy.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"w2_rad.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"w2_sawsine.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"w2_sharp.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
},
|
|
||||||
"w2_w-wave.flac": {
|
|
||||||
"_isFile": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-1
@@ -1 +0,0 @@
|
|||||||
../pino/bin.js
|
|
||||||
-122
@@ -1,122 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "mmpSearch",
|
|
||||||
"lockfileVersion": 3,
|
|
||||||
"requires": true,
|
|
||||||
"packages": {
|
|
||||||
"node_modules/@pinojs/redact": {
|
|
||||||
"version": "0.4.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@pinojs/redact/-/redact-0.4.0.tgz",
|
|
||||||
"integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg=="
|
|
||||||
},
|
|
||||||
"node_modules/atomic-sleep": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz",
|
|
||||||
"integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/on-exit-leak-free": {
|
|
||||||
"version": "2.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz",
|
|
||||||
"integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/pino": {
|
|
||||||
"version": "10.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/pino/-/pino-10.1.0.tgz",
|
|
||||||
"integrity": "sha512-0zZC2ygfdqvqK8zJIr1e+wT1T/L+LF6qvqvbzEQ6tiMAoTqEVK9a1K3YRu8HEUvGEvNqZyPJTtb2sNIoTkB83w==",
|
|
||||||
"dependencies": {
|
|
||||||
"@pinojs/redact": "^0.4.0",
|
|
||||||
"atomic-sleep": "^1.0.0",
|
|
||||||
"on-exit-leak-free": "^2.1.0",
|
|
||||||
"pino-abstract-transport": "^2.0.0",
|
|
||||||
"pino-std-serializers": "^7.0.0",
|
|
||||||
"process-warning": "^5.0.0",
|
|
||||||
"quick-format-unescaped": "^4.0.3",
|
|
||||||
"real-require": "^0.2.0",
|
|
||||||
"safe-stable-stringify": "^2.3.1",
|
|
||||||
"sonic-boom": "^4.0.1",
|
|
||||||
"thread-stream": "^3.0.0"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"pino": "bin.js"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/pino-abstract-transport": {
|
|
||||||
"version": "2.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz",
|
|
||||||
"integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==",
|
|
||||||
"dependencies": {
|
|
||||||
"split2": "^4.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/pino-std-serializers": {
|
|
||||||
"version": "7.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz",
|
|
||||||
"integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA=="
|
|
||||||
},
|
|
||||||
"node_modules/process-warning": {
|
|
||||||
"version": "5.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz",
|
|
||||||
"integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==",
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"type": "github",
|
|
||||||
"url": "https://github.com/sponsors/fastify"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "opencollective",
|
|
||||||
"url": "https://opencollective.com/fastify"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"node_modules/quick-format-unescaped": {
|
|
||||||
"version": "4.0.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz",
|
|
||||||
"integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg=="
|
|
||||||
},
|
|
||||||
"node_modules/real-require": {
|
|
||||||
"version": "0.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz",
|
|
||||||
"integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 12.13.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/safe-stable-stringify": {
|
|
||||||
"version": "2.5.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz",
|
|
||||||
"integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/sonic-boom": {
|
|
||||||
"version": "4.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz",
|
|
||||||
"integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==",
|
|
||||||
"dependencies": {
|
|
||||||
"atomic-sleep": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/split2": {
|
|
||||||
"version": "4.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
|
|
||||||
"integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 10.x"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/thread-stream": {
|
|
||||||
"version": "3.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz",
|
|
||||||
"integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==",
|
|
||||||
"dependencies": {
|
|
||||||
"real-require": "^0.2.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-13
@@ -1,13 +0,0 @@
|
|||||||
version: 2
|
|
||||||
updates:
|
|
||||||
- package-ecosystem: "github-actions"
|
|
||||||
directory: "/"
|
|
||||||
schedule:
|
|
||||||
interval: "monthly"
|
|
||||||
open-pull-requests-limit: 10
|
|
||||||
|
|
||||||
- package-ecosystem: "npm"
|
|
||||||
directory: "/"
|
|
||||||
schedule:
|
|
||||||
interval: "monthly"
|
|
||||||
open-pull-requests-limit: 10
|
|
||||||
-48
@@ -1,48 +0,0 @@
|
|||||||
name: CI
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
- 'v*'
|
|
||||||
paths-ignore:
|
|
||||||
- 'docs/**'
|
|
||||||
- '*.md'
|
|
||||||
pull_request:
|
|
||||||
paths-ignore:
|
|
||||||
- 'docs/**'
|
|
||||||
- '*.md'
|
|
||||||
|
|
||||||
# This allows a subsequently queued workflow run to interrupt previous runs
|
|
||||||
concurrency:
|
|
||||||
group: "${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}"
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test:
|
|
||||||
name: ${{ matrix.node-version }} ${{ matrix.os }}
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
os: [macOS-latest, windows-latest, ubuntu-latest]
|
|
||||||
node-version: [18, 20, 22, 24]
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Check out repo
|
|
||||||
uses: actions/checkout@v5.0.0
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
|
|
||||||
- name: Setup Node ${{ matrix.node-version }}
|
|
||||||
uses: actions/setup-node@v5
|
|
||||||
with:
|
|
||||||
node-version: ${{ matrix.node-version }}
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: npm i --ignore-scripts
|
|
||||||
|
|
||||||
- name: Run tests
|
|
||||||
run: npm run test
|
|
||||||
-43
@@ -1,43 +0,0 @@
|
|||||||
name: Publish release
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
version:
|
|
||||||
description: 'The version number to tag and release'
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
prerelease:
|
|
||||||
description: 'Release as pre-release'
|
|
||||||
required: false
|
|
||||||
type: boolean
|
|
||||||
default: false
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
release-npm:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
environment: main
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
id-token: write
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4
|
|
||||||
- uses: actions/setup-node@v5
|
|
||||||
with:
|
|
||||||
node-version: '22'
|
|
||||||
registry-url: 'https://registry.npmjs.org'
|
|
||||||
- run: npm install npm -g
|
|
||||||
- run: npm install
|
|
||||||
- name: Change version number and sync
|
|
||||||
run: |
|
|
||||||
node scripts/sync-version.mjs ${{ inputs.version }}
|
|
||||||
- name: GIT commit and push all changed files
|
|
||||||
run: |
|
|
||||||
git config --global user.name "mcollina"
|
|
||||||
git config --global user.email "hello@matteocollina.com"
|
|
||||||
git commit -n -a -m "Bumped v${{ inputs.version }}"
|
|
||||||
git push origin HEAD:${{ github.ref }}
|
|
||||||
- run: npm publish --access public --tag ${{ inputs.prerelease == true && 'next' || 'latest' }}
|
|
||||||
- name: 'Create release notes'
|
|
||||||
run: |
|
|
||||||
npx @matteo.collina/release-notes -a ${{ secrets.GITHUB_TOKEN }} -t v${{ inputs.version }} -r redact -o pinojs ${{ github.event.inputs.prerelease == 'true' && '-p' || '' }} -c ${{ github.ref }}
|
|
||||||
-21
@@ -1,21 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2025 pinojs contributors
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
-350
@@ -1,350 +0,0 @@
|
|||||||
# @pinojs/redact
|
|
||||||
|
|
||||||
> Smart object redaction for JavaScript applications - safe AND fast!
|
|
||||||
|
|
||||||
Redact JS objects with the same API as [fast-redact](https://github.com/davidmarkclements/fast-redact), but uses innovative **selective cloning** instead of mutating the original. This provides immutability guarantees with **performance competitive** to fast-redact for real-world usage patterns.
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm install @pinojs/redact
|
|
||||||
```
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
```js
|
|
||||||
const slowRedact = require('@pinojs/redact')
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['headers.cookie', 'headers.authorization', 'user.password']
|
|
||||||
})
|
|
||||||
|
|
||||||
const obj = {
|
|
||||||
headers: {
|
|
||||||
cookie: 'secret-session-token',
|
|
||||||
authorization: 'Bearer abc123',
|
|
||||||
'x-forwarded-for': '192.168.1.1'
|
|
||||||
},
|
|
||||||
user: {
|
|
||||||
name: 'john',
|
|
||||||
password: 'secret123'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log(redact(obj))
|
|
||||||
// Output: {"headers":{"cookie":"[REDACTED]","authorization":"[REDACTED]","x-forwarded-for":"192.168.1.1"},"user":{"name":"john","password":"[REDACTED]"}}
|
|
||||||
|
|
||||||
// Original object is completely unchanged:
|
|
||||||
console.log(obj.headers.cookie) // 'secret-session-token'
|
|
||||||
```
|
|
||||||
|
|
||||||
## API
|
|
||||||
|
|
||||||
### slowRedact(options) → Function
|
|
||||||
|
|
||||||
Creates a redaction function with the specified options.
|
|
||||||
|
|
||||||
#### Options
|
|
||||||
|
|
||||||
- **paths** `string[]` (required): An array of strings describing the nested location of a key in an object
|
|
||||||
- **censor** `any` (optional, default: `'[REDACTED]'`): The value to replace sensitive data with. Can be a static value or function.
|
|
||||||
- **serialize** `Function|boolean` (optional, default: `JSON.stringify`): Serialization function. Set to `false` to return the redacted object.
|
|
||||||
- **remove** `boolean` (optional, default: `false`): Remove redacted keys from serialized output
|
|
||||||
- **strict** `boolean` (optional, default: `true`): Throw on non-object values or pass through primitives
|
|
||||||
|
|
||||||
#### Path Syntax
|
|
||||||
|
|
||||||
Supports the same path syntax as fast-redact:
|
|
||||||
|
|
||||||
- **Dot notation**: `'user.name'`, `'headers.cookie'`
|
|
||||||
- **Bracket notation**: `'user["password"]'`, `'headers["X-Forwarded-For"]'`
|
|
||||||
- **Array indices**: `'users[0].password'`, `'items[1].secret'`
|
|
||||||
- **Wildcards**:
|
|
||||||
- Terminal: `'users.*.password'` (redacts password for all users)
|
|
||||||
- Intermediate: `'*.password'` (redacts password at any level)
|
|
||||||
- Array wildcard: `'items.*'` (redacts all array elements)
|
|
||||||
|
|
||||||
#### Examples
|
|
||||||
|
|
||||||
**Custom censor value:**
|
|
||||||
```js
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['password'],
|
|
||||||
censor: '***HIDDEN***'
|
|
||||||
})
|
|
||||||
```
|
|
||||||
|
|
||||||
**Dynamic censor function:**
|
|
||||||
```js
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['password'],
|
|
||||||
censor: (value, path) => `REDACTED:${path}`
|
|
||||||
})
|
|
||||||
```
|
|
||||||
|
|
||||||
**Return object instead of JSON string:**
|
|
||||||
```js
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['secret'],
|
|
||||||
serialize: false
|
|
||||||
})
|
|
||||||
|
|
||||||
const result = redact({ secret: 'hidden', public: 'data' })
|
|
||||||
console.log(result.secret) // '[REDACTED]'
|
|
||||||
console.log(result.public) // 'data'
|
|
||||||
|
|
||||||
// Restore original values
|
|
||||||
const restored = result.restore()
|
|
||||||
console.log(restored.secret) // 'hidden'
|
|
||||||
```
|
|
||||||
|
|
||||||
**Custom serialization:**
|
|
||||||
```js
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['password'],
|
|
||||||
serialize: obj => JSON.stringify(obj, null, 2)
|
|
||||||
})
|
|
||||||
```
|
|
||||||
|
|
||||||
**Remove keys instead of redacting:**
|
|
||||||
```js
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['password', 'user.secret'],
|
|
||||||
remove: true
|
|
||||||
})
|
|
||||||
|
|
||||||
const obj = { username: 'john', password: 'secret123', user: { name: 'Jane', secret: 'hidden' } }
|
|
||||||
console.log(redact(obj))
|
|
||||||
// Output: {"username":"john","user":{"name":"Jane"}}
|
|
||||||
// Note: 'password' and 'user.secret' are completely absent, not redacted
|
|
||||||
```
|
|
||||||
|
|
||||||
**Wildcard patterns:**
|
|
||||||
```js
|
|
||||||
// Redact all properties in secrets object
|
|
||||||
const redact1 = slowRedact({ paths: ['secrets.*'] })
|
|
||||||
|
|
||||||
// Redact password for any user
|
|
||||||
const redact2 = slowRedact({ paths: ['users.*.password'] })
|
|
||||||
|
|
||||||
// Redact all items in an array
|
|
||||||
const redact3 = slowRedact({ paths: ['items.*'] })
|
|
||||||
|
|
||||||
// Remove all secrets instead of redacting them
|
|
||||||
const redact4 = slowRedact({ paths: ['secrets.*'], remove: true })
|
|
||||||
```
|
|
||||||
|
|
||||||
## Key Differences from fast-redact
|
|
||||||
|
|
||||||
### Safety First
|
|
||||||
- **No mutation**: Original objects are never modified
|
|
||||||
- **Selective cloning**: Only clones paths that need redaction, shares references for everything else
|
|
||||||
- **Restore capability**: Can restore original values when `serialize: false`
|
|
||||||
|
|
||||||
### Feature Compatibility
|
|
||||||
- **Remove option**: Full compatibility with fast-redact's `remove: true` option to completely omit keys from output
|
|
||||||
- **All path patterns**: Supports same syntax including wildcards, bracket notation, and array indices
|
|
||||||
- **Censor functions**: Dynamic censoring with path information passed as arrays
|
|
||||||
- **Serialization**: Custom serializers and `serialize: false` mode
|
|
||||||
|
|
||||||
### Smart Performance Approach
|
|
||||||
- **Selective cloning**: Analyzes redaction paths and only clones necessary object branches
|
|
||||||
- **Reference sharing**: Non-redacted properties maintain original object references
|
|
||||||
- **Memory efficiency**: Dramatically reduced memory usage for large objects with minimal redaction
|
|
||||||
- **Setup-time optimization**: Path analysis happens once during setup, not per redaction
|
|
||||||
|
|
||||||
### When to Use @pinojs/redact
|
|
||||||
- When immutability is critical
|
|
||||||
- When you need to preserve original objects
|
|
||||||
- When objects are shared across multiple contexts
|
|
||||||
- In functional programming environments
|
|
||||||
- When debugging and you need to compare before/after
|
|
||||||
- **Large objects with selective redaction** (now performance-competitive!)
|
|
||||||
- When memory efficiency with reference sharing is important
|
|
||||||
|
|
||||||
### When to Use fast-redact
|
|
||||||
- When absolute maximum performance is critical
|
|
||||||
- In extremely high-throughput scenarios (>100,000 ops/sec)
|
|
||||||
- When you control the object lifecycle and mutation is acceptable
|
|
||||||
- Very small objects where setup overhead matters
|
|
||||||
|
|
||||||
## Performance Benchmarks
|
|
||||||
|
|
||||||
@pinojs/redact uses **selective cloning** that provides good performance while maintaining immutability guarantees:
|
|
||||||
|
|
||||||
### Performance Results
|
|
||||||
|
|
||||||
| Operation Type | @pinojs/redact | fast-redact | Performance Ratio |
|
|
||||||
|---------------|-------------|-------------|-------------------|
|
|
||||||
| **Small objects** | ~690ns | ~200ns | ~3.5x slower |
|
|
||||||
| **Large objects (minimal redaction)** | **~18μs** | ~17μs | **~same performance** |
|
|
||||||
| **Large objects (wildcards)** | **~48μs** | ~37μs | **~1.3x slower** |
|
|
||||||
| **No redaction (large objects)** | **~18μs** | ~17μs | **~same performance** |
|
|
||||||
|
|
||||||
### Performance Improvements
|
|
||||||
|
|
||||||
@pinojs/redact is performance-competitive with fast-redact for large objects.
|
|
||||||
|
|
||||||
1. **Selective cloning approach**: Only clones object paths that need redaction
|
|
||||||
2. **Reference sharing**: Non-redacted properties share original object references
|
|
||||||
3. **Setup-time optimization**: Path analysis happens once, not per redaction
|
|
||||||
4. **Memory efficiency**: Dramatically reduced memory usage for typical use cases
|
|
||||||
|
|
||||||
### Benchmark Details
|
|
||||||
|
|
||||||
**Small Objects (~180 bytes)**:
|
|
||||||
- @pinojs/redact: **690ns** per operation
|
|
||||||
- fast-redact: **200ns** per operation
|
|
||||||
- **Slight setup overhead for small objects**
|
|
||||||
|
|
||||||
**Large Objects (~18KB, minimal redaction)**:
|
|
||||||
- @pinojs/redact: **18μs** per operation
|
|
||||||
- fast-redact: **17μs** per operation
|
|
||||||
- Near-identical performance
|
|
||||||
|
|
||||||
**Large Objects (~18KB, wildcard patterns)**:
|
|
||||||
- @pinojs/redact: **48μs** per operation
|
|
||||||
- fast-redact: **37μs** per operation
|
|
||||||
- Competitive performance for complex patterns
|
|
||||||
|
|
||||||
**Memory Considerations**:
|
|
||||||
- @pinojs/redact: **Selective reference sharing** (much lower memory usage than before)
|
|
||||||
- fast-redact: Mutates in-place (lowest memory usage)
|
|
||||||
- Large objects with few redacted paths now share most references
|
|
||||||
|
|
||||||
### When Performance Matters
|
|
||||||
|
|
||||||
Choose **fast-redact** when:
|
|
||||||
- Absolute maximum performance is critical (>100,000 ops/sec)
|
|
||||||
- Working with very small objects frequently
|
|
||||||
- Mutation is acceptable and controlled
|
|
||||||
- Every microsecond counts
|
|
||||||
|
|
||||||
Choose **@pinojs/redact** when:
|
|
||||||
- Immutability is required (with competitive performance)
|
|
||||||
- Objects are shared across contexts
|
|
||||||
- Large objects with selective redaction
|
|
||||||
- Memory efficiency through reference sharing is important
|
|
||||||
- Safety and functionality are priorities
|
|
||||||
- Most production applications (performance gap is minimal)
|
|
||||||
|
|
||||||
Run benchmarks yourself:
|
|
||||||
```bash
|
|
||||||
npm run bench
|
|
||||||
```
|
|
||||||
|
|
||||||
## How Selective Cloning Works
|
|
||||||
|
|
||||||
@pinojs/redact uses an innovative **selective cloning** approach that provides immutability guarantees while dramatically improving performance:
|
|
||||||
|
|
||||||
### Traditional Approach (before optimization)
|
|
||||||
```js
|
|
||||||
// Old approach: Deep clone entire object, then redact
|
|
||||||
const fullClone = deepClone(originalObject) // Clone everything
|
|
||||||
redact(fullClone, paths) // Then redact specific paths
|
|
||||||
```
|
|
||||||
|
|
||||||
### Selective Cloning Approach (current)
|
|
||||||
```js
|
|
||||||
// New approach: Analyze paths, clone only what's needed
|
|
||||||
const pathStructure = buildPathStructure(paths) // One-time setup
|
|
||||||
const selectiveClone = cloneOnlyNeededPaths(obj, pathStructure) // Smart cloning
|
|
||||||
redact(selectiveClone, paths) // Redact pre-identified paths
|
|
||||||
```
|
|
||||||
|
|
||||||
### Key Innovations
|
|
||||||
|
|
||||||
1. **Path Analysis**: Pre-processes redaction paths into an efficient tree structure
|
|
||||||
2. **Selective Cloning**: Only creates new objects for branches that contain redaction targets
|
|
||||||
3. **Reference Sharing**: Non-redacted properties maintain exact same object references
|
|
||||||
4. **Setup Optimization**: Path parsing happens once during redactor creation, not per redaction
|
|
||||||
|
|
||||||
### Example: Reference Sharing in Action
|
|
||||||
|
|
||||||
```js
|
|
||||||
const largeConfig = {
|
|
||||||
database: { /* large config object */ },
|
|
||||||
api: { /* another large config */ },
|
|
||||||
secrets: { password: 'hidden', apiKey: 'secret' }
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({ paths: ['secrets.password'] })
|
|
||||||
const result = redact(largeConfig)
|
|
||||||
|
|
||||||
// Only secrets object is cloned, database and api share original references
|
|
||||||
console.log(result.database === largeConfig.database) // true - shared reference!
|
|
||||||
console.log(result.api === largeConfig.api) // true - shared reference!
|
|
||||||
console.log(result.secrets === largeConfig.secrets) // false - cloned for redaction
|
|
||||||
```
|
|
||||||
|
|
||||||
This approach provides **immutability where it matters** while **sharing references where it's safe**.
|
|
||||||
|
|
||||||
## Remove Option
|
|
||||||
|
|
||||||
The `remove: true` option provides full compatibility with fast-redact's key removal functionality:
|
|
||||||
|
|
||||||
```js
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['password', 'secrets.*', 'users.*.credentials'],
|
|
||||||
remove: true
|
|
||||||
})
|
|
||||||
|
|
||||||
const data = {
|
|
||||||
username: 'john',
|
|
||||||
password: 'secret123',
|
|
||||||
secrets: { apiKey: 'abc', token: 'xyz' },
|
|
||||||
users: [
|
|
||||||
{ name: 'Alice', credentials: { password: 'pass1' } },
|
|
||||||
{ name: 'Bob', credentials: { password: 'pass2' } }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log(redact(data))
|
|
||||||
// Output: {"username":"john","secrets":{},"users":[{"name":"Alice"},{"name":"Bob"}]}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Remove vs Redact Behavior
|
|
||||||
|
|
||||||
| Option | Behavior | Output Example |
|
|
||||||
|--------|----------|----------------|
|
|
||||||
| Default (redact) | Replaces values with censor | `{"password":"[REDACTED]"}` |
|
|
||||||
| `remove: true` | Completely omits keys | `{}` |
|
|
||||||
|
|
||||||
### Compatibility Notes
|
|
||||||
|
|
||||||
- **Same output as fast-redact**: Identical JSON output when using `remove: true`
|
|
||||||
- **Wildcard support**: Works with all wildcard patterns (`*`, `users.*`, `items.*.secret`)
|
|
||||||
- **Array handling**: Array items are set to `undefined` (omitted in JSON output)
|
|
||||||
- **Nested paths**: Supports deep removal (`users.*.credentials.password`)
|
|
||||||
- **Serialize compatibility**: Only works with `JSON.stringify` serializer (like fast-redact)
|
|
||||||
|
|
||||||
## Testing
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Run unit tests
|
|
||||||
npm test
|
|
||||||
|
|
||||||
# Run integration tests comparing with fast-redact
|
|
||||||
npm run test:integration
|
|
||||||
|
|
||||||
# Run all tests (unit + integration)
|
|
||||||
npm run test:all
|
|
||||||
|
|
||||||
# Run benchmarks
|
|
||||||
npm run bench
|
|
||||||
```
|
|
||||||
|
|
||||||
### Test Coverage
|
|
||||||
|
|
||||||
- **16 unit tests**: Core functionality and edge cases
|
|
||||||
- **16 integration tests**: Output compatibility with fast-redact
|
|
||||||
- **All major features**: Paths, wildcards, serialization, custom censors
|
|
||||||
- **Performance benchmarks**: Direct comparison with fast-redact
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
MIT
|
|
||||||
|
|
||||||
## Contributing
|
|
||||||
|
|
||||||
Pull requests welcome! Please ensure all tests pass and add tests for new features.
|
|
||||||
-184
@@ -1,184 +0,0 @@
|
|||||||
const { bench, group, run } = require('mitata')
|
|
||||||
const slowRedact = require('../index.js')
|
|
||||||
const fastRedact = require('fast-redact')
|
|
||||||
|
|
||||||
// Test objects
|
|
||||||
const smallObj = {
|
|
||||||
user: { name: 'john', password: 'secret123' },
|
|
||||||
headers: { cookie: 'session-token', authorization: 'Bearer abc123' }
|
|
||||||
}
|
|
||||||
|
|
||||||
const largeObj = {
|
|
||||||
users: [],
|
|
||||||
metadata: {
|
|
||||||
version: '1.0.0',
|
|
||||||
secret: 'app-secret-key',
|
|
||||||
database: {
|
|
||||||
host: 'localhost',
|
|
||||||
password: 'db-password'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Populate users array with for loop instead of Array.from
|
|
||||||
for (let i = 0; i < 100; i++) {
|
|
||||||
largeObj.users.push({
|
|
||||||
id: i,
|
|
||||||
name: `user${i}`,
|
|
||||||
email: `user${i}@example.com`,
|
|
||||||
password: `secret${i}`,
|
|
||||||
profile: {
|
|
||||||
age: 20 + (i % 50),
|
|
||||||
preferences: {
|
|
||||||
theme: 'dark',
|
|
||||||
notifications: true,
|
|
||||||
apiKey: `key-${i}-secret`
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// Redaction configurations
|
|
||||||
const basicSlowRedact = slowRedact({
|
|
||||||
paths: ['user.password', 'headers.cookie']
|
|
||||||
})
|
|
||||||
|
|
||||||
const basicFastRedact = fastRedact({
|
|
||||||
paths: ['user.password', 'headers.cookie']
|
|
||||||
})
|
|
||||||
|
|
||||||
const wildcardSlowRedact = slowRedact({
|
|
||||||
paths: ['users.*.password', 'users.*.profile.preferences.apiKey']
|
|
||||||
})
|
|
||||||
|
|
||||||
const wildcardFastRedact = fastRedact({
|
|
||||||
paths: ['users.*.password', 'users.*.profile.preferences.apiKey']
|
|
||||||
})
|
|
||||||
|
|
||||||
const deepSlowRedact = slowRedact({
|
|
||||||
paths: ['metadata.secret', 'metadata.database.password']
|
|
||||||
})
|
|
||||||
|
|
||||||
const deepFastRedact = fastRedact({
|
|
||||||
paths: ['metadata.secret', 'metadata.database.password']
|
|
||||||
})
|
|
||||||
|
|
||||||
group('Small Object Redaction - @pinojs/redact', () => {
|
|
||||||
bench('basic paths', () => {
|
|
||||||
basicSlowRedact(smallObj)
|
|
||||||
})
|
|
||||||
|
|
||||||
bench('serialize: false', () => {
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['user.password'],
|
|
||||||
serialize: false
|
|
||||||
})
|
|
||||||
redact(smallObj)
|
|
||||||
})
|
|
||||||
|
|
||||||
bench('custom censor function', () => {
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['user.password'],
|
|
||||||
censor: (value, path) => `HIDDEN:${path}`
|
|
||||||
})
|
|
||||||
redact(smallObj)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
group('Small Object Redaction - fast-redact', () => {
|
|
||||||
bench('basic paths', () => {
|
|
||||||
basicFastRedact(smallObj)
|
|
||||||
})
|
|
||||||
|
|
||||||
bench('serialize: false', () => {
|
|
||||||
const redact = fastRedact({
|
|
||||||
paths: ['user.password'],
|
|
||||||
serialize: false
|
|
||||||
})
|
|
||||||
redact(smallObj)
|
|
||||||
})
|
|
||||||
|
|
||||||
bench('custom censor function', () => {
|
|
||||||
const redact = fastRedact({
|
|
||||||
paths: ['user.password'],
|
|
||||||
censor: (value, path) => `HIDDEN:${path}`
|
|
||||||
})
|
|
||||||
redact(smallObj)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
group('Large Object Redaction - @pinojs/redact', () => {
|
|
||||||
bench('wildcard patterns', () => {
|
|
||||||
wildcardSlowRedact(largeObj)
|
|
||||||
})
|
|
||||||
|
|
||||||
bench('deep nested paths', () => {
|
|
||||||
deepSlowRedact(largeObj)
|
|
||||||
})
|
|
||||||
|
|
||||||
bench('multiple wildcards', () => {
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['users.*.password', 'users.*.profile.preferences.*']
|
|
||||||
})
|
|
||||||
redact(largeObj)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
group('Large Object Redaction - fast-redact', () => {
|
|
||||||
bench('wildcard patterns', () => {
|
|
||||||
wildcardFastRedact(largeObj)
|
|
||||||
})
|
|
||||||
|
|
||||||
bench('deep nested paths', () => {
|
|
||||||
deepFastRedact(largeObj)
|
|
||||||
})
|
|
||||||
|
|
||||||
bench('multiple wildcards', () => {
|
|
||||||
const redact = fastRedact({
|
|
||||||
paths: ['users.*.password', 'users.*.profile.preferences.*']
|
|
||||||
})
|
|
||||||
redact(largeObj)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
group('Direct Performance Comparison', () => {
|
|
||||||
bench('@pinojs/redact - basic paths', () => {
|
|
||||||
basicSlowRedact(smallObj)
|
|
||||||
})
|
|
||||||
|
|
||||||
bench('fast-redact - basic paths', () => {
|
|
||||||
basicFastRedact(smallObj)
|
|
||||||
})
|
|
||||||
|
|
||||||
bench('@pinojs/redact - wildcards', () => {
|
|
||||||
wildcardSlowRedact(largeObj)
|
|
||||||
})
|
|
||||||
|
|
||||||
bench('fast-redact - wildcards', () => {
|
|
||||||
wildcardFastRedact(largeObj)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
group('Object Cloning Overhead', () => {
|
|
||||||
bench('@pinojs/redact - no redaction (clone only)', () => {
|
|
||||||
const redact = slowRedact({ paths: [] })
|
|
||||||
redact(smallObj)
|
|
||||||
})
|
|
||||||
|
|
||||||
bench('fast-redact - no redaction', () => {
|
|
||||||
const redact = fastRedact({ paths: [] })
|
|
||||||
redact(smallObj)
|
|
||||||
})
|
|
||||||
|
|
||||||
bench('@pinojs/redact - large object clone', () => {
|
|
||||||
const redact = slowRedact({ paths: [] })
|
|
||||||
redact(largeObj)
|
|
||||||
})
|
|
||||||
|
|
||||||
bench('fast-redact - large object', () => {
|
|
||||||
const redact = fastRedact({ paths: [] })
|
|
||||||
redact(largeObj)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
run()
|
|
||||||
-1
@@ -1 +0,0 @@
|
|||||||
module.exports = require('neostandard')()
|
|
||||||
-52
@@ -1,52 +0,0 @@
|
|||||||
export = F;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* When called without any options, or with a zero length paths array, @pinojs/redact will return JSON.stringify or the serialize option, if set.
|
|
||||||
* @param redactOptions
|
|
||||||
* @param redactOptions.paths An array of strings describing the nested location of a key in an object.
|
|
||||||
* @param redactOptions.censor This is the value which overwrites redacted properties.
|
|
||||||
* @param redactOptions.remove The remove option, when set to true will cause keys to be removed from the serialized output.
|
|
||||||
* @param redactOptions.serialize The serialize option may either be a function or a boolean. If a function is supplied, this will be used to serialize the redacted object.
|
|
||||||
* @param redactOptions.strict The strict option, when set to true, will cause the redactor function to throw if instead of an object it finds a primitive.
|
|
||||||
* @returns Redacted value from input
|
|
||||||
*/
|
|
||||||
declare function F(
|
|
||||||
redactOptions: F.RedactOptionsNoSerialize
|
|
||||||
): F.redactFnNoSerialize;
|
|
||||||
declare function F(redactOptions?: F.RedactOptions): F.redactFn;
|
|
||||||
|
|
||||||
declare namespace F {
|
|
||||||
/** Redacts input */
|
|
||||||
type redactFn = <T>(input: T) => string | T;
|
|
||||||
|
|
||||||
/** Redacts input without serialization */
|
|
||||||
type redactFnNoSerialize = redactFn & {
|
|
||||||
/** Method that allowing the redacted keys to be restored with the original data. Supplied only when serialize option set to false. */
|
|
||||||
restore<T>(input: T): T;
|
|
||||||
};
|
|
||||||
|
|
||||||
interface RedactOptions {
|
|
||||||
/** An array of strings describing the nested location of a key in an object. */
|
|
||||||
paths?: string[] | undefined;
|
|
||||||
|
|
||||||
/** This is the value which overwrites redacted properties. */
|
|
||||||
censor?: string | ((v: any) => any) | undefined;
|
|
||||||
|
|
||||||
/** The remove option, when set to true will cause keys to be removed from the serialized output. */
|
|
||||||
remove?: boolean | undefined;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The serialize option may either be a function or a boolean. If a function is supplied, this will be used to serialize the redacted object.
|
|
||||||
* The default serialize is the function JSON.stringify
|
|
||||||
*/
|
|
||||||
serialize?: boolean | ((v: any) => any) | undefined;
|
|
||||||
|
|
||||||
/** The strict option, when set to true, will cause the redactor function to throw if instead of an object it finds a primitive. */
|
|
||||||
strict?: boolean | undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** RedactOptions without serialization. Instead of the serialized object, the output of the redactor function will be the mutated object itself. */
|
|
||||||
interface RedactOptionsNoSerialize extends RedactOptions {
|
|
||||||
serialize: false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-529
@@ -1,529 +0,0 @@
|
|||||||
'use strict'
|
|
||||||
|
|
||||||
function deepClone (obj) {
|
|
||||||
if (obj === null || typeof obj !== 'object') {
|
|
||||||
return obj
|
|
||||||
}
|
|
||||||
|
|
||||||
if (obj instanceof Date) {
|
|
||||||
return new Date(obj.getTime())
|
|
||||||
}
|
|
||||||
|
|
||||||
if (obj instanceof Array) {
|
|
||||||
const cloned = []
|
|
||||||
for (let i = 0; i < obj.length; i++) {
|
|
||||||
cloned[i] = deepClone(obj[i])
|
|
||||||
}
|
|
||||||
return cloned
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof obj === 'object') {
|
|
||||||
const cloned = Object.create(Object.getPrototypeOf(obj))
|
|
||||||
for (const key in obj) {
|
|
||||||
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
||||||
cloned[key] = deepClone(obj[key])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return cloned
|
|
||||||
}
|
|
||||||
|
|
||||||
return obj
|
|
||||||
}
|
|
||||||
|
|
||||||
function parsePath (path) {
|
|
||||||
const parts = []
|
|
||||||
let current = ''
|
|
||||||
let inBrackets = false
|
|
||||||
let inQuotes = false
|
|
||||||
let quoteChar = ''
|
|
||||||
|
|
||||||
for (let i = 0; i < path.length; i++) {
|
|
||||||
const char = path[i]
|
|
||||||
|
|
||||||
if (!inBrackets && char === '.') {
|
|
||||||
if (current) {
|
|
||||||
parts.push(current)
|
|
||||||
current = ''
|
|
||||||
}
|
|
||||||
} else if (char === '[') {
|
|
||||||
if (current) {
|
|
||||||
parts.push(current)
|
|
||||||
current = ''
|
|
||||||
}
|
|
||||||
inBrackets = true
|
|
||||||
} else if (char === ']' && inBrackets) {
|
|
||||||
// Always push the current value when closing brackets, even if it's an empty string
|
|
||||||
parts.push(current)
|
|
||||||
current = ''
|
|
||||||
inBrackets = false
|
|
||||||
inQuotes = false
|
|
||||||
} else if ((char === '"' || char === "'") && inBrackets) {
|
|
||||||
if (!inQuotes) {
|
|
||||||
inQuotes = true
|
|
||||||
quoteChar = char
|
|
||||||
} else if (char === quoteChar) {
|
|
||||||
inQuotes = false
|
|
||||||
quoteChar = ''
|
|
||||||
} else {
|
|
||||||
current += char
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
current += char
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (current) {
|
|
||||||
parts.push(current)
|
|
||||||
}
|
|
||||||
|
|
||||||
return parts
|
|
||||||
}
|
|
||||||
|
|
||||||
function setValue (obj, parts, value) {
|
|
||||||
let current = obj
|
|
||||||
|
|
||||||
for (let i = 0; i < parts.length - 1; i++) {
|
|
||||||
const key = parts[i]
|
|
||||||
// Type safety: Check if current is an object before using 'in' operator
|
|
||||||
if (typeof current !== 'object' || current === null || !(key in current)) {
|
|
||||||
return false // Path doesn't exist, don't create it
|
|
||||||
}
|
|
||||||
if (typeof current[key] !== 'object' || current[key] === null) {
|
|
||||||
return false // Path doesn't exist properly
|
|
||||||
}
|
|
||||||
current = current[key]
|
|
||||||
}
|
|
||||||
|
|
||||||
const lastKey = parts[parts.length - 1]
|
|
||||||
if (lastKey === '*') {
|
|
||||||
if (Array.isArray(current)) {
|
|
||||||
for (let i = 0; i < current.length; i++) {
|
|
||||||
current[i] = value
|
|
||||||
}
|
|
||||||
} else if (typeof current === 'object' && current !== null) {
|
|
||||||
for (const key in current) {
|
|
||||||
if (Object.prototype.hasOwnProperty.call(current, key)) {
|
|
||||||
current[key] = value
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Type safety: Check if current is an object before using 'in' operator
|
|
||||||
if (typeof current === 'object' && current !== null && lastKey in current && Object.prototype.hasOwnProperty.call(current, lastKey)) {
|
|
||||||
current[lastKey] = value
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
function removeKey (obj, parts) {
|
|
||||||
let current = obj
|
|
||||||
|
|
||||||
for (let i = 0; i < parts.length - 1; i++) {
|
|
||||||
const key = parts[i]
|
|
||||||
// Type safety: Check if current is an object before using 'in' operator
|
|
||||||
if (typeof current !== 'object' || current === null || !(key in current)) {
|
|
||||||
return false // Path doesn't exist, don't create it
|
|
||||||
}
|
|
||||||
if (typeof current[key] !== 'object' || current[key] === null) {
|
|
||||||
return false // Path doesn't exist properly
|
|
||||||
}
|
|
||||||
current = current[key]
|
|
||||||
}
|
|
||||||
|
|
||||||
const lastKey = parts[parts.length - 1]
|
|
||||||
if (lastKey === '*') {
|
|
||||||
if (Array.isArray(current)) {
|
|
||||||
// For arrays, we can't really "remove" all items as that would change indices
|
|
||||||
// Instead, we set them to undefined which will be omitted by JSON.stringify
|
|
||||||
for (let i = 0; i < current.length; i++) {
|
|
||||||
current[i] = undefined
|
|
||||||
}
|
|
||||||
} else if (typeof current === 'object' && current !== null) {
|
|
||||||
for (const key in current) {
|
|
||||||
if (Object.prototype.hasOwnProperty.call(current, key)) {
|
|
||||||
delete current[key]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Type safety: Check if current is an object before using 'in' operator
|
|
||||||
if (typeof current === 'object' && current !== null && lastKey in current && Object.prototype.hasOwnProperty.call(current, lastKey)) {
|
|
||||||
delete current[lastKey]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sentinel object to distinguish between undefined value and non-existent path
|
|
||||||
const PATH_NOT_FOUND = Symbol('PATH_NOT_FOUND')
|
|
||||||
|
|
||||||
function getValueIfExists (obj, parts) {
|
|
||||||
let current = obj
|
|
||||||
|
|
||||||
for (const part of parts) {
|
|
||||||
if (current === null || current === undefined) {
|
|
||||||
return PATH_NOT_FOUND
|
|
||||||
}
|
|
||||||
// Type safety: Check if current is an object before property access
|
|
||||||
if (typeof current !== 'object' || current === null) {
|
|
||||||
return PATH_NOT_FOUND
|
|
||||||
}
|
|
||||||
// Check if the property exists before accessing it
|
|
||||||
if (!(part in current)) {
|
|
||||||
return PATH_NOT_FOUND
|
|
||||||
}
|
|
||||||
current = current[part]
|
|
||||||
}
|
|
||||||
|
|
||||||
return current
|
|
||||||
}
|
|
||||||
|
|
||||||
function getValue (obj, parts) {
|
|
||||||
let current = obj
|
|
||||||
|
|
||||||
for (const part of parts) {
|
|
||||||
if (current === null || current === undefined) {
|
|
||||||
return undefined
|
|
||||||
}
|
|
||||||
// Type safety: Check if current is an object before property access
|
|
||||||
if (typeof current !== 'object' || current === null) {
|
|
||||||
return undefined
|
|
||||||
}
|
|
||||||
current = current[part]
|
|
||||||
}
|
|
||||||
|
|
||||||
return current
|
|
||||||
}
|
|
||||||
|
|
||||||
function redactPaths (obj, paths, censor, remove = false) {
|
|
||||||
for (const path of paths) {
|
|
||||||
const parts = parsePath(path)
|
|
||||||
|
|
||||||
if (parts.includes('*')) {
|
|
||||||
redactWildcardPath(obj, parts, censor, path, remove)
|
|
||||||
} else {
|
|
||||||
if (remove) {
|
|
||||||
removeKey(obj, parts)
|
|
||||||
} else {
|
|
||||||
// Get value only if path exists - single traversal
|
|
||||||
const value = getValueIfExists(obj, parts)
|
|
||||||
if (value === PATH_NOT_FOUND) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
const actualCensor = typeof censor === 'function'
|
|
||||||
? censor(value, parts)
|
|
||||||
: censor
|
|
||||||
setValue(obj, parts, actualCensor)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function redactWildcardPath (obj, parts, censor, originalPath, remove = false) {
|
|
||||||
const wildcardIndex = parts.indexOf('*')
|
|
||||||
|
|
||||||
if (wildcardIndex === parts.length - 1) {
|
|
||||||
const parentParts = parts.slice(0, -1)
|
|
||||||
let current = obj
|
|
||||||
|
|
||||||
for (const part of parentParts) {
|
|
||||||
if (current === null || current === undefined) return
|
|
||||||
// Type safety: Check if current is an object before property access
|
|
||||||
if (typeof current !== 'object' || current === null) return
|
|
||||||
current = current[part]
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Array.isArray(current)) {
|
|
||||||
if (remove) {
|
|
||||||
// For arrays, set all items to undefined which will be omitted by JSON.stringify
|
|
||||||
for (let i = 0; i < current.length; i++) {
|
|
||||||
current[i] = undefined
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (let i = 0; i < current.length; i++) {
|
|
||||||
const indexPath = [...parentParts, i.toString()]
|
|
||||||
const actualCensor = typeof censor === 'function'
|
|
||||||
? censor(current[i], indexPath)
|
|
||||||
: censor
|
|
||||||
current[i] = actualCensor
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (typeof current === 'object' && current !== null) {
|
|
||||||
if (remove) {
|
|
||||||
// Collect keys to delete to avoid issues with deleting during iteration
|
|
||||||
const keysToDelete = []
|
|
||||||
for (const key in current) {
|
|
||||||
if (Object.prototype.hasOwnProperty.call(current, key)) {
|
|
||||||
keysToDelete.push(key)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (const key of keysToDelete) {
|
|
||||||
delete current[key]
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (const key in current) {
|
|
||||||
const keyPath = [...parentParts, key]
|
|
||||||
const actualCensor = typeof censor === 'function'
|
|
||||||
? censor(current[key], keyPath)
|
|
||||||
: censor
|
|
||||||
current[key] = actualCensor
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
redactIntermediateWildcard(obj, parts, censor, wildcardIndex, originalPath, remove)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function redactIntermediateWildcard (obj, parts, censor, wildcardIndex, originalPath, remove = false) {
|
|
||||||
const beforeWildcard = parts.slice(0, wildcardIndex)
|
|
||||||
const afterWildcard = parts.slice(wildcardIndex + 1)
|
|
||||||
const pathArray = [] // Cached array to avoid allocations
|
|
||||||
|
|
||||||
function traverse (current, pathLength) {
|
|
||||||
if (pathLength === beforeWildcard.length) {
|
|
||||||
if (Array.isArray(current)) {
|
|
||||||
for (let i = 0; i < current.length; i++) {
|
|
||||||
pathArray[pathLength] = i.toString()
|
|
||||||
traverse(current[i], pathLength + 1)
|
|
||||||
}
|
|
||||||
} else if (typeof current === 'object' && current !== null) {
|
|
||||||
for (const key in current) {
|
|
||||||
pathArray[pathLength] = key
|
|
||||||
traverse(current[key], pathLength + 1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (pathLength < beforeWildcard.length) {
|
|
||||||
const nextKey = beforeWildcard[pathLength]
|
|
||||||
// Type safety: Check if current is an object before using 'in' operator
|
|
||||||
if (current && typeof current === 'object' && current !== null && nextKey in current) {
|
|
||||||
pathArray[pathLength] = nextKey
|
|
||||||
traverse(current[nextKey], pathLength + 1)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Check if afterWildcard contains more wildcards
|
|
||||||
if (afterWildcard.includes('*')) {
|
|
||||||
// Recursively handle remaining wildcards
|
|
||||||
// Wrap censor to prepend current path context
|
|
||||||
const wrappedCensor = typeof censor === 'function'
|
|
||||||
? (value, path) => {
|
|
||||||
const fullPath = [...pathArray.slice(0, pathLength), ...path]
|
|
||||||
return censor(value, fullPath)
|
|
||||||
}
|
|
||||||
: censor
|
|
||||||
redactWildcardPath(current, afterWildcard, wrappedCensor, originalPath, remove)
|
|
||||||
} else {
|
|
||||||
// No more wildcards, apply the redaction directly
|
|
||||||
if (remove) {
|
|
||||||
removeKey(current, afterWildcard)
|
|
||||||
} else {
|
|
||||||
const actualCensor = typeof censor === 'function'
|
|
||||||
? censor(getValue(current, afterWildcard), [...pathArray.slice(0, pathLength), ...afterWildcard])
|
|
||||||
: censor
|
|
||||||
setValue(current, afterWildcard, actualCensor)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (beforeWildcard.length === 0) {
|
|
||||||
traverse(obj, 0)
|
|
||||||
} else {
|
|
||||||
let current = obj
|
|
||||||
for (let i = 0; i < beforeWildcard.length; i++) {
|
|
||||||
const part = beforeWildcard[i]
|
|
||||||
if (current === null || current === undefined) return
|
|
||||||
// Type safety: Check if current is an object before property access
|
|
||||||
if (typeof current !== 'object' || current === null) return
|
|
||||||
current = current[part]
|
|
||||||
pathArray[i] = part
|
|
||||||
}
|
|
||||||
if (current !== null && current !== undefined) {
|
|
||||||
traverse(current, beforeWildcard.length)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function buildPathStructure (pathsToClone) {
|
|
||||||
if (pathsToClone.length === 0) {
|
|
||||||
return null // No paths to redact
|
|
||||||
}
|
|
||||||
|
|
||||||
// Parse all paths and organize by depth
|
|
||||||
const pathStructure = new Map()
|
|
||||||
for (const path of pathsToClone) {
|
|
||||||
const parts = parsePath(path)
|
|
||||||
let current = pathStructure
|
|
||||||
for (let i = 0; i < parts.length; i++) {
|
|
||||||
const part = parts[i]
|
|
||||||
if (!current.has(part)) {
|
|
||||||
current.set(part, new Map())
|
|
||||||
}
|
|
||||||
current = current.get(part)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return pathStructure
|
|
||||||
}
|
|
||||||
|
|
||||||
function selectiveClone (obj, pathStructure) {
|
|
||||||
if (!pathStructure) {
|
|
||||||
return obj // No paths to redact, return original
|
|
||||||
}
|
|
||||||
|
|
||||||
function cloneSelectively (source, pathMap, depth = 0) {
|
|
||||||
if (!pathMap || pathMap.size === 0) {
|
|
||||||
return source // No more paths to clone, return reference
|
|
||||||
}
|
|
||||||
|
|
||||||
if (source === null || typeof source !== 'object') {
|
|
||||||
return source
|
|
||||||
}
|
|
||||||
|
|
||||||
if (source instanceof Date) {
|
|
||||||
return new Date(source.getTime())
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Array.isArray(source)) {
|
|
||||||
const cloned = []
|
|
||||||
for (let i = 0; i < source.length; i++) {
|
|
||||||
const indexStr = i.toString()
|
|
||||||
if (pathMap.has(indexStr) || pathMap.has('*')) {
|
|
||||||
cloned[i] = cloneSelectively(source[i], pathMap.get(indexStr) || pathMap.get('*'))
|
|
||||||
} else {
|
|
||||||
cloned[i] = source[i] // Share reference for non-redacted items
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return cloned
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle objects
|
|
||||||
const cloned = Object.create(Object.getPrototypeOf(source))
|
|
||||||
for (const key in source) {
|
|
||||||
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
||||||
if (pathMap.has(key) || pathMap.has('*')) {
|
|
||||||
cloned[key] = cloneSelectively(source[key], pathMap.get(key) || pathMap.get('*'))
|
|
||||||
} else {
|
|
||||||
cloned[key] = source[key] // Share reference for non-redacted properties
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return cloned
|
|
||||||
}
|
|
||||||
|
|
||||||
return cloneSelectively(obj, pathStructure)
|
|
||||||
}
|
|
||||||
|
|
||||||
function validatePath (path) {
|
|
||||||
if (typeof path !== 'string') {
|
|
||||||
throw new Error('Paths must be (non-empty) strings')
|
|
||||||
}
|
|
||||||
|
|
||||||
if (path === '') {
|
|
||||||
throw new Error('Invalid redaction path ()')
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check for double dots
|
|
||||||
if (path.includes('..')) {
|
|
||||||
throw new Error(`Invalid redaction path (${path})`)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check for comma-separated paths (invalid syntax)
|
|
||||||
if (path.includes(',')) {
|
|
||||||
throw new Error(`Invalid redaction path (${path})`)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check for unmatched brackets
|
|
||||||
let bracketCount = 0
|
|
||||||
let inQuotes = false
|
|
||||||
let quoteChar = ''
|
|
||||||
|
|
||||||
for (let i = 0; i < path.length; i++) {
|
|
||||||
const char = path[i]
|
|
||||||
|
|
||||||
if ((char === '"' || char === "'") && bracketCount > 0) {
|
|
||||||
if (!inQuotes) {
|
|
||||||
inQuotes = true
|
|
||||||
quoteChar = char
|
|
||||||
} else if (char === quoteChar) {
|
|
||||||
inQuotes = false
|
|
||||||
quoteChar = ''
|
|
||||||
}
|
|
||||||
} else if (char === '[' && !inQuotes) {
|
|
||||||
bracketCount++
|
|
||||||
} else if (char === ']' && !inQuotes) {
|
|
||||||
bracketCount--
|
|
||||||
if (bracketCount < 0) {
|
|
||||||
throw new Error(`Invalid redaction path (${path})`)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bracketCount !== 0) {
|
|
||||||
throw new Error(`Invalid redaction path (${path})`)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function validatePaths (paths) {
|
|
||||||
if (!Array.isArray(paths)) {
|
|
||||||
throw new TypeError('paths must be an array')
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const path of paths) {
|
|
||||||
validatePath(path)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function slowRedact (options = {}) {
|
|
||||||
const {
|
|
||||||
paths = [],
|
|
||||||
censor = '[REDACTED]',
|
|
||||||
serialize = JSON.stringify,
|
|
||||||
strict = true,
|
|
||||||
remove = false
|
|
||||||
} = options
|
|
||||||
|
|
||||||
// Validate paths upfront to match fast-redact behavior
|
|
||||||
validatePaths(paths)
|
|
||||||
|
|
||||||
// Build path structure once during setup, not on every call
|
|
||||||
const pathStructure = buildPathStructure(paths)
|
|
||||||
|
|
||||||
return function redact (obj) {
|
|
||||||
if (strict && (obj === null || typeof obj !== 'object')) {
|
|
||||||
if (obj === null || obj === undefined) {
|
|
||||||
return serialize ? serialize(obj) : obj
|
|
||||||
}
|
|
||||||
if (typeof obj !== 'object') {
|
|
||||||
return serialize ? serialize(obj) : obj
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Only clone paths that need redaction
|
|
||||||
const cloned = selectiveClone(obj, pathStructure)
|
|
||||||
const original = obj // Keep reference to original for restore
|
|
||||||
|
|
||||||
let actualCensor = censor
|
|
||||||
if (typeof censor === 'function') {
|
|
||||||
actualCensor = censor
|
|
||||||
}
|
|
||||||
|
|
||||||
redactPaths(cloned, paths, actualCensor, remove)
|
|
||||||
|
|
||||||
if (serialize === false) {
|
|
||||||
cloned.restore = function () {
|
|
||||||
return deepClone(original) // Full clone only when restore is called
|
|
||||||
}
|
|
||||||
return cloned
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof serialize === 'function') {
|
|
||||||
return serialize(cloned)
|
|
||||||
}
|
|
||||||
|
|
||||||
return JSON.stringify(cloned)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = slowRedact
|
|
||||||
-22
@@ -1,22 +0,0 @@
|
|||||||
import { expectType, expectAssignable } from "tsd";
|
|
||||||
import slowRedact from ".";
|
|
||||||
import type { redactFn, redactFnNoSerialize } from ".";
|
|
||||||
|
|
||||||
// should return redactFn
|
|
||||||
expectType<redactFn>(slowRedact());
|
|
||||||
expectType<redactFn>(slowRedact({ paths: [] }));
|
|
||||||
expectType<redactFn>(slowRedact({ paths: ["some.path"] }));
|
|
||||||
expectType<redactFn>(slowRedact({ paths: [], censor: "[REDACTED]" }));
|
|
||||||
expectType<redactFn>(slowRedact({ paths: [], strict: true }));
|
|
||||||
expectType<redactFn>(slowRedact({ paths: [], serialize: JSON.stringify }));
|
|
||||||
expectType<redactFn>(slowRedact({ paths: [], serialize: true }));
|
|
||||||
expectType<redactFnNoSerialize>(slowRedact({ paths: [], serialize: false }));
|
|
||||||
expectType<redactFn>(slowRedact({ paths: [], remove: true }));
|
|
||||||
|
|
||||||
// should return string
|
|
||||||
expectType<string>(slowRedact()(""));
|
|
||||||
|
|
||||||
// should return string or T
|
|
||||||
expectAssignable<string | { someField: string }>(
|
|
||||||
slowRedact()({ someField: "someValue" })
|
|
||||||
);
|
|
||||||
-37
@@ -1,37 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@pinojs/redact",
|
|
||||||
"version": "0.4.0",
|
|
||||||
"description": "Redact JS objects",
|
|
||||||
"main": "index.js",
|
|
||||||
"types": "index.d.ts",
|
|
||||||
"scripts": {
|
|
||||||
"test": "node --test && npm run test:types",
|
|
||||||
"test:integration": "node --test test/integration.test.js",
|
|
||||||
"test:types": "tsd",
|
|
||||||
"test:all": "node --test test/*.test.js",
|
|
||||||
"lint": "eslint .",
|
|
||||||
"lint:fix": "eslint . --fix",
|
|
||||||
"bench": "node benchmarks/basic.js"
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git+https://github.com/pinojs/redact.git"
|
|
||||||
},
|
|
||||||
"keywords": [
|
|
||||||
"redact"
|
|
||||||
],
|
|
||||||
"author": "Matteo Collina <hello@matteocollina.com>",
|
|
||||||
"license": "MIT",
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://github.com/pinojs/redact/issues"
|
|
||||||
},
|
|
||||||
"homepage": "https://github.com/pinojs/redact#readme",
|
|
||||||
"devDependencies": {
|
|
||||||
"eslint": "^9.36.0",
|
|
||||||
"fast-redact": "^3.5.0",
|
|
||||||
"mitata": "^1.0.34",
|
|
||||||
"neostandard": "^0.12.2",
|
|
||||||
"tsd": "^0.33.0",
|
|
||||||
"typescript": "^5.9.2"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-20
@@ -1,20 +0,0 @@
|
|||||||
import fs from 'node:fs'
|
|
||||||
import path from 'node:path'
|
|
||||||
|
|
||||||
const packageJsonPath = path.resolve(import.meta.dirname, '../package.json')
|
|
||||||
let { version } = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'))
|
|
||||||
|
|
||||||
let passedVersion = process.argv[2]
|
|
||||||
|
|
||||||
if (passedVersion) {
|
|
||||||
passedVersion = passedVersion.trim().replace(/^v/, '')
|
|
||||||
if (version !== passedVersion) {
|
|
||||||
console.log(`Syncing version from ${version} to ${passedVersion}`)
|
|
||||||
version = passedVersion
|
|
||||||
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'))
|
|
||||||
packageJson.version = version
|
|
||||||
fs.writeFileSync(path.resolve('./package.json'), JSON.stringify(packageJson, null, 2) + '\n', { encoding: 'utf-8' })
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
throw new Error('Version argument is required')
|
|
||||||
}
|
|
||||||
-211
@@ -1,211 +0,0 @@
|
|||||||
'use strict'
|
|
||||||
|
|
||||||
// Node.js test comparing @pinojs/redact vs fast-redact for multiple wildcard patterns
|
|
||||||
// This test validates that @pinojs/redact correctly handles 3+ consecutive wildcards
|
|
||||||
// matching the behavior of fast-redact
|
|
||||||
|
|
||||||
const { test } = require('node:test')
|
|
||||||
const { strict: assert } = require('node:assert')
|
|
||||||
const fastRedact = require('fast-redact')
|
|
||||||
const slowRedact = require('../index.js')
|
|
||||||
|
|
||||||
// Helper function to test redaction and track which values were censored
|
|
||||||
function testRedactDirect (library, pattern, testData = {}) {
|
|
||||||
const matches = []
|
|
||||||
const redactor = library === '@pinojs/redact' ? slowRedact : fastRedact
|
|
||||||
|
|
||||||
try {
|
|
||||||
const redact = redactor({
|
|
||||||
paths: [pattern],
|
|
||||||
censor: (value, path) => {
|
|
||||||
if (
|
|
||||||
value !== undefined &&
|
|
||||||
value !== null &&
|
|
||||||
typeof value === 'string' &&
|
|
||||||
value.includes('secret')
|
|
||||||
) {
|
|
||||||
matches.push({
|
|
||||||
value,
|
|
||||||
path: path ? path.join('.') : 'unknown'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
return '[REDACTED]'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
redact(JSON.parse(JSON.stringify(testData)))
|
|
||||||
|
|
||||||
return {
|
|
||||||
library,
|
|
||||||
pattern,
|
|
||||||
matches,
|
|
||||||
success: true,
|
|
||||||
testData
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
return {
|
|
||||||
library,
|
|
||||||
pattern,
|
|
||||||
matches: [],
|
|
||||||
success: false,
|
|
||||||
error: error.message,
|
|
||||||
testData
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function testSlowRedactDirect (pattern, testData) {
|
|
||||||
return testRedactDirect('@pinojs/redact', pattern, testData)
|
|
||||||
}
|
|
||||||
|
|
||||||
function testFastRedactDirect (pattern, testData) {
|
|
||||||
return testRedactDirect('fast-redact', pattern, testData)
|
|
||||||
}
|
|
||||||
|
|
||||||
test('@pinojs/redact: *.password (2 levels)', () => {
|
|
||||||
const result = testSlowRedactDirect('*.password', {
|
|
||||||
simple: { password: 'secret-2-levels' }
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.strictEqual(result.success, true)
|
|
||||||
assert.strictEqual(result.matches.length, 1)
|
|
||||||
assert.strictEqual(result.matches[0].value, 'secret-2-levels')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('@pinojs/redact: *.*.password (3 levels)', () => {
|
|
||||||
const result = testSlowRedactDirect('*.*.password', {
|
|
||||||
simple: { password: 'secret-2-levels' },
|
|
||||||
user: { auth: { password: 'secret-3-levels' } }
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.strictEqual(result.success, true)
|
|
||||||
assert.strictEqual(result.matches.length, 1)
|
|
||||||
assert.strictEqual(result.matches[0].value, 'secret-3-levels')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('@pinojs/redact: *.*.*.password (4 levels)', () => {
|
|
||||||
const result = testSlowRedactDirect('*.*.*.password', {
|
|
||||||
simple: { password: 'secret-2-levels' },
|
|
||||||
user: { auth: { password: 'secret-3-levels' } },
|
|
||||||
nested: { deep: { auth: { password: 'secret-4-levels' } } }
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.strictEqual(result.success, true)
|
|
||||||
assert.strictEqual(result.matches.length, 1)
|
|
||||||
assert.strictEqual(result.matches[0].value, 'secret-4-levels')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('@pinojs/redact: *.*.*.*.password (5 levels)', () => {
|
|
||||||
const result = testSlowRedactDirect('*.*.*.*.password', {
|
|
||||||
simple: { password: 'secret-2-levels' },
|
|
||||||
user: { auth: { password: 'secret-3-levels' } },
|
|
||||||
nested: { deep: { auth: { password: 'secret-4-levels' } } },
|
|
||||||
config: {
|
|
||||||
user: { auth: { settings: { password: 'secret-5-levels' } } }
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.strictEqual(result.success, true)
|
|
||||||
assert.strictEqual(result.matches.length, 1)
|
|
||||||
assert.strictEqual(result.matches[0].value, 'secret-5-levels')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('@pinojs/redact: *.*.*.*.*.password (6 levels)', () => {
|
|
||||||
const result = testSlowRedactDirect('*.*.*.*.*.password', {
|
|
||||||
simple: { password: 'secret-2-levels' },
|
|
||||||
user: { auth: { password: 'secret-3-levels' } },
|
|
||||||
nested: { deep: { auth: { password: 'secret-4-levels' } } },
|
|
||||||
config: {
|
|
||||||
user: { auth: { settings: { password: 'secret-5-levels' } } }
|
|
||||||
},
|
|
||||||
data: {
|
|
||||||
reqConfig: {
|
|
||||||
data: {
|
|
||||||
credentials: {
|
|
||||||
settings: {
|
|
||||||
password: 'real-secret-6-levels'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.strictEqual(result.success, true)
|
|
||||||
assert.strictEqual(result.matches.length, 1)
|
|
||||||
assert.strictEqual(result.matches[0].value, 'real-secret-6-levels')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('fast-redact: *.password (2 levels)', () => {
|
|
||||||
const result = testFastRedactDirect('*.password', {
|
|
||||||
simple: { password: 'secret-2-levels' }
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.strictEqual(result.success, true)
|
|
||||||
assert.strictEqual(result.matches.length, 1)
|
|
||||||
assert.strictEqual(result.matches[0].value, 'secret-2-levels')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('fast-redact: *.*.password (3 levels)', () => {
|
|
||||||
const result = testFastRedactDirect('*.*.password', {
|
|
||||||
simple: { password: 'secret-2-levels' },
|
|
||||||
user: { auth: { password: 'secret-3-levels' } }
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.strictEqual(result.success, true)
|
|
||||||
assert.strictEqual(result.matches.length, 1)
|
|
||||||
assert.strictEqual(result.matches[0].value, 'secret-3-levels')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('fast-redact: *.*.*.password (4 levels)', () => {
|
|
||||||
const result = testFastRedactDirect('*.*.*.password', {
|
|
||||||
simple: { password: 'secret-2-levels' },
|
|
||||||
user: { auth: { password: 'secret-3-levels' } },
|
|
||||||
nested: { deep: { auth: { password: 'secret-4-levels' } } }
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.strictEqual(result.success, true)
|
|
||||||
assert.strictEqual(result.matches.length, 1)
|
|
||||||
assert.strictEqual(result.matches[0].value, 'secret-4-levels')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('fast-redact: *.*.*.*.password (5 levels)', () => {
|
|
||||||
const result = testFastRedactDirect('*.*.*.*.password', {
|
|
||||||
simple: { password: 'secret-2-levels' },
|
|
||||||
user: { auth: { password: 'secret-3-levels' } },
|
|
||||||
nested: { deep: { auth: { password: 'secret-4-levels' } } },
|
|
||||||
config: {
|
|
||||||
user: { auth: { settings: { password: 'secret-5-levels' } } }
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.strictEqual(result.success, true)
|
|
||||||
assert.strictEqual(result.matches.length, 1)
|
|
||||||
assert.strictEqual(result.matches[0].value, 'secret-5-levels')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('fast-redact: *.*.*.*.*.password (6 levels)', () => {
|
|
||||||
const result = testFastRedactDirect('*.*.*.*.*.password', {
|
|
||||||
simple: { password: 'secret-2-levels' },
|
|
||||||
user: { auth: { password: 'secret-3-levels' } },
|
|
||||||
nested: { deep: { auth: { password: 'secret-4-levels' } } },
|
|
||||||
config: {
|
|
||||||
user: { auth: { settings: { password: 'secret-5-levels' } } }
|
|
||||||
},
|
|
||||||
data: {
|
|
||||||
reqConfig: {
|
|
||||||
data: {
|
|
||||||
credentials: {
|
|
||||||
settings: {
|
|
||||||
password: 'real-secret-6-levels'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.strictEqual(result.success, true)
|
|
||||||
assert.strictEqual(result.matches.length, 1)
|
|
||||||
assert.strictEqual(result.matches[0].value, 'real-secret-6-levels')
|
|
||||||
})
|
|
||||||
-824
@@ -1,824 +0,0 @@
|
|||||||
const { test } = require('node:test')
|
|
||||||
const { strict: assert } = require('node:assert')
|
|
||||||
const slowRedact = require('../index.js')
|
|
||||||
|
|
||||||
test('basic path redaction', () => {
|
|
||||||
const obj = {
|
|
||||||
headers: {
|
|
||||||
cookie: 'secret-cookie',
|
|
||||||
authorization: 'Bearer token'
|
|
||||||
},
|
|
||||||
body: { message: 'hello' }
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({ paths: ['headers.cookie'] })
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
// Original object should remain unchanged
|
|
||||||
assert.strictEqual(obj.headers.cookie, 'secret-cookie')
|
|
||||||
|
|
||||||
// Result should have redacted path
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
assert.strictEqual(parsed.headers.cookie, '[REDACTED]')
|
|
||||||
assert.strictEqual(parsed.headers.authorization, 'Bearer token')
|
|
||||||
assert.strictEqual(parsed.body.message, 'hello')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('multiple paths redaction', () => {
|
|
||||||
const obj = {
|
|
||||||
user: { name: 'john', password: 'secret' },
|
|
||||||
session: { token: 'abc123' }
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['user.password', 'session.token']
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
// Original unchanged
|
|
||||||
assert.strictEqual(obj.user.password, 'secret')
|
|
||||||
assert.strictEqual(obj.session.token, 'abc123')
|
|
||||||
|
|
||||||
// Result redacted
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
assert.strictEqual(parsed.user.password, '[REDACTED]')
|
|
||||||
assert.strictEqual(parsed.session.token, '[REDACTED]')
|
|
||||||
assert.strictEqual(parsed.user.name, 'john')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('custom censor value', () => {
|
|
||||||
const obj = { secret: 'hidden' }
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['secret'],
|
|
||||||
censor: '***'
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
assert.strictEqual(parsed.secret, '***')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('serialize: false returns object with restore method', () => {
|
|
||||||
const obj = { secret: 'hidden' }
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['secret'],
|
|
||||||
serialize: false
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
// Should be object, not string
|
|
||||||
assert.strictEqual(typeof result, 'object')
|
|
||||||
assert.strictEqual(result.secret, '[REDACTED]')
|
|
||||||
|
|
||||||
// Should have restore method
|
|
||||||
assert.strictEqual(typeof result.restore, 'function')
|
|
||||||
|
|
||||||
const restored = result.restore()
|
|
||||||
assert.strictEqual(restored.secret, 'hidden')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('bracket notation paths', () => {
|
|
||||||
const obj = {
|
|
||||||
'weird-key': { 'another-weird': 'secret' },
|
|
||||||
normal: 'public'
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['["weird-key"]["another-weird"]']
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
assert.strictEqual(parsed['weird-key']['another-weird'], '[REDACTED]')
|
|
||||||
assert.strictEqual(parsed.normal, 'public')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('array paths', () => {
|
|
||||||
const obj = {
|
|
||||||
users: [
|
|
||||||
{ name: 'john', password: 'secret1' },
|
|
||||||
{ name: 'jane', password: 'secret2' }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['users[0].password', 'users[1].password']
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
assert.strictEqual(parsed.users[0].password, '[REDACTED]')
|
|
||||||
assert.strictEqual(parsed.users[1].password, '[REDACTED]')
|
|
||||||
assert.strictEqual(parsed.users[0].name, 'john')
|
|
||||||
assert.strictEqual(parsed.users[1].name, 'jane')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('wildcard at end of path', () => {
|
|
||||||
const obj = {
|
|
||||||
secrets: {
|
|
||||||
key1: 'secret1',
|
|
||||||
key2: 'secret2'
|
|
||||||
},
|
|
||||||
public: 'data'
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['secrets.*']
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
assert.strictEqual(parsed.secrets.key1, '[REDACTED]')
|
|
||||||
assert.strictEqual(parsed.secrets.key2, '[REDACTED]')
|
|
||||||
assert.strictEqual(parsed.public, 'data')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('wildcard with arrays', () => {
|
|
||||||
const obj = {
|
|
||||||
items: ['secret1', 'secret2', 'secret3']
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['items.*']
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
assert.strictEqual(parsed.items[0], '[REDACTED]')
|
|
||||||
assert.strictEqual(parsed.items[1], '[REDACTED]')
|
|
||||||
assert.strictEqual(parsed.items[2], '[REDACTED]')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('intermediate wildcard', () => {
|
|
||||||
const obj = {
|
|
||||||
users: {
|
|
||||||
user1: { password: 'secret1' },
|
|
||||||
user2: { password: 'secret2' }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['users.*.password']
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
assert.strictEqual(parsed.users.user1.password, '[REDACTED]')
|
|
||||||
assert.strictEqual(parsed.users.user2.password, '[REDACTED]')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('censor function', () => {
|
|
||||||
const obj = { secret: 'hidden' }
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['secret'],
|
|
||||||
censor: (value, path) => `REDACTED:${path.join('.')}`
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
assert.strictEqual(parsed.secret, 'REDACTED:secret')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('custom serialize function', () => {
|
|
||||||
const obj = { secret: 'hidden', public: 'data' }
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['secret'],
|
|
||||||
serialize: (obj) => `custom:${JSON.stringify(obj)}`
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
assert(result.startsWith('custom:'))
|
|
||||||
const parsed = JSON.parse(result.slice(7))
|
|
||||||
assert.strictEqual(parsed.secret, '[REDACTED]')
|
|
||||||
assert.strictEqual(parsed.public, 'data')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('nested paths', () => {
|
|
||||||
const obj = {
|
|
||||||
level1: {
|
|
||||||
level2: {
|
|
||||||
level3: {
|
|
||||||
secret: 'hidden'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['level1.level2.level3.secret']
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
assert.strictEqual(parsed.level1.level2.level3.secret, '[REDACTED]')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('non-existent paths are ignored', () => {
|
|
||||||
const obj = { existing: 'value' }
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['nonexistent.path']
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
assert.strictEqual(parsed.existing, 'value')
|
|
||||||
assert.strictEqual(parsed.nonexistent, undefined)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('null and undefined handling', () => {
|
|
||||||
const obj = {
|
|
||||||
nullValue: null,
|
|
||||||
undefinedValue: undefined,
|
|
||||||
nested: {
|
|
||||||
nullValue: null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['nullValue', 'nested.nullValue']
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
assert.strictEqual(parsed.nullValue, '[REDACTED]')
|
|
||||||
assert.strictEqual(parsed.nested.nullValue, '[REDACTED]')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('original object remains unchanged', () => {
|
|
||||||
const original = {
|
|
||||||
secret: 'hidden',
|
|
||||||
nested: { secret: 'hidden2' }
|
|
||||||
}
|
|
||||||
const copy = JSON.parse(JSON.stringify(original))
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['secret', 'nested.secret']
|
|
||||||
})
|
|
||||||
redact(original)
|
|
||||||
|
|
||||||
// Original should be completely unchanged
|
|
||||||
assert.deepStrictEqual(original, copy)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('strict mode with primitives', () => {
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['test'],
|
|
||||||
strict: true
|
|
||||||
})
|
|
||||||
|
|
||||||
const stringResult = redact('primitive')
|
|
||||||
assert.strictEqual(stringResult, '"primitive"')
|
|
||||||
|
|
||||||
const numberResult = redact(42)
|
|
||||||
assert.strictEqual(numberResult, '42')
|
|
||||||
})
|
|
||||||
|
|
||||||
// Path validation tests to match fast-redact behavior
|
|
||||||
test('path validation - non-string paths should throw', () => {
|
|
||||||
assert.throws(() => {
|
|
||||||
slowRedact({ paths: [123] })
|
|
||||||
}, {
|
|
||||||
message: 'Paths must be (non-empty) strings'
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.throws(() => {
|
|
||||||
slowRedact({ paths: [null] })
|
|
||||||
}, {
|
|
||||||
message: 'Paths must be (non-empty) strings'
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.throws(() => {
|
|
||||||
slowRedact({ paths: [undefined] })
|
|
||||||
}, {
|
|
||||||
message: 'Paths must be (non-empty) strings'
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
test('path validation - empty string should throw', () => {
|
|
||||||
assert.throws(() => {
|
|
||||||
slowRedact({ paths: [''] })
|
|
||||||
}, {
|
|
||||||
message: 'Invalid redaction path ()'
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
test('path validation - double dots should throw', () => {
|
|
||||||
assert.throws(() => {
|
|
||||||
slowRedact({ paths: ['invalid..path'] })
|
|
||||||
}, {
|
|
||||||
message: 'Invalid redaction path (invalid..path)'
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.throws(() => {
|
|
||||||
slowRedact({ paths: ['a..b..c'] })
|
|
||||||
}, {
|
|
||||||
message: 'Invalid redaction path (a..b..c)'
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
test('path validation - unmatched brackets should throw', () => {
|
|
||||||
assert.throws(() => {
|
|
||||||
slowRedact({ paths: ['invalid[unclosed'] })
|
|
||||||
}, {
|
|
||||||
message: 'Invalid redaction path (invalid[unclosed)'
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.throws(() => {
|
|
||||||
slowRedact({ paths: ['invalid]unopened'] })
|
|
||||||
}, {
|
|
||||||
message: 'Invalid redaction path (invalid]unopened)'
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.throws(() => {
|
|
||||||
slowRedact({ paths: ['nested[a[b]'] })
|
|
||||||
}, {
|
|
||||||
message: 'Invalid redaction path (nested[a[b])'
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
test('path validation - comma-separated paths should throw', () => {
|
|
||||||
assert.throws(() => {
|
|
||||||
slowRedact({ paths: ['req,headers.cookie'] })
|
|
||||||
}, {
|
|
||||||
message: 'Invalid redaction path (req,headers.cookie)'
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.throws(() => {
|
|
||||||
slowRedact({ paths: ['user,profile,name'] })
|
|
||||||
}, {
|
|
||||||
message: 'Invalid redaction path (user,profile,name)'
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.throws(() => {
|
|
||||||
slowRedact({ paths: ['a,b'] })
|
|
||||||
}, {
|
|
||||||
message: 'Invalid redaction path (a,b)'
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
test('path validation - mixed valid and invalid should throw', () => {
|
|
||||||
assert.throws(() => {
|
|
||||||
slowRedact({ paths: ['valid.path', 123, 'another.valid'] })
|
|
||||||
}, {
|
|
||||||
message: 'Paths must be (non-empty) strings'
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.throws(() => {
|
|
||||||
slowRedact({ paths: ['valid.path', 'invalid..path'] })
|
|
||||||
}, {
|
|
||||||
message: 'Invalid redaction path (invalid..path)'
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.throws(() => {
|
|
||||||
slowRedact({ paths: ['valid.path', 'req,headers.cookie'] })
|
|
||||||
}, {
|
|
||||||
message: 'Invalid redaction path (req,headers.cookie)'
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
test('path validation - valid paths should work', () => {
|
|
||||||
// These should not throw
|
|
||||||
assert.doesNotThrow(() => {
|
|
||||||
slowRedact({ paths: [] })
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.doesNotThrow(() => {
|
|
||||||
slowRedact({ paths: ['valid.path'] })
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.doesNotThrow(() => {
|
|
||||||
slowRedact({ paths: ['user.password', 'data[0].secret'] })
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.doesNotThrow(() => {
|
|
||||||
slowRedact({ paths: ['["quoted-key"].value'] })
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.doesNotThrow(() => {
|
|
||||||
slowRedact({ paths: ["['single-quoted'].value"] })
|
|
||||||
})
|
|
||||||
|
|
||||||
assert.doesNotThrow(() => {
|
|
||||||
slowRedact({ paths: ['array[0]', 'object.property', 'wildcard.*'] })
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
// fast-redact compatibility tests
|
|
||||||
test('censor function receives path as array (fast-redact compatibility)', () => {
|
|
||||||
const obj = {
|
|
||||||
headers: {
|
|
||||||
authorization: 'Bearer token',
|
|
||||||
'x-api-key': 'secret-key'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const pathsReceived = []
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['headers.authorization', 'headers["x-api-key"]'],
|
|
||||||
censor: (value, path) => {
|
|
||||||
pathsReceived.push(path)
|
|
||||||
assert(Array.isArray(path), 'Path should be an array')
|
|
||||||
return '[REDACTED]'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
redact(obj)
|
|
||||||
|
|
||||||
// Verify paths are arrays
|
|
||||||
assert.strictEqual(pathsReceived.length, 2)
|
|
||||||
assert.deepStrictEqual(pathsReceived[0], ['headers', 'authorization'])
|
|
||||||
assert.deepStrictEqual(pathsReceived[1], ['headers', 'x-api-key'])
|
|
||||||
})
|
|
||||||
|
|
||||||
test('censor function with nested paths receives correct array', () => {
|
|
||||||
const obj = {
|
|
||||||
user: {
|
|
||||||
profile: {
|
|
||||||
credentials: {
|
|
||||||
password: 'secret123'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let receivedPath
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['user.profile.credentials.password'],
|
|
||||||
censor: (value, path) => {
|
|
||||||
receivedPath = path
|
|
||||||
assert.strictEqual(value, 'secret123')
|
|
||||||
assert(Array.isArray(path))
|
|
||||||
return '[REDACTED]'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
redact(obj)
|
|
||||||
|
|
||||||
assert.deepStrictEqual(receivedPath, ['user', 'profile', 'credentials', 'password'])
|
|
||||||
})
|
|
||||||
|
|
||||||
test('censor function with wildcards receives correct array paths', () => {
|
|
||||||
const obj = {
|
|
||||||
users: {
|
|
||||||
user1: { password: 'secret1' },
|
|
||||||
user2: { password: 'secret2' }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const pathsReceived = []
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['users.*.password'],
|
|
||||||
censor: (value, path) => {
|
|
||||||
pathsReceived.push([...path]) // copy the array
|
|
||||||
assert(Array.isArray(path))
|
|
||||||
return '[REDACTED]'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
redact(obj)
|
|
||||||
|
|
||||||
assert.strictEqual(pathsReceived.length, 2)
|
|
||||||
assert.deepStrictEqual(pathsReceived[0], ['users', 'user1', 'password'])
|
|
||||||
assert.deepStrictEqual(pathsReceived[1], ['users', 'user2', 'password'])
|
|
||||||
})
|
|
||||||
|
|
||||||
test('censor function with array wildcard receives correct array paths', () => {
|
|
||||||
const obj = {
|
|
||||||
items: [
|
|
||||||
{ secret: 'value1' },
|
|
||||||
{ secret: 'value2' }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
const pathsReceived = []
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['items.*.secret'],
|
|
||||||
censor: (value, path) => {
|
|
||||||
pathsReceived.push([...path])
|
|
||||||
assert(Array.isArray(path))
|
|
||||||
return '[REDACTED]'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
redact(obj)
|
|
||||||
|
|
||||||
assert.strictEqual(pathsReceived.length, 2)
|
|
||||||
assert.deepStrictEqual(pathsReceived[0], ['items', '0', 'secret'])
|
|
||||||
assert.deepStrictEqual(pathsReceived[1], ['items', '1', 'secret'])
|
|
||||||
})
|
|
||||||
|
|
||||||
test('censor function with end wildcard receives correct array paths', () => {
|
|
||||||
const obj = {
|
|
||||||
secrets: {
|
|
||||||
key1: 'secret1',
|
|
||||||
key2: 'secret2'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const pathsReceived = []
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['secrets.*'],
|
|
||||||
censor: (value, path) => {
|
|
||||||
pathsReceived.push([...path])
|
|
||||||
assert(Array.isArray(path))
|
|
||||||
return '[REDACTED]'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
redact(obj)
|
|
||||||
|
|
||||||
assert.strictEqual(pathsReceived.length, 2)
|
|
||||||
// Sort paths for consistent testing since object iteration order isn't guaranteed
|
|
||||||
pathsReceived.sort((a, b) => a[1].localeCompare(b[1]))
|
|
||||||
assert.deepStrictEqual(pathsReceived[0], ['secrets', 'key1'])
|
|
||||||
assert.deepStrictEqual(pathsReceived[1], ['secrets', 'key2'])
|
|
||||||
})
|
|
||||||
|
|
||||||
test('type safety: accessing properties on primitive values should not throw', () => {
|
|
||||||
// Test case from GitHub issue #5
|
|
||||||
const redactor = slowRedact({ paths: ['headers.authorization'] })
|
|
||||||
const data = {
|
|
||||||
headers: 123 // primitive value
|
|
||||||
}
|
|
||||||
|
|
||||||
assert.doesNotThrow(() => {
|
|
||||||
const result = redactor(data)
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
assert.strictEqual(parsed.headers, 123) // Should remain unchanged
|
|
||||||
})
|
|
||||||
|
|
||||||
// Test wildcards with primitives
|
|
||||||
const redactor2 = slowRedact({ paths: ['data.*.nested'] })
|
|
||||||
const data2 = {
|
|
||||||
data: {
|
|
||||||
item1: 123, // primitive, trying to access .nested on it
|
|
||||||
item2: { nested: 'secret' }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
assert.doesNotThrow(() => {
|
|
||||||
const result2 = redactor2(data2)
|
|
||||||
const parsed2 = JSON.parse(result2)
|
|
||||||
assert.strictEqual(parsed2.data.item1, 123) // Primitive unchanged
|
|
||||||
assert.strictEqual(parsed2.data.item2.nested, '[REDACTED]') // Object property redacted
|
|
||||||
})
|
|
||||||
|
|
||||||
// Test deep nested access on primitives
|
|
||||||
const redactor3 = slowRedact({ paths: ['user.name.first.charAt'] })
|
|
||||||
const data3 = {
|
|
||||||
user: {
|
|
||||||
name: 'John' // string primitive
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
assert.doesNotThrow(() => {
|
|
||||||
const result3 = redactor3(data3)
|
|
||||||
const parsed3 = JSON.parse(result3)
|
|
||||||
assert.strictEqual(parsed3.user.name, 'John') // Should remain unchanged
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
// Remove option tests
|
|
||||||
test('remove option: basic key removal', () => {
|
|
||||||
const obj = { username: 'john', password: 'secret123' }
|
|
||||||
const redact = slowRedact({ paths: ['password'], remove: true })
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
// Original object should remain unchanged
|
|
||||||
assert.strictEqual(obj.password, 'secret123')
|
|
||||||
|
|
||||||
// Result should have password completely removed
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
assert.strictEqual(parsed.username, 'john')
|
|
||||||
assert.strictEqual('password' in parsed, false)
|
|
||||||
assert.strictEqual(parsed.password, undefined)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('remove option: multiple paths removal', () => {
|
|
||||||
const obj = {
|
|
||||||
user: { name: 'john', password: 'secret' },
|
|
||||||
session: { token: 'abc123', id: 'session1' }
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['user.password', 'session.token'],
|
|
||||||
remove: true
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
// Original unchanged
|
|
||||||
assert.strictEqual(obj.user.password, 'secret')
|
|
||||||
assert.strictEqual(obj.session.token, 'abc123')
|
|
||||||
|
|
||||||
// Result has keys completely removed
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
assert.strictEqual(parsed.user.name, 'john')
|
|
||||||
assert.strictEqual(parsed.session.id, 'session1')
|
|
||||||
assert.strictEqual('password' in parsed.user, false)
|
|
||||||
assert.strictEqual('token' in parsed.session, false)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('remove option: wildcard removal', () => {
|
|
||||||
const obj = {
|
|
||||||
secrets: {
|
|
||||||
key1: 'secret1',
|
|
||||||
key2: 'secret2'
|
|
||||||
},
|
|
||||||
public: 'data'
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['secrets.*'],
|
|
||||||
remove: true
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
assert.strictEqual(parsed.public, 'data')
|
|
||||||
assert.deepStrictEqual(parsed.secrets, {}) // All keys removed
|
|
||||||
})
|
|
||||||
|
|
||||||
test('remove option: array wildcard removal', () => {
|
|
||||||
const obj = {
|
|
||||||
items: ['secret1', 'secret2', 'secret3'],
|
|
||||||
meta: 'data'
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['items.*'],
|
|
||||||
remove: true
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
assert.strictEqual(parsed.meta, 'data')
|
|
||||||
// Array items set to undefined are omitted by JSON.stringify
|
|
||||||
assert.deepStrictEqual(parsed.items, [null, null, null])
|
|
||||||
})
|
|
||||||
|
|
||||||
test('remove option: intermediate wildcard removal', () => {
|
|
||||||
const obj = {
|
|
||||||
users: {
|
|
||||||
user1: { password: 'secret1', name: 'john' },
|
|
||||||
user2: { password: 'secret2', name: 'jane' }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['users.*.password'],
|
|
||||||
remove: true
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
assert.strictEqual(parsed.users.user1.name, 'john')
|
|
||||||
assert.strictEqual(parsed.users.user2.name, 'jane')
|
|
||||||
assert.strictEqual('password' in parsed.users.user1, false)
|
|
||||||
assert.strictEqual('password' in parsed.users.user2, false)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('remove option: serialize false returns object with removed keys', () => {
|
|
||||||
const obj = { secret: 'hidden', public: 'data' }
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['secret'],
|
|
||||||
remove: true,
|
|
||||||
serialize: false
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
// Should be object, not string
|
|
||||||
assert.strictEqual(typeof result, 'object')
|
|
||||||
assert.strictEqual(result.public, 'data')
|
|
||||||
assert.strictEqual('secret' in result, false)
|
|
||||||
|
|
||||||
// Should have restore method
|
|
||||||
assert.strictEqual(typeof result.restore, 'function')
|
|
||||||
|
|
||||||
const restored = result.restore()
|
|
||||||
assert.strictEqual(restored.secret, 'hidden')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('remove option: non-existent paths are ignored', () => {
|
|
||||||
const obj = { existing: 'value' }
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['nonexistent.path'],
|
|
||||||
remove: true
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
assert.strictEqual(parsed.existing, 'value')
|
|
||||||
assert.strictEqual(parsed.nonexistent, undefined)
|
|
||||||
})
|
|
||||||
|
|
||||||
// Test for Issue #13: Empty string bracket notation paths not being redacted correctly
|
|
||||||
test('empty string bracket notation path', () => {
|
|
||||||
const obj = { '': { c: 'sensitive-data' } }
|
|
||||||
const redact = slowRedact({ paths: ["[''].c"] })
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
// Original object should remain unchanged
|
|
||||||
assert.strictEqual(obj[''].c, 'sensitive-data')
|
|
||||||
|
|
||||||
// Result should have redacted path
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
assert.strictEqual(parsed[''].c, '[REDACTED]')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('empty string bracket notation with double quotes', () => {
|
|
||||||
const obj = { '': { c: 'sensitive-data' } }
|
|
||||||
const redact = slowRedact({ paths: ['[""].c'] })
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
// Original object should remain unchanged
|
|
||||||
assert.strictEqual(obj[''].c, 'sensitive-data')
|
|
||||||
|
|
||||||
// Result should have redacted path
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
assert.strictEqual(parsed[''].c, '[REDACTED]')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('empty string key with nested bracket notation', () => {
|
|
||||||
const obj = { '': { '': { secret: 'value' } } }
|
|
||||||
const redact = slowRedact({ paths: ["[''][''].secret"] })
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
// Original object should remain unchanged
|
|
||||||
assert.strictEqual(obj[''][''].secret, 'value')
|
|
||||||
|
|
||||||
// Result should have redacted path
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
assert.strictEqual(parsed[''][''].secret, '[REDACTED]')
|
|
||||||
})
|
|
||||||
|
|
||||||
// Test for Pino issue #2313: censor should only be called when path exists
|
|
||||||
test('censor function not called for non-existent paths', () => {
|
|
||||||
let censorCallCount = 0
|
|
||||||
const censorCalls = []
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['a.b.c', 'req.authorization', 'url'],
|
|
||||||
serialize: false,
|
|
||||||
censor (value, path) {
|
|
||||||
censorCallCount++
|
|
||||||
censorCalls.push({ value, path: path.slice() })
|
|
||||||
return '***'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
// Test case 1: { req: { id: 'test' } }
|
|
||||||
// req.authorization doesn't exist, censor should not be called for it
|
|
||||||
censorCallCount = 0
|
|
||||||
censorCalls.length = 0
|
|
||||||
redact({ req: { id: 'test' } })
|
|
||||||
|
|
||||||
// Should not have been called for any path since none exist
|
|
||||||
assert.strictEqual(censorCallCount, 0, 'censor should not be called when paths do not exist')
|
|
||||||
|
|
||||||
// Test case 2: { a: { d: 'test' } }
|
|
||||||
// a.b.c doesn't exist (a.d exists, but not a.b.c)
|
|
||||||
censorCallCount = 0
|
|
||||||
redact({ a: { d: 'test' } })
|
|
||||||
assert.strictEqual(censorCallCount, 0)
|
|
||||||
|
|
||||||
// Test case 3: paths that do exist should still call censor
|
|
||||||
censorCallCount = 0
|
|
||||||
censorCalls.length = 0
|
|
||||||
const result = redact({ req: { authorization: 'bearer token' } })
|
|
||||||
assert.strictEqual(censorCallCount, 1, 'censor should be called when path exists')
|
|
||||||
assert.deepStrictEqual(censorCalls[0].path, ['req', 'authorization'])
|
|
||||||
assert.strictEqual(censorCalls[0].value, 'bearer token')
|
|
||||||
assert.strictEqual(result.req.authorization, '***')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('censor function not called for non-existent nested paths', () => {
|
|
||||||
let censorCallCount = 0
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['headers.authorization'],
|
|
||||||
serialize: false,
|
|
||||||
censor (value, path) {
|
|
||||||
censorCallCount++
|
|
||||||
return '[REDACTED]'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
// headers exists but authorization doesn't
|
|
||||||
censorCallCount = 0
|
|
||||||
const result1 = redact({ headers: { 'content-type': 'application/json' } })
|
|
||||||
assert.strictEqual(censorCallCount, 0)
|
|
||||||
assert.deepStrictEqual(result1.headers, { 'content-type': 'application/json' })
|
|
||||||
|
|
||||||
// headers doesn't exist at all
|
|
||||||
censorCallCount = 0
|
|
||||||
const result2 = redact({ body: 'data' })
|
|
||||||
assert.strictEqual(censorCallCount, 0)
|
|
||||||
assert.strictEqual(result2.body, 'data')
|
|
||||||
assert.strictEqual(typeof result2.restore, 'function')
|
|
||||||
|
|
||||||
// headers.authorization exists - should call censor
|
|
||||||
censorCallCount = 0
|
|
||||||
const result3 = redact({ headers: { authorization: 'Bearer token' } })
|
|
||||||
assert.strictEqual(censorCallCount, 1)
|
|
||||||
assert.strictEqual(result3.headers.authorization, '[REDACTED]')
|
|
||||||
})
|
|
||||||
-390
@@ -1,390 +0,0 @@
|
|||||||
const { test } = require('node:test')
|
|
||||||
const { strict: assert } = require('node:assert')
|
|
||||||
const slowRedact = require('../index.js')
|
|
||||||
const fastRedact = require('fast-redact')
|
|
||||||
|
|
||||||
test('integration: basic path redaction matches fast-redact', () => {
|
|
||||||
const obj = {
|
|
||||||
headers: {
|
|
||||||
cookie: 'secret-cookie',
|
|
||||||
authorization: 'Bearer token'
|
|
||||||
},
|
|
||||||
body: { message: 'hello' }
|
|
||||||
}
|
|
||||||
|
|
||||||
const slowResult = slowRedact({ paths: ['headers.cookie'] })(obj)
|
|
||||||
const fastResult = fastRedact({ paths: ['headers.cookie'] })(obj)
|
|
||||||
|
|
||||||
assert.strictEqual(slowResult, fastResult)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('integration: multiple paths match fast-redact', () => {
|
|
||||||
const obj = {
|
|
||||||
user: { name: 'john', password: 'secret' },
|
|
||||||
session: { token: 'abc123' }
|
|
||||||
}
|
|
||||||
|
|
||||||
const paths = ['user.password', 'session.token']
|
|
||||||
const slowResult = slowRedact({ paths })(obj)
|
|
||||||
const fastResult = fastRedact({ paths })(obj)
|
|
||||||
|
|
||||||
assert.strictEqual(slowResult, fastResult)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('integration: custom censor value matches fast-redact', () => {
|
|
||||||
const obj = { secret: 'hidden' }
|
|
||||||
const options = { paths: ['secret'], censor: '***' }
|
|
||||||
|
|
||||||
const slowResult = slowRedact(options)(obj)
|
|
||||||
const fastResult = fastRedact(options)(obj)
|
|
||||||
|
|
||||||
assert.strictEqual(slowResult, fastResult)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('integration: bracket notation matches fast-redact', () => {
|
|
||||||
const obj = {
|
|
||||||
'weird-key': { 'another-weird': 'secret' },
|
|
||||||
normal: 'public'
|
|
||||||
}
|
|
||||||
|
|
||||||
const options = { paths: ['["weird-key"]["another-weird"]'] }
|
|
||||||
const slowResult = slowRedact(options)(obj)
|
|
||||||
const fastResult = fastRedact(options)(obj)
|
|
||||||
|
|
||||||
assert.strictEqual(slowResult, fastResult)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('integration: array paths match fast-redact', () => {
|
|
||||||
const obj = {
|
|
||||||
users: [
|
|
||||||
{ name: 'john', password: 'secret1' },
|
|
||||||
{ name: 'jane', password: 'secret2' }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
const options = { paths: ['users[0].password', 'users[1].password'] }
|
|
||||||
const slowResult = slowRedact(options)(obj)
|
|
||||||
const fastResult = fastRedact(options)(obj)
|
|
||||||
|
|
||||||
assert.strictEqual(slowResult, fastResult)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('integration: wildcard at end matches fast-redact', () => {
|
|
||||||
const obj = {
|
|
||||||
secrets: {
|
|
||||||
key1: 'secret1',
|
|
||||||
key2: 'secret2'
|
|
||||||
},
|
|
||||||
public: 'data'
|
|
||||||
}
|
|
||||||
|
|
||||||
const options = { paths: ['secrets.*'] }
|
|
||||||
const slowResult = slowRedact(options)(obj)
|
|
||||||
const fastResult = fastRedact(options)(obj)
|
|
||||||
|
|
||||||
assert.strictEqual(slowResult, fastResult)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('integration: wildcard with arrays matches fast-redact', () => {
|
|
||||||
const obj = {
|
|
||||||
items: ['secret1', 'secret2', 'secret3']
|
|
||||||
}
|
|
||||||
|
|
||||||
const options = { paths: ['items.*'] }
|
|
||||||
const slowResult = slowRedact(options)(obj)
|
|
||||||
const fastResult = fastRedact(options)(obj)
|
|
||||||
|
|
||||||
assert.strictEqual(slowResult, fastResult)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('integration: intermediate wildcard matches fast-redact', () => {
|
|
||||||
const obj = {
|
|
||||||
users: {
|
|
||||||
user1: { password: 'secret1' },
|
|
||||||
user2: { password: 'secret2' }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const options = { paths: ['users.*.password'] }
|
|
||||||
const slowResult = slowRedact(options)(obj)
|
|
||||||
const fastResult = fastRedact(options)(obj)
|
|
||||||
|
|
||||||
assert.strictEqual(slowResult, fastResult)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('integration: custom serialize function matches fast-redact', () => {
|
|
||||||
const obj = { secret: 'hidden', public: 'data' }
|
|
||||||
const options = {
|
|
||||||
paths: ['secret'],
|
|
||||||
serialize: (obj) => `custom:${JSON.stringify(obj)}`
|
|
||||||
}
|
|
||||||
|
|
||||||
const slowResult = slowRedact(options)(obj)
|
|
||||||
const fastResult = fastRedact(options)(obj)
|
|
||||||
|
|
||||||
assert.strictEqual(slowResult, fastResult)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('integration: nested paths match fast-redact', () => {
|
|
||||||
const obj = {
|
|
||||||
level1: {
|
|
||||||
level2: {
|
|
||||||
level3: {
|
|
||||||
secret: 'hidden'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const options = { paths: ['level1.level2.level3.secret'] }
|
|
||||||
const slowResult = slowRedact(options)(obj)
|
|
||||||
const fastResult = fastRedact(options)(obj)
|
|
||||||
|
|
||||||
assert.strictEqual(slowResult, fastResult)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('integration: non-existent paths match fast-redact', () => {
|
|
||||||
const obj = { existing: 'value' }
|
|
||||||
const options = { paths: ['nonexistent.path'] }
|
|
||||||
|
|
||||||
const slowResult = slowRedact(options)(obj)
|
|
||||||
const fastResult = fastRedact(options)(obj)
|
|
||||||
|
|
||||||
assert.strictEqual(slowResult, fastResult)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('integration: null and undefined handling - legitimate difference', () => {
|
|
||||||
const obj = {
|
|
||||||
nullValue: null,
|
|
||||||
undefinedValue: undefined,
|
|
||||||
nested: {
|
|
||||||
nullValue: null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const options = { paths: ['nullValue', 'nested.nullValue'] }
|
|
||||||
const slowResult = slowRedact(options)(obj)
|
|
||||||
const fastResult = fastRedact(options)(obj)
|
|
||||||
|
|
||||||
// This is a legitimate behavioral difference:
|
|
||||||
// @pinojs/redact redacts null values, fast-redact doesn't
|
|
||||||
const slowParsed = JSON.parse(slowResult)
|
|
||||||
const fastParsed = JSON.parse(fastResult)
|
|
||||||
|
|
||||||
// @pinojs/redact redacts nulls
|
|
||||||
assert.strictEqual(slowParsed.nullValue, '[REDACTED]')
|
|
||||||
assert.strictEqual(slowParsed.nested.nullValue, '[REDACTED]')
|
|
||||||
|
|
||||||
// fast-redact preserves nulls
|
|
||||||
assert.strictEqual(fastParsed.nullValue, null)
|
|
||||||
assert.strictEqual(fastParsed.nested.nullValue, null)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('integration: strict mode with primitives - different error handling', () => {
|
|
||||||
const options = { paths: ['test'], strict: true }
|
|
||||||
|
|
||||||
const slowRedactFn = slowRedact(options)
|
|
||||||
const fastRedactFn = fastRedact(options)
|
|
||||||
|
|
||||||
// @pinojs/redact handles primitives gracefully
|
|
||||||
const stringSlowResult = slowRedactFn('primitive')
|
|
||||||
assert.strictEqual(stringSlowResult, '"primitive"')
|
|
||||||
|
|
||||||
const numberSlowResult = slowRedactFn(42)
|
|
||||||
assert.strictEqual(numberSlowResult, '42')
|
|
||||||
|
|
||||||
// fast-redact throws an error for primitives in strict mode
|
|
||||||
assert.throws(() => {
|
|
||||||
fastRedactFn('primitive')
|
|
||||||
}, /primitives cannot be redacted/)
|
|
||||||
|
|
||||||
assert.throws(() => {
|
|
||||||
fastRedactFn(42)
|
|
||||||
}, /primitives cannot be redacted/)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('integration: serialize false behavior difference', () => {
|
|
||||||
const slowObj = { secret: 'hidden' }
|
|
||||||
const fastObj = { secret: 'hidden' }
|
|
||||||
const options = { paths: ['secret'], serialize: false }
|
|
||||||
|
|
||||||
const slowResult = slowRedact(options)(slowObj)
|
|
||||||
const fastResult = fastRedact(options)(fastObj)
|
|
||||||
|
|
||||||
// Both should redact the secret
|
|
||||||
assert.strictEqual(slowResult.secret, '[REDACTED]')
|
|
||||||
assert.strictEqual(fastResult.secret, '[REDACTED]')
|
|
||||||
|
|
||||||
// @pinojs/redact always has restore method
|
|
||||||
assert.strictEqual(typeof slowResult.restore, 'function')
|
|
||||||
|
|
||||||
// @pinojs/redact should restore to original value
|
|
||||||
assert.strictEqual(slowResult.restore().secret, 'hidden')
|
|
||||||
|
|
||||||
// Key difference: original object state
|
|
||||||
// fast-redact mutates the original, @pinojs/redact doesn't
|
|
||||||
assert.strictEqual(slowObj.secret, 'hidden') // @pinojs/redact preserves original
|
|
||||||
assert.strictEqual(fastObj.secret, '[REDACTED]') // fast-redact mutates original
|
|
||||||
})
|
|
||||||
|
|
||||||
test('integration: censor function behavior', () => {
|
|
||||||
const obj = { secret: 'hidden' }
|
|
||||||
const options = {
|
|
||||||
paths: ['secret'],
|
|
||||||
censor: (value, path) => `REDACTED:${path}`
|
|
||||||
}
|
|
||||||
|
|
||||||
const slowResult = slowRedact(options)(obj)
|
|
||||||
const fastResult = fastRedact(options)(obj)
|
|
||||||
|
|
||||||
assert.strictEqual(slowResult, fastResult)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('integration: complex object with mixed patterns', () => {
|
|
||||||
const obj = {
|
|
||||||
users: [
|
|
||||||
{
|
|
||||||
id: 1,
|
|
||||||
name: 'john',
|
|
||||||
credentials: { password: 'secret1', apiKey: 'key1' }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 2,
|
|
||||||
name: 'jane',
|
|
||||||
credentials: { password: 'secret2', apiKey: 'key2' }
|
|
||||||
}
|
|
||||||
],
|
|
||||||
config: {
|
|
||||||
database: { password: 'db-secret' },
|
|
||||||
api: { keys: ['key1', 'key2', 'key3'] }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const options = {
|
|
||||||
paths: [
|
|
||||||
'users.*.credentials.password',
|
|
||||||
'users.*.credentials.apiKey',
|
|
||||||
'config.database.password',
|
|
||||||
'config.api.keys.*'
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
const slowResult = slowRedact(options)(obj)
|
|
||||||
const fastResult = fastRedact(options)(obj)
|
|
||||||
|
|
||||||
assert.strictEqual(slowResult, fastResult)
|
|
||||||
})
|
|
||||||
|
|
||||||
// Remove option integration tests - comparing with fast-redact
|
|
||||||
test('integration: remove option basic comparison with fast-redact', () => {
|
|
||||||
const obj = { username: 'john', password: 'secret123' }
|
|
||||||
const options = { paths: ['password'], remove: true }
|
|
||||||
|
|
||||||
const slowResult = slowRedact(options)(obj)
|
|
||||||
const fastResult = fastRedact(options)(obj)
|
|
||||||
|
|
||||||
assert.strictEqual(slowResult, fastResult)
|
|
||||||
|
|
||||||
// Verify the key is actually removed
|
|
||||||
const parsed = JSON.parse(slowResult)
|
|
||||||
assert.strictEqual(parsed.username, 'john')
|
|
||||||
assert.strictEqual('password' in parsed, false)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('integration: remove option multiple paths comparison with fast-redact', () => {
|
|
||||||
const obj = {
|
|
||||||
user: { name: 'john', password: 'secret' },
|
|
||||||
session: { token: 'abc123', id: 'session1' }
|
|
||||||
}
|
|
||||||
|
|
||||||
const options = {
|
|
||||||
paths: ['user.password', 'session.token'],
|
|
||||||
remove: true
|
|
||||||
}
|
|
||||||
|
|
||||||
const slowResult = slowRedact(options)(obj)
|
|
||||||
const fastResult = fastRedact(options)(obj)
|
|
||||||
|
|
||||||
assert.strictEqual(slowResult, fastResult)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('integration: remove option wildcard comparison with fast-redact', () => {
|
|
||||||
const obj = {
|
|
||||||
secrets: {
|
|
||||||
key1: 'secret1',
|
|
||||||
key2: 'secret2'
|
|
||||||
},
|
|
||||||
public: 'data'
|
|
||||||
}
|
|
||||||
|
|
||||||
const options = {
|
|
||||||
paths: ['secrets.*'],
|
|
||||||
remove: true
|
|
||||||
}
|
|
||||||
|
|
||||||
const slowResult = slowRedact(options)(obj)
|
|
||||||
const fastResult = fastRedact(options)(obj)
|
|
||||||
|
|
||||||
assert.strictEqual(slowResult, fastResult)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('integration: remove option intermediate wildcard comparison with fast-redact', () => {
|
|
||||||
const obj = {
|
|
||||||
users: {
|
|
||||||
user1: { password: 'secret1', name: 'john' },
|
|
||||||
user2: { password: 'secret2', name: 'jane' }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const options = {
|
|
||||||
paths: ['users.*.password'],
|
|
||||||
remove: true
|
|
||||||
}
|
|
||||||
|
|
||||||
const slowResult = slowRedact(options)(obj)
|
|
||||||
const fastResult = fastRedact(options)(obj)
|
|
||||||
|
|
||||||
assert.strictEqual(slowResult, fastResult)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('integration: remove option with custom censor comparison with fast-redact', () => {
|
|
||||||
const obj = { secret: 'hidden', public: 'data' }
|
|
||||||
const options = {
|
|
||||||
paths: ['secret'],
|
|
||||||
censor: '***',
|
|
||||||
remove: true
|
|
||||||
}
|
|
||||||
|
|
||||||
const slowResult = slowRedact(options)(obj)
|
|
||||||
const fastResult = fastRedact(options)(obj)
|
|
||||||
|
|
||||||
assert.strictEqual(slowResult, fastResult)
|
|
||||||
|
|
||||||
// With remove: true, censor value should be ignored
|
|
||||||
const parsed = JSON.parse(slowResult)
|
|
||||||
assert.strictEqual('secret' in parsed, false)
|
|
||||||
assert.strictEqual(parsed.public, 'data')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('integration: remove option serialize false behavior - @pinojs/redact only', () => {
|
|
||||||
// fast-redact doesn't support remove option with serialize: false
|
|
||||||
// so we test @pinojs/redact's behavior only
|
|
||||||
const obj = { secret: 'hidden', public: 'data' }
|
|
||||||
const options = { paths: ['secret'], remove: true, serialize: false }
|
|
||||||
|
|
||||||
const result = slowRedact(options)(obj)
|
|
||||||
|
|
||||||
// Should have the key removed
|
|
||||||
assert.strictEqual('secret' in result, false)
|
|
||||||
assert.strictEqual(result.public, 'data')
|
|
||||||
|
|
||||||
// Should have restore method
|
|
||||||
assert.strictEqual(typeof result.restore, 'function')
|
|
||||||
|
|
||||||
// Original object should be preserved
|
|
||||||
assert.strictEqual(obj.secret, 'hidden')
|
|
||||||
|
|
||||||
// Restore should bring back the removed key
|
|
||||||
const restored = result.restore()
|
|
||||||
assert.strictEqual(restored.secret, 'hidden')
|
|
||||||
})
|
|
||||||
-227
@@ -1,227 +0,0 @@
|
|||||||
'use strict'
|
|
||||||
|
|
||||||
const { test } = require('node:test')
|
|
||||||
const { strict: assert } = require('node:assert')
|
|
||||||
const slowRedact = require('../index.js')
|
|
||||||
|
|
||||||
// Tests for Issue #2319: @pinojs/redact fails to redact patterns with 3+ consecutive wildcards
|
|
||||||
test('three consecutive wildcards: *.*.*.password (4 levels deep)', () => {
|
|
||||||
const obj = {
|
|
||||||
simple: { password: 'secret-2-levels' },
|
|
||||||
user: { auth: { password: 'secret-3-levels' } },
|
|
||||||
nested: { deep: { auth: { password: 'secret-4-levels' } } }
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['*.*.*.password']
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
|
|
||||||
// Only the 4-level deep password should be redacted
|
|
||||||
assert.strictEqual(parsed.simple.password, 'secret-2-levels', '2-level password should NOT be redacted')
|
|
||||||
assert.strictEqual(parsed.user.auth.password, 'secret-3-levels', '3-level password should NOT be redacted')
|
|
||||||
assert.strictEqual(parsed.nested.deep.auth.password, '[REDACTED]', '4-level password SHOULD be redacted')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('four consecutive wildcards: *.*.*.*.password (5 levels deep)', () => {
|
|
||||||
const obj = {
|
|
||||||
simple: { password: 'secret-2-levels' },
|
|
||||||
user: { auth: { password: 'secret-3-levels' } },
|
|
||||||
nested: { deep: { auth: { password: 'secret-4-levels' } } },
|
|
||||||
config: { user: { auth: { settings: { password: 'secret-5-levels' } } } }
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['*.*.*.*.password']
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
|
|
||||||
// Only the 5-level deep password should be redacted
|
|
||||||
assert.strictEqual(parsed.simple.password, 'secret-2-levels', '2-level password should NOT be redacted')
|
|
||||||
assert.strictEqual(parsed.user.auth.password, 'secret-3-levels', '3-level password should NOT be redacted')
|
|
||||||
assert.strictEqual(parsed.nested.deep.auth.password, 'secret-4-levels', '4-level password should NOT be redacted')
|
|
||||||
assert.strictEqual(parsed.config.user.auth.settings.password, '[REDACTED]', '5-level password SHOULD be redacted')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('five consecutive wildcards: *.*.*.*.*.password (6 levels deep)', () => {
|
|
||||||
const obj = {
|
|
||||||
simple: { password: 'secret-2-levels' },
|
|
||||||
user: { auth: { password: 'secret-3-levels' } },
|
|
||||||
nested: { deep: { auth: { password: 'secret-4-levels' } } },
|
|
||||||
config: { user: { auth: { settings: { password: 'secret-5-levels' } } } },
|
|
||||||
data: {
|
|
||||||
reqConfig: {
|
|
||||||
data: {
|
|
||||||
credentials: {
|
|
||||||
settings: {
|
|
||||||
password: 'secret-6-levels'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['*.*.*.*.*.password']
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
|
|
||||||
// Only the 6-level deep password should be redacted
|
|
||||||
assert.strictEqual(parsed.simple.password, 'secret-2-levels', '2-level password should NOT be redacted')
|
|
||||||
assert.strictEqual(parsed.user.auth.password, 'secret-3-levels', '3-level password should NOT be redacted')
|
|
||||||
assert.strictEqual(parsed.nested.deep.auth.password, 'secret-4-levels', '4-level password should NOT be redacted')
|
|
||||||
assert.strictEqual(parsed.config.user.auth.settings.password, 'secret-5-levels', '5-level password should NOT be redacted')
|
|
||||||
assert.strictEqual(parsed.data.reqConfig.data.credentials.settings.password, '[REDACTED]', '6-level password SHOULD be redacted')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('three wildcards with censor function receives correct values', () => {
|
|
||||||
const obj = {
|
|
||||||
nested: { deep: { auth: { password: 'secret-value' } } }
|
|
||||||
}
|
|
||||||
|
|
||||||
const censorCalls = []
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['*.*.*.password'],
|
|
||||||
censor: (value, path) => {
|
|
||||||
censorCalls.push({ value, path: [...path] })
|
|
||||||
return '[REDACTED]'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
const result = redact(obj)
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
|
|
||||||
// Should have been called exactly once with the correct value
|
|
||||||
assert.strictEqual(censorCalls.length, 1, 'censor should be called once')
|
|
||||||
assert.strictEqual(censorCalls[0].value, 'secret-value', 'censor should receive the actual value')
|
|
||||||
assert.deepStrictEqual(censorCalls[0].path, ['nested', 'deep', 'auth', 'password'], 'censor should receive correct path')
|
|
||||||
assert.strictEqual(parsed.nested.deep.auth.password, '[REDACTED]')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('three wildcards with multiple matches', () => {
|
|
||||||
const obj = {
|
|
||||||
api1: { v1: { auth: { token: 'token1' } } },
|
|
||||||
api2: { v2: { auth: { token: 'token2' } } },
|
|
||||||
api3: { v1: { auth: { token: 'token3' } } }
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['*.*.*.token']
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
|
|
||||||
// All three tokens should be redacted
|
|
||||||
assert.strictEqual(parsed.api1.v1.auth.token, '[REDACTED]')
|
|
||||||
assert.strictEqual(parsed.api2.v2.auth.token, '[REDACTED]')
|
|
||||||
assert.strictEqual(parsed.api3.v1.auth.token, '[REDACTED]')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('three wildcards with remove option', () => {
|
|
||||||
const obj = {
|
|
||||||
nested: { deep: { auth: { password: 'secret', username: 'admin' } } }
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['*.*.*.password'],
|
|
||||||
remove: true
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
|
|
||||||
// Password should be removed entirely
|
|
||||||
assert.strictEqual('password' in parsed.nested.deep.auth, false, 'password key should be removed')
|
|
||||||
assert.strictEqual(parsed.nested.deep.auth.username, 'admin', 'username should remain')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('mixed: two and three wildcards in same redactor', () => {
|
|
||||||
const obj = {
|
|
||||||
user: { auth: { password: 'secret-3-levels' } },
|
|
||||||
config: { deep: { auth: { password: 'secret-4-levels' } } }
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['*.*.password', '*.*.*.password']
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
|
|
||||||
// Both should be redacted
|
|
||||||
assert.strictEqual(parsed.user.auth.password, '[REDACTED]', '3-level should be redacted by *.*.password')
|
|
||||||
assert.strictEqual(parsed.config.deep.auth.password, '[REDACTED]', '4-level should be redacted by *.*.*.password')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('three wildcards should not call censor for non-existent paths', () => {
|
|
||||||
const obj = {
|
|
||||||
shallow: { data: 'value' },
|
|
||||||
nested: { deep: { auth: { password: 'secret' } } }
|
|
||||||
}
|
|
||||||
|
|
||||||
let censorCallCount = 0
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['*.*.*.password'],
|
|
||||||
censor: (value, path) => {
|
|
||||||
censorCallCount++
|
|
||||||
return '[REDACTED]'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
redact(obj)
|
|
||||||
|
|
||||||
// Should only be called once for the path that exists
|
|
||||||
assert.strictEqual(censorCallCount, 1, 'censor should only be called for existing paths')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('three wildcards with arrays', () => {
|
|
||||||
const obj = {
|
|
||||||
users: [
|
|
||||||
{ auth: { password: 'secret1' } },
|
|
||||||
{ auth: { password: 'secret2' } }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['*.*.*.password']
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
|
|
||||||
// Both passwords should be redacted (users[0].auth.password is 4 levels)
|
|
||||||
assert.strictEqual(parsed.users[0].auth.password, '[REDACTED]')
|
|
||||||
assert.strictEqual(parsed.users[1].auth.password, '[REDACTED]')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('four wildcards with authorization header (real-world case)', () => {
|
|
||||||
const obj = {
|
|
||||||
requests: {
|
|
||||||
api1: {
|
|
||||||
config: {
|
|
||||||
headers: {
|
|
||||||
authorization: 'Bearer secret-token'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
api2: {
|
|
||||||
config: {
|
|
||||||
headers: {
|
|
||||||
authorization: 'Bearer another-token'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['*.*.*.*.authorization']
|
|
||||||
})
|
|
||||||
const result = redact(obj)
|
|
||||||
const parsed = JSON.parse(result)
|
|
||||||
|
|
||||||
// Both authorization headers should be redacted
|
|
||||||
assert.strictEqual(parsed.requests.api1.config.headers.authorization, '[REDACTED]')
|
|
||||||
assert.strictEqual(parsed.requests.api2.config.headers.authorization, '[REDACTED]')
|
|
||||||
})
|
|
||||||
-223
@@ -1,223 +0,0 @@
|
|||||||
const { test } = require('node:test')
|
|
||||||
const { strict: assert } = require('node:assert')
|
|
||||||
const slowRedact = require('../index.js')
|
|
||||||
|
|
||||||
/* eslint-disable no-proto */
|
|
||||||
|
|
||||||
test('prototype pollution: __proto__ path should not pollute Object prototype', () => {
|
|
||||||
const obj = {
|
|
||||||
user: { name: 'john' },
|
|
||||||
__proto__: { isAdmin: true }
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['__proto__.isAdmin'],
|
|
||||||
serialize: false
|
|
||||||
})
|
|
||||||
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
// Should not pollute Object.prototype
|
|
||||||
assert.strictEqual(Object.prototype.isAdmin, undefined)
|
|
||||||
assert.strictEqual({}.isAdmin, undefined)
|
|
||||||
|
|
||||||
// Should redact the __proto__ property if it exists as a regular property
|
|
||||||
assert.strictEqual(result.__proto__.isAdmin, '[REDACTED]')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('prototype pollution: constructor.prototype path should not pollute', () => {
|
|
||||||
const obj = {
|
|
||||||
user: { name: 'john' },
|
|
||||||
constructor: {
|
|
||||||
prototype: { isAdmin: true }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['constructor.prototype.isAdmin'],
|
|
||||||
serialize: false
|
|
||||||
})
|
|
||||||
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
// Should not pollute Object.prototype
|
|
||||||
assert.strictEqual(Object.prototype.isAdmin, undefined)
|
|
||||||
assert.strictEqual({}.isAdmin, undefined)
|
|
||||||
|
|
||||||
// Should redact the constructor.prototype property if it exists as a regular property
|
|
||||||
assert.strictEqual(result.constructor.prototype.isAdmin, '[REDACTED]')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('prototype pollution: nested __proto__ should not pollute', () => {
|
|
||||||
const obj = {
|
|
||||||
user: {
|
|
||||||
settings: {
|
|
||||||
__proto__: { isAdmin: true }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['user.settings.__proto__.isAdmin'],
|
|
||||||
serialize: false
|
|
||||||
})
|
|
||||||
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
// Should not pollute Object.prototype
|
|
||||||
assert.strictEqual(Object.prototype.isAdmin, undefined)
|
|
||||||
assert.strictEqual({}.isAdmin, undefined)
|
|
||||||
|
|
||||||
// Should redact the nested __proto__ property
|
|
||||||
assert.strictEqual(result.user.settings.__proto__.isAdmin, '[REDACTED]')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('prototype pollution: bracket notation __proto__ should not pollute', () => {
|
|
||||||
const obj = {
|
|
||||||
user: { name: 'john' },
|
|
||||||
__proto__: { isAdmin: true }
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['["__proto__"]["isAdmin"]'],
|
|
||||||
serialize: false
|
|
||||||
})
|
|
||||||
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
// Should not pollute Object.prototype
|
|
||||||
assert.strictEqual(Object.prototype.isAdmin, undefined)
|
|
||||||
assert.strictEqual({}.isAdmin, undefined)
|
|
||||||
|
|
||||||
// Should redact the __proto__ property when accessed via bracket notation
|
|
||||||
assert.strictEqual(result.__proto__.isAdmin, '[REDACTED]')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('prototype pollution: wildcard with __proto__ should not pollute', () => {
|
|
||||||
const obj = {
|
|
||||||
users: {
|
|
||||||
__proto__: { isAdmin: true },
|
|
||||||
user1: { name: 'john' },
|
|
||||||
user2: { name: 'jane' }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['users.*'],
|
|
||||||
serialize: false
|
|
||||||
})
|
|
||||||
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
// Should not pollute Object.prototype
|
|
||||||
assert.strictEqual(Object.prototype.isAdmin, undefined)
|
|
||||||
assert.strictEqual({}.isAdmin, undefined)
|
|
||||||
|
|
||||||
// Should redact only own properties
|
|
||||||
assert.strictEqual(result.users.user1, '[REDACTED]')
|
|
||||||
assert.strictEqual(result.users.user2, '[REDACTED]')
|
|
||||||
|
|
||||||
// __proto__ should only be redacted if it's an own property, not inherited
|
|
||||||
if (Object.prototype.hasOwnProperty.call(obj.users, '__proto__')) {
|
|
||||||
assert.strictEqual(result.users.__proto__, '[REDACTED]')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
test('prototype pollution: malicious JSON payload should not pollute', () => {
|
|
||||||
// Simulate a malicious payload that might come from JSON.parse
|
|
||||||
const maliciousObj = JSON.parse('{"user": {"name": "john"}, "__proto__": {"isAdmin": true}}')
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['__proto__.isAdmin'],
|
|
||||||
serialize: false
|
|
||||||
})
|
|
||||||
|
|
||||||
const result = redact(maliciousObj)
|
|
||||||
|
|
||||||
// Should not pollute Object.prototype
|
|
||||||
assert.strictEqual(Object.prototype.isAdmin, undefined)
|
|
||||||
assert.strictEqual({}.isAdmin, undefined)
|
|
||||||
|
|
||||||
// The malicious payload should have been redacted
|
|
||||||
assert.strictEqual(result.__proto__.isAdmin, '[REDACTED]')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('prototype pollution: verify prototype chain is preserved', () => {
|
|
||||||
function CustomClass () {
|
|
||||||
this.data = 'test'
|
|
||||||
}
|
|
||||||
CustomClass.prototype.method = function () { return 'original' }
|
|
||||||
|
|
||||||
const obj = new CustomClass()
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['data'],
|
|
||||||
serialize: false
|
|
||||||
})
|
|
||||||
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
// Should redact the data property
|
|
||||||
assert.strictEqual(result.data, '[REDACTED]')
|
|
||||||
|
|
||||||
// Should preserve the original prototype chain
|
|
||||||
assert.strictEqual(result.method(), 'original')
|
|
||||||
assert.strictEqual(Object.getPrototypeOf(result), CustomClass.prototype)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('prototype pollution: setValue should not create prototype pollution', () => {
|
|
||||||
const obj = { user: { name: 'john' } }
|
|
||||||
|
|
||||||
// Try to pollute via non-existent path that could create __proto__
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['__proto__.isAdmin'],
|
|
||||||
serialize: false
|
|
||||||
})
|
|
||||||
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
// Should not pollute Object.prototype
|
|
||||||
assert.strictEqual(Object.prototype.isAdmin, undefined)
|
|
||||||
assert.strictEqual({}.isAdmin, undefined)
|
|
||||||
|
|
||||||
// Should not create the path if it doesn't exist
|
|
||||||
// The __proto__ property may exist due to Object.create, but should not contain our redacted value
|
|
||||||
if (result.__proto__) {
|
|
||||||
assert.strictEqual(result.__proto__.isAdmin, undefined)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
test('prototype pollution: deep nested prototype properties should not pollute', () => {
|
|
||||||
const obj = {
|
|
||||||
level1: {
|
|
||||||
level2: {
|
|
||||||
level3: {
|
|
||||||
__proto__: { isAdmin: true },
|
|
||||||
constructor: {
|
|
||||||
prototype: { isEvil: true }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: [
|
|
||||||
'level1.level2.level3.__proto__.isAdmin',
|
|
||||||
'level1.level2.level3.constructor.prototype.isEvil'
|
|
||||||
],
|
|
||||||
serialize: false
|
|
||||||
})
|
|
||||||
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
// Should not pollute Object.prototype
|
|
||||||
assert.strictEqual(Object.prototype.isAdmin, undefined)
|
|
||||||
assert.strictEqual(Object.prototype.isEvil, undefined)
|
|
||||||
assert.strictEqual({}.isAdmin, undefined)
|
|
||||||
assert.strictEqual({}.isEvil, undefined)
|
|
||||||
|
|
||||||
// Should redact the deep nested properties
|
|
||||||
assert.strictEqual(result.level1.level2.level3.__proto__.isAdmin, '[REDACTED]')
|
|
||||||
assert.strictEqual(result.level1.level2.level3.constructor.prototype.isEvil, '[REDACTED]')
|
|
||||||
})
|
|
||||||
-115
@@ -1,115 +0,0 @@
|
|||||||
const { test } = require('node:test')
|
|
||||||
const { strict: assert } = require('node:assert')
|
|
||||||
const slowRedact = require('../index.js')
|
|
||||||
|
|
||||||
test('selective cloning shares references for non-redacted paths', () => {
|
|
||||||
const sharedObject = { unchanged: 'data' }
|
|
||||||
const obj = {
|
|
||||||
toRedact: 'secret',
|
|
||||||
shared: sharedObject,
|
|
||||||
nested: {
|
|
||||||
toRedact: 'secret2',
|
|
||||||
shared: sharedObject
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['toRedact', 'nested.toRedact'],
|
|
||||||
serialize: false
|
|
||||||
})
|
|
||||||
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
// Redacted values should be different
|
|
||||||
assert.strictEqual(result.toRedact, '[REDACTED]')
|
|
||||||
assert.strictEqual(result.nested.toRedact, '[REDACTED]')
|
|
||||||
|
|
||||||
// Non-redacted references should be shared (same object reference)
|
|
||||||
assert.strictEqual(result.shared, obj.shared)
|
|
||||||
assert.strictEqual(result.nested.shared, obj.nested.shared)
|
|
||||||
|
|
||||||
// The shared object should be the exact same reference
|
|
||||||
assert.strictEqual(result.shared, sharedObject)
|
|
||||||
assert.strictEqual(result.nested.shared, sharedObject)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('selective cloning works with arrays', () => {
|
|
||||||
const sharedItem = { unchanged: 'data' }
|
|
||||||
const obj = {
|
|
||||||
items: [
|
|
||||||
{ secret: 'hidden1', shared: sharedItem },
|
|
||||||
{ secret: 'hidden2', shared: sharedItem },
|
|
||||||
sharedItem
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['items.*.secret'],
|
|
||||||
serialize: false
|
|
||||||
})
|
|
||||||
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
// Secrets should be redacted
|
|
||||||
assert.strictEqual(result.items[0].secret, '[REDACTED]')
|
|
||||||
assert.strictEqual(result.items[1].secret, '[REDACTED]')
|
|
||||||
|
|
||||||
// Shared references should be preserved where possible
|
|
||||||
// Note: array items with secrets will be cloned, but their shared properties should still reference the original
|
|
||||||
assert.strictEqual(result.items[0].shared, sharedItem)
|
|
||||||
assert.strictEqual(result.items[1].shared, sharedItem)
|
|
||||||
|
|
||||||
// The third item gets cloned due to wildcard, but should have the same content
|
|
||||||
assert.deepStrictEqual(result.items[2], sharedItem)
|
|
||||||
// Note: Due to wildcard '*', all array items are cloned, even if they don't need redaction
|
|
||||||
// This is still a significant optimization for object properties that aren't in wildcard paths
|
|
||||||
})
|
|
||||||
|
|
||||||
test('selective cloning with no paths returns original object', () => {
|
|
||||||
const obj = { data: 'unchanged' }
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: [],
|
|
||||||
serialize: false
|
|
||||||
})
|
|
||||||
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
// Should return the exact same object reference
|
|
||||||
assert.strictEqual(result, obj)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('selective cloning performance - large objects with minimal redaction', () => {
|
|
||||||
// Create a large object with mostly shared data
|
|
||||||
const sharedData = { large: 'data'.repeat(1000) }
|
|
||||||
const obj = {
|
|
||||||
secret: 'hidden',
|
|
||||||
shared1: sharedData,
|
|
||||||
shared2: sharedData,
|
|
||||||
nested: {
|
|
||||||
secret: 'hidden2',
|
|
||||||
shared3: sharedData,
|
|
||||||
deep: {
|
|
||||||
shared4: sharedData,
|
|
||||||
moreShared: sharedData
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const redact = slowRedact({
|
|
||||||
paths: ['secret', 'nested.secret'],
|
|
||||||
serialize: false
|
|
||||||
})
|
|
||||||
|
|
||||||
const result = redact(obj)
|
|
||||||
|
|
||||||
// Verify redaction worked
|
|
||||||
assert.strictEqual(result.secret, '[REDACTED]')
|
|
||||||
assert.strictEqual(result.nested.secret, '[REDACTED]')
|
|
||||||
|
|
||||||
// Verify shared references are preserved
|
|
||||||
assert.strictEqual(result.shared1, sharedData)
|
|
||||||
assert.strictEqual(result.shared2, sharedData)
|
|
||||||
assert.strictEqual(result.nested.shared3, sharedData)
|
|
||||||
assert.strictEqual(result.nested.deep.shared4, sharedData)
|
|
||||||
assert.strictEqual(result.nested.deep.moreShared, sharedData)
|
|
||||||
})
|
|
||||||
-19
@@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"module": "commonjs",
|
|
||||||
"lib": [
|
|
||||||
"es6"
|
|
||||||
],
|
|
||||||
"noImplicitAny": true,
|
|
||||||
"noImplicitThis": true,
|
|
||||||
"strictFunctionTypes": true,
|
|
||||||
"strictNullChecks": true,
|
|
||||||
"types": [],
|
|
||||||
"noEmit": true,
|
|
||||||
"forceConsistentCasingInFileNames": true
|
|
||||||
},
|
|
||||||
"files": [
|
|
||||||
"index.d.ts",
|
|
||||||
"index.test-d.ts"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
-11
@@ -1,11 +0,0 @@
|
|||||||
language: node_js
|
|
||||||
sudo: false
|
|
||||||
node_js:
|
|
||||||
- 6
|
|
||||||
- 8
|
|
||||||
- 10
|
|
||||||
- 11
|
|
||||||
- 12
|
|
||||||
- 13
|
|
||||||
script:
|
|
||||||
- npm run ci
|
|
||||||
-22
@@ -1,22 +0,0 @@
|
|||||||
The MIT License (MIT)
|
|
||||||
Copyright (c) 2020 David Mark Clements
|
|
||||||
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
||||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
|
||||||
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
|
|
||||||
OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
-38
@@ -1,38 +0,0 @@
|
|||||||
'use strict'
|
|
||||||
|
|
||||||
/* global SharedArrayBuffer, Atomics */
|
|
||||||
|
|
||||||
if (typeof SharedArrayBuffer !== 'undefined' && typeof Atomics !== 'undefined') {
|
|
||||||
const nil = new Int32Array(new SharedArrayBuffer(4))
|
|
||||||
|
|
||||||
function sleep (ms) {
|
|
||||||
// also filters out NaN, non-number types, including empty strings, but allows bigints
|
|
||||||
const valid = ms > 0 && ms < Infinity
|
|
||||||
if (valid === false) {
|
|
||||||
if (typeof ms !== 'number' && typeof ms !== 'bigint') {
|
|
||||||
throw TypeError('sleep: ms must be a number')
|
|
||||||
}
|
|
||||||
throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity')
|
|
||||||
}
|
|
||||||
|
|
||||||
Atomics.wait(nil, 0, 0, Number(ms))
|
|
||||||
}
|
|
||||||
module.exports = sleep
|
|
||||||
} else {
|
|
||||||
|
|
||||||
function sleep (ms) {
|
|
||||||
// also filters out NaN, non-number types, including empty strings, but allows bigints
|
|
||||||
const valid = ms > 0 && ms < Infinity
|
|
||||||
if (valid === false) {
|
|
||||||
if (typeof ms !== 'number' && typeof ms !== 'bigint') {
|
|
||||||
throw TypeError('sleep: ms must be a number')
|
|
||||||
}
|
|
||||||
throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity')
|
|
||||||
}
|
|
||||||
const target = Date.now() + Number(ms)
|
|
||||||
while (target > Date.now()){}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = sleep
|
|
||||||
|
|
||||||
}
|
|
||||||
-37
@@ -1,37 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "atomic-sleep",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"description": "Zero CPU overhead, zero dependency, true event-loop blocking sleep",
|
|
||||||
"main": "index.js",
|
|
||||||
"scripts": {
|
|
||||||
"test": "tap -R classic- -j1 test",
|
|
||||||
"lint": "standard",
|
|
||||||
"ci": "npm run lint && npm test"
|
|
||||||
},
|
|
||||||
"keywords": [
|
|
||||||
"sleep",
|
|
||||||
"pause",
|
|
||||||
"wait",
|
|
||||||
"performance",
|
|
||||||
"atomics"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8.0.0"
|
|
||||||
},
|
|
||||||
"author": "David Mark Clements (@davidmarkclem)",
|
|
||||||
"license": "MIT",
|
|
||||||
"devDependencies": {
|
|
||||||
"standard": "^14.3.1",
|
|
||||||
"tap": "^14.10.6",
|
|
||||||
"tape": "^4.13.2"
|
|
||||||
},
|
|
||||||
"dependencies": {},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git+https://github.com/davidmarkclements/atomic-sleep.git"
|
|
||||||
},
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://github.com/davidmarkclements/atomic-sleep/issues"
|
|
||||||
},
|
|
||||||
"homepage": "https://github.com/davidmarkclements/atomic-sleep#readme"
|
|
||||||
}
|
|
||||||
-58
@@ -1,58 +0,0 @@
|
|||||||
<h1 align="center">Welcome to atomic-sleep ⏱️</h1>
|
|
||||||
<p>
|
|
||||||
<img alt="Version" src="https://img.shields.io/badge/version-1.0.0-blue.svg?cacheSeconds=2592000" />
|
|
||||||
<a href="#" target="_blank">
|
|
||||||
<img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg" />
|
|
||||||
</a>
|
|
||||||
<a href="https://twitter.com/davidmarkclem" target="_blank">
|
|
||||||
<img alt="Twitter: davidmarkclem" src="https://img.shields.io/twitter/follow/davidmarkclem.svg?style=social" />
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
> Zero CPU overhead, zero dependency, true event-loop blocking sleep
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
```js
|
|
||||||
const sleep = require('atomic-sleep')
|
|
||||||
|
|
||||||
console.time('sleep')
|
|
||||||
setTimeout(() => { console.timeEnd('sleep') }, 100)
|
|
||||||
sleep(1000)
|
|
||||||
```
|
|
||||||
|
|
||||||
The `console.time` will report a time of just over 1000ms despite the `setTimeout`
|
|
||||||
being 100ms. This is because the event loop is paused for 1000ms and the setTimeout
|
|
||||||
fires immediately after the event loop is no longer blocked (as more than 100ms have passed).
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install
|
|
||||||
```
|
|
||||||
|
|
||||||
## Run tests
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm test
|
|
||||||
```
|
|
||||||
|
|
||||||
## Support
|
|
||||||
|
|
||||||
Node and Browser versions that support both `SharedArrayBuffer` and `Atomics` will have (virtually) zero CPU overhead sleep.
|
|
||||||
|
|
||||||
For Node, Atomic Sleep can provide zero CPU overhead sleep from Node 8 and up.
|
|
||||||
|
|
||||||
For browser support see https://caniuse.com/#feat=sharedarraybuffer and https://caniuse.com/#feat=mdn-javascript_builtins_atomics.
|
|
||||||
|
|
||||||
|
|
||||||
For older Node versions and olders browsers we fall back to blocking the event loop in a way that will cause a CPU spike.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Author
|
|
||||||
|
|
||||||
👤 **David Mark Clements (@davidmarkclem)**
|
|
||||||
|
|
||||||
* Twitter: [@davidmarkclem](https://twitter.com/davidmarkclem)
|
|
||||||
* Github: [@davidmarkclements](https://github.com/davidmarkclements)
|
|
||||||
-47
@@ -1,47 +0,0 @@
|
|||||||
'use strict'
|
|
||||||
const test = require('tape')
|
|
||||||
const sleep = require('.')
|
|
||||||
|
|
||||||
test('blocks event loop for given amount of milliseconds', ({ is, end }) => {
|
|
||||||
const now = Date.now()
|
|
||||||
setTimeout(() => {
|
|
||||||
const delta = Date.now() - now
|
|
||||||
const fuzzyDelta = Math.floor(delta / 10) * 10 // allow up to 10ms of execution lag
|
|
||||||
is(fuzzyDelta, 1000)
|
|
||||||
end()
|
|
||||||
}, 100)
|
|
||||||
sleep(1000)
|
|
||||||
})
|
|
||||||
|
|
||||||
if (typeof BigInt !== 'undefined') {
|
|
||||||
|
|
||||||
test('allows ms to be supplied as a BigInt number', ({ is, end }) => {
|
|
||||||
const now = Date.now()
|
|
||||||
setTimeout(() => {
|
|
||||||
const delta = Date.now() - now
|
|
||||||
const fuzzyDelta = Math.floor(delta / 10) * 10 // allow up to 10ms of execution lag
|
|
||||||
is(fuzzyDelta, 1000)
|
|
||||||
end()
|
|
||||||
}, 100)
|
|
||||||
sleep(BigInt(1000)) // avoiding n notation as this will error on legacy node/browsers
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
test('throws range error if ms less than 0', ({ throws, end }) => {
|
|
||||||
throws(() => sleep(-1), RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity'))
|
|
||||||
end()
|
|
||||||
})
|
|
||||||
|
|
||||||
test('throws range error if ms is Infinity', ({ throws, end }) => {
|
|
||||||
throws(() => sleep(Infinity), RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity'))
|
|
||||||
end()
|
|
||||||
})
|
|
||||||
|
|
||||||
test('throws range error if ms is not a number or bigint', ({ throws, end }) => {
|
|
||||||
throws(() => sleep('Infinity'), TypeError('sleep: ms must be a number'))
|
|
||||||
throws(() => sleep('foo'), TypeError('sleep: ms must be a number'))
|
|
||||||
throws(() => sleep({a: 1}), TypeError('sleep: ms must be a number'))
|
|
||||||
throws(() => sleep([1,2,3]), TypeError('sleep: ms must be a number'))
|
|
||||||
end()
|
|
||||||
})
|
|
||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
version: 2
|
|
||||||
updates:
|
|
||||||
- package-ecosystem: github-actions
|
|
||||||
directory: '/'
|
|
||||||
schedule:
|
|
||||||
interval: daily
|
|
||||||
open-pull-requests-limit: 10
|
|
||||||
- package-ecosystem: npm
|
|
||||||
directory: '/'
|
|
||||||
schedule:
|
|
||||||
interval: daily
|
|
||||||
open-pull-requests-limit: 10
|
|
||||||
-46
@@ -1,46 +0,0 @@
|
|||||||
name: CI
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
paths-ignore:
|
|
||||||
- 'docs/**'
|
|
||||||
- '*.md'
|
|
||||||
pull_request:
|
|
||||||
paths-ignore:
|
|
||||||
- 'docs/**'
|
|
||||||
- '*.md'
|
|
||||||
jobs:
|
|
||||||
test:
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
node-version: [14, 16, 18, 20]
|
|
||||||
os: [macos-latest, ubuntu-latest, windows-latest]
|
|
||||||
exclude:
|
|
||||||
- node-version: 14
|
|
||||||
os: windows-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Use Node.js
|
|
||||||
uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: ${{ matrix.node-version }}
|
|
||||||
|
|
||||||
- name: Install
|
|
||||||
run: |
|
|
||||||
npm install --ignore-scripts
|
|
||||||
|
|
||||||
- name: Run tests
|
|
||||||
run: |
|
|
||||||
npm run test
|
|
||||||
|
|
||||||
automerge:
|
|
||||||
needs: test
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: fastify/github-action-merge-dependabot@v3.9
|
|
||||||
with:
|
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
-21
@@ -1,21 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2021 Matteo Collina
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
-54
@@ -1,54 +0,0 @@
|
|||||||
# on-exit-leak-free
|
|
||||||
|
|
||||||
This module helps dispose of an object gracefully when the Node.js process exits.
|
|
||||||
It executes a function with a given parameter
|
|
||||||
on [`'exit'`](https://nodejs.org/api/process.html#event-exit) without leaking memory,
|
|
||||||
cleaning things up appropriately if the object is garbage collected.
|
|
||||||
|
|
||||||
Requires `WeakRef` and `FinalizationRegistry`, i.e. use Node v14+.
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm i on-exit-leak-free
|
|
||||||
```
|
|
||||||
|
|
||||||
## Example
|
|
||||||
|
|
||||||
```js
|
|
||||||
'use strict'
|
|
||||||
|
|
||||||
const { register, unregister } = require('on-exit-leak-free')
|
|
||||||
const assert = require('assert')
|
|
||||||
|
|
||||||
function setup () {
|
|
||||||
// This object can be safely garbage collected,
|
|
||||||
// and the resulting shutdown function will not be called.
|
|
||||||
// There are no leaks.
|
|
||||||
const obj = { foo: 'bar' }
|
|
||||||
register(obj, shutdown)
|
|
||||||
// use registerBeforeExit(obj, shutdown) to execute the function only
|
|
||||||
// on beforeExit
|
|
||||||
// call unregister(obj) to remove
|
|
||||||
}
|
|
||||||
|
|
||||||
let shutdownCalled = false
|
|
||||||
|
|
||||||
// Please make sure that the function passed to register()
|
|
||||||
// does not create a closure around unnecessary objects.
|
|
||||||
function shutdown (obj, eventName) {
|
|
||||||
console.log(eventName) // beforeExit
|
|
||||||
shutdownCalled = true
|
|
||||||
assert.strictEqual(obj.foo, 'bar')
|
|
||||||
}
|
|
||||||
|
|
||||||
setup()
|
|
||||||
|
|
||||||
process.on('exit', function () {
|
|
||||||
assert.strictEqual(shutdownCalled, true)
|
|
||||||
})
|
|
||||||
```
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
MIT
|
|
||||||
-108
@@ -1,108 +0,0 @@
|
|||||||
'use strict'
|
|
||||||
|
|
||||||
const refs = {
|
|
||||||
exit: [],
|
|
||||||
beforeExit: []
|
|
||||||
}
|
|
||||||
const functions = {
|
|
||||||
exit: onExit,
|
|
||||||
beforeExit: onBeforeExit
|
|
||||||
}
|
|
||||||
|
|
||||||
let registry
|
|
||||||
|
|
||||||
function ensureRegistry () {
|
|
||||||
if (registry === undefined) {
|
|
||||||
registry = new FinalizationRegistry(clear)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function install (event) {
|
|
||||||
if (refs[event].length > 0) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
process.on(event, functions[event])
|
|
||||||
}
|
|
||||||
|
|
||||||
function uninstall (event) {
|
|
||||||
if (refs[event].length > 0) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
process.removeListener(event, functions[event])
|
|
||||||
if (refs.exit.length === 0 && refs.beforeExit.length === 0) {
|
|
||||||
registry = undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function onExit () {
|
|
||||||
callRefs('exit')
|
|
||||||
}
|
|
||||||
|
|
||||||
function onBeforeExit () {
|
|
||||||
callRefs('beforeExit')
|
|
||||||
}
|
|
||||||
|
|
||||||
function callRefs (event) {
|
|
||||||
for (const ref of refs[event]) {
|
|
||||||
const obj = ref.deref()
|
|
||||||
const fn = ref.fn
|
|
||||||
|
|
||||||
// This should always happen, however GC is
|
|
||||||
// undeterministic so it might not happen.
|
|
||||||
/* istanbul ignore else */
|
|
||||||
if (obj !== undefined) {
|
|
||||||
fn(obj, event)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
refs[event] = []
|
|
||||||
}
|
|
||||||
|
|
||||||
function clear (ref) {
|
|
||||||
for (const event of ['exit', 'beforeExit']) {
|
|
||||||
const index = refs[event].indexOf(ref)
|
|
||||||
refs[event].splice(index, index + 1)
|
|
||||||
uninstall(event)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function _register (event, obj, fn) {
|
|
||||||
if (obj === undefined) {
|
|
||||||
throw new Error('the object can\'t be undefined')
|
|
||||||
}
|
|
||||||
install(event)
|
|
||||||
const ref = new WeakRef(obj)
|
|
||||||
ref.fn = fn
|
|
||||||
|
|
||||||
ensureRegistry()
|
|
||||||
registry.register(obj, ref)
|
|
||||||
refs[event].push(ref)
|
|
||||||
}
|
|
||||||
|
|
||||||
function register (obj, fn) {
|
|
||||||
_register('exit', obj, fn)
|
|
||||||
}
|
|
||||||
|
|
||||||
function registerBeforeExit (obj, fn) {
|
|
||||||
_register('beforeExit', obj, fn)
|
|
||||||
}
|
|
||||||
|
|
||||||
function unregister (obj) {
|
|
||||||
if (registry === undefined) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
registry.unregister(obj)
|
|
||||||
for (const event of ['exit', 'beforeExit']) {
|
|
||||||
refs[event] = refs[event].filter((ref) => {
|
|
||||||
const _obj = ref.deref()
|
|
||||||
return _obj && _obj !== obj
|
|
||||||
})
|
|
||||||
uninstall(event)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
register,
|
|
||||||
registerBeforeExit,
|
|
||||||
unregister
|
|
||||||
}
|
|
||||||
-37
@@ -1,37 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "on-exit-leak-free",
|
|
||||||
"version": "2.1.2",
|
|
||||||
"description": "Execute a function on exit without leaking memory, allowing all objects to be garbage collected",
|
|
||||||
"main": "index.js",
|
|
||||||
"scripts": {
|
|
||||||
"test": "standard | snazzy && tap test/*.js"
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git+https://github.com/mcollina/on-exit-or-gc.git"
|
|
||||||
},
|
|
||||||
"keywords": [
|
|
||||||
"weak",
|
|
||||||
"reference",
|
|
||||||
"finalization",
|
|
||||||
"registry",
|
|
||||||
"process",
|
|
||||||
"exit",
|
|
||||||
"garbage",
|
|
||||||
"collector"
|
|
||||||
],
|
|
||||||
"author": "Matteo Collina <hello@matteocollina.com>",
|
|
||||||
"license": "MIT",
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://github.com/mcollina/on-exit-or-gc/issues"
|
|
||||||
},
|
|
||||||
"homepage": "https://github.com/mcollina/on-exit-or-gc#readme",
|
|
||||||
"devDependencies": {
|
|
||||||
"snazzy": "^9.0.0",
|
|
||||||
"standard": "^17.0.0",
|
|
||||||
"tap": "^16.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-30
@@ -1,30 +0,0 @@
|
|||||||
'use strict'
|
|
||||||
|
|
||||||
const { test } = require('tap')
|
|
||||||
const { fork } = require('child_process')
|
|
||||||
const { join } = require('path')
|
|
||||||
const { once } = require('events')
|
|
||||||
const { register } = require('..')
|
|
||||||
|
|
||||||
const files = [
|
|
||||||
'close.js',
|
|
||||||
'beforeExit',
|
|
||||||
'gc-not-close.js',
|
|
||||||
'unregister.js'
|
|
||||||
]
|
|
||||||
|
|
||||||
for (const file of files) {
|
|
||||||
test(file, async ({ equal }) => {
|
|
||||||
const child = fork(join(__dirname, 'fixtures', file), [], {
|
|
||||||
execArgv: ['--expose-gc']
|
|
||||||
})
|
|
||||||
|
|
||||||
const [code] = await once(child, 'close')
|
|
||||||
|
|
||||||
equal(code, 0)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
test('undefined', async ({ throws }) => {
|
|
||||||
throws(() => register(undefined))
|
|
||||||
})
|
|
||||||
-23
@@ -1,23 +0,0 @@
|
|||||||
'use strict'
|
|
||||||
|
|
||||||
const t = require('tap')
|
|
||||||
const { register, unregister } = require('..')
|
|
||||||
|
|
||||||
process.on('warning', () => {
|
|
||||||
t.fail('warning emitted')
|
|
||||||
})
|
|
||||||
|
|
||||||
const objs = []
|
|
||||||
for (let i = 0; i < 20; i++) {
|
|
||||||
const obj = { i }
|
|
||||||
objs.push(obj)
|
|
||||||
register(obj, shutdown)
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const obj of objs) {
|
|
||||||
unregister(obj)
|
|
||||||
}
|
|
||||||
|
|
||||||
t.pass('completed')
|
|
||||||
|
|
||||||
function shutdown () {}
|
|
||||||
-33
@@ -1,33 +0,0 @@
|
|||||||
'use strict'
|
|
||||||
|
|
||||||
const { unregister, registerBeforeExit } = require('../..')
|
|
||||||
const assert = require('assert')
|
|
||||||
|
|
||||||
function setup () {
|
|
||||||
const obj = { foo: 'bar' }
|
|
||||||
registerBeforeExit(obj, shutdown)
|
|
||||||
}
|
|
||||||
|
|
||||||
let shutdownCalled = false
|
|
||||||
let timeoutFinished = false
|
|
||||||
function shutdown (obj, event) {
|
|
||||||
shutdownCalled = true
|
|
||||||
if (event === 'beforeExit') {
|
|
||||||
setTimeout(function () {
|
|
||||||
timeoutFinished = true
|
|
||||||
assert.strictEqual(obj.foo, 'bar')
|
|
||||||
unregister(obj)
|
|
||||||
}, 100)
|
|
||||||
process.on('beforeExit', function () {
|
|
||||||
assert.strictEqual(timeoutFinished, true)
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
throw new Error('different event')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
setup()
|
|
||||||
|
|
||||||
process.on('exit', function () {
|
|
||||||
assert.strictEqual(shutdownCalled, true)
|
|
||||||
})
|
|
||||||
-21
@@ -1,21 +0,0 @@
|
|||||||
'use strict'
|
|
||||||
|
|
||||||
const { register } = require('../..')
|
|
||||||
const assert = require('assert')
|
|
||||||
|
|
||||||
function setup () {
|
|
||||||
const obj = { foo: 'bar' }
|
|
||||||
register(obj, shutdown)
|
|
||||||
}
|
|
||||||
|
|
||||||
let shutdownCalled = false
|
|
||||||
function shutdown (obj) {
|
|
||||||
shutdownCalled = true
|
|
||||||
assert.strictEqual(obj.foo, 'bar')
|
|
||||||
}
|
|
||||||
|
|
||||||
setup()
|
|
||||||
|
|
||||||
process.on('exit', function () {
|
|
||||||
assert.strictEqual(shutdownCalled, true)
|
|
||||||
})
|
|
||||||
-24
@@ -1,24 +0,0 @@
|
|||||||
'use strict'
|
|
||||||
|
|
||||||
const { register } = require('../..')
|
|
||||||
const assert = require('assert')
|
|
||||||
|
|
||||||
function setup () {
|
|
||||||
let obj = { foo: 'bar' }
|
|
||||||
register(obj, shutdown)
|
|
||||||
setImmediate(function () {
|
|
||||||
obj = undefined
|
|
||||||
gc() // eslint-disable-line
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
let shutdownCalled = false
|
|
||||||
function shutdown (obj) {
|
|
||||||
shutdownCalled = true
|
|
||||||
}
|
|
||||||
|
|
||||||
setup()
|
|
||||||
|
|
||||||
process.on('exit', function () {
|
|
||||||
assert.strictEqual(shutdownCalled, false)
|
|
||||||
})
|
|
||||||
-24
@@ -1,24 +0,0 @@
|
|||||||
'use strict'
|
|
||||||
|
|
||||||
const { register, unregister } = require('../..')
|
|
||||||
const assert = require('assert')
|
|
||||||
|
|
||||||
function setup () {
|
|
||||||
const obj = { foo: 'bar' }
|
|
||||||
register(obj, shutdown)
|
|
||||||
setImmediate(function () {
|
|
||||||
unregister(obj)
|
|
||||||
unregister(obj) // twice, this should not throw
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
let shutdownCalled = false
|
|
||||||
function shutdown (obj) {
|
|
||||||
shutdownCalled = true
|
|
||||||
}
|
|
||||||
|
|
||||||
setup()
|
|
||||||
|
|
||||||
process.on('exit', function () {
|
|
||||||
assert.strictEqual(shutdownCalled, false)
|
|
||||||
})
|
|
||||||
-13
@@ -1,13 +0,0 @@
|
|||||||
version: 2
|
|
||||||
updates:
|
|
||||||
- package-ecosystem: "github-actions"
|
|
||||||
directory: "/"
|
|
||||||
schedule:
|
|
||||||
interval: "monthly"
|
|
||||||
open-pull-requests-limit: 10
|
|
||||||
|
|
||||||
- package-ecosystem: "npm"
|
|
||||||
directory: "/"
|
|
||||||
schedule:
|
|
||||||
interval: "weekly"
|
|
||||||
open-pull-requests-limit: 10
|
|
||||||
-97
@@ -1,97 +0,0 @@
|
|||||||
name: CI
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
paths-ignore:
|
|
||||||
- 'docs/**'
|
|
||||||
- '*.md'
|
|
||||||
pull_request:
|
|
||||||
paths-ignore:
|
|
||||||
- 'docs/**'
|
|
||||||
- '*.md'
|
|
||||||
|
|
||||||
# This allows a subsequently queued workflow run to interrupt previous runs
|
|
||||||
concurrency:
|
|
||||||
group: "${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}"
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
dependency-review:
|
|
||||||
name: Dependency Review
|
|
||||||
if: github.event_name == 'pull_request'
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
steps:
|
|
||||||
- name: Check out repo
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
|
|
||||||
- name: Dependency review
|
|
||||||
uses: actions/dependency-review-action@v3
|
|
||||||
|
|
||||||
test:
|
|
||||||
name: Test
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
node-version: [18, 20, 22]
|
|
||||||
os: [macos-latest, ubuntu-latest, windows-latest]
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Check out repo
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
|
|
||||||
- name: Setup Node ${{ matrix.node-version }}
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: ${{ matrix.node-version }}
|
|
||||||
|
|
||||||
- name: Restore cached dependencies
|
|
||||||
uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
path: node_modules
|
|
||||||
key: node-modules-${{ hashFiles('package.json') }}
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: npm i --ignore-scripts
|
|
||||||
|
|
||||||
- name: Run Tests
|
|
||||||
run: npm run test-ci
|
|
||||||
|
|
||||||
- name: Coveralls Parallel
|
|
||||||
uses: coverallsapp/github-action@v2.1.2
|
|
||||||
with:
|
|
||||||
github-token: ${{ secrets.github_token }}
|
|
||||||
parallel: true
|
|
||||||
flag-name: run-${{ matrix.node-version }}-${{ matrix.os }}
|
|
||||||
|
|
||||||
coverage:
|
|
||||||
needs: test
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Coveralls Finished
|
|
||||||
uses: coverallsapp/github-action@v2.1.2
|
|
||||||
with:
|
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
parallel-finished: true
|
|
||||||
|
|
||||||
automerge:
|
|
||||||
name: Automerge Dependabot PRs
|
|
||||||
if: >
|
|
||||||
github.event_name == 'pull_request' &&
|
|
||||||
github.event.pull_request.user.login == 'dependabot[bot]'
|
|
||||||
needs: test
|
|
||||||
permissions:
|
|
||||||
pull-requests: write
|
|
||||||
contents: write
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: fastify/github-action-merge-dependabot@v3
|
|
||||||
with:
|
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
-4
@@ -1,4 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
. "$(dirname -- "$0")/_/husky.sh"
|
|
||||||
|
|
||||||
npm test
|
|
||||||
-21
@@ -1,21 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2021 pino
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
-172
@@ -1,172 +0,0 @@
|
|||||||
# pino-abstract-transport
|
|
||||||
[](https://www.npmjs.com/package/pino-abstract-transport)
|
|
||||||
[](https://github.com/pinojs/pino-abstract-transport/actions)
|
|
||||||
[](https://coveralls.io/github/pinojs/pino-abstract-transport?branch=main)
|
|
||||||
[](https://standardjs.com/)
|
|
||||||
|
|
||||||
Write Pino transports easily.
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm i pino-abstract-transport
|
|
||||||
```
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
```js
|
|
||||||
import build from 'pino-abstract-transport'
|
|
||||||
|
|
||||||
export default async function (opts) {
|
|
||||||
return build(async function (source) {
|
|
||||||
for await (let obj of source) {
|
|
||||||
console.log(obj)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
or in CommonJS and streams:
|
|
||||||
|
|
||||||
```js
|
|
||||||
'use strict'
|
|
||||||
|
|
||||||
const build = require('pino-abstract-transport')
|
|
||||||
|
|
||||||
module.exports = function (opts) {
|
|
||||||
return build(function (source) {
|
|
||||||
source.on('data', function (obj) {
|
|
||||||
console.log(obj)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Typescript usage
|
|
||||||
|
|
||||||
Install the type definitions for node. Make sure the major version of the type definitions matches the node version you are using.
|
|
||||||
|
|
||||||
#### Node 16
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm i -D @types/node@16
|
|
||||||
```
|
|
||||||
|
|
||||||
## API
|
|
||||||
|
|
||||||
### build(fn, opts) => Stream
|
|
||||||
|
|
||||||
Create a [`split2`](http://npm.im/split2) instance and returns it.
|
|
||||||
This same instance is also passed to the given function, which is called
|
|
||||||
synchronously.
|
|
||||||
|
|
||||||
If `opts.transform` is `true`, `pino-abstract-transform` will
|
|
||||||
wrap the split2 instance and the returned stream using [`duplexify`](https://www.npmjs.com/package/duplexify),
|
|
||||||
so they can be concatenated into multiple transports.
|
|
||||||
|
|
||||||
#### Events emitted
|
|
||||||
|
|
||||||
In addition to all events emitted by a [`Readable`](https://nodejs.org/api/stream.html#stream_class_stream_readable)
|
|
||||||
stream, it emits the following events:
|
|
||||||
|
|
||||||
* `unknown` where an unparsable line is found, both the line and optional error is emitted.
|
|
||||||
|
|
||||||
#### Options
|
|
||||||
|
|
||||||
* `parse` an option to change to data format passed to build function. When this option is set to `lines`,
|
|
||||||
the data is passed as a string, otherwise the data is passed as an object. Default: `undefined`.
|
|
||||||
|
|
||||||
* `close(err, cb)` a function that is called to shutdown the transport. It's called both on error and non-error shutdowns.
|
|
||||||
It can also return a promise. In this case discard the the `cb` argument.
|
|
||||||
|
|
||||||
* `parseLine(line)` a function that is used to parse line received from `pino`.
|
|
||||||
|
|
||||||
* `expectPinoConfig` a boolean that indicates if the transport expects Pino to add some of its configuration to the stream. Default: `false`.
|
|
||||||
|
|
||||||
## Example
|
|
||||||
|
|
||||||
### custom parseLine
|
|
||||||
|
|
||||||
You can allow custom `parseLine` from users while providing a simple and safe default parseLine.
|
|
||||||
|
|
||||||
```js
|
|
||||||
'use strict'
|
|
||||||
|
|
||||||
const build = require('pino-abstract-transport')
|
|
||||||
|
|
||||||
function defaultParseLine (line) {
|
|
||||||
const obj = JSON.parse(line)
|
|
||||||
// property foo will be added on each line
|
|
||||||
obj.foo = 'bar'
|
|
||||||
return obj
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = function (opts) {
|
|
||||||
const parseLine = typeof opts.parseLine === 'function' ? opts.parseLine : defaultParseLine
|
|
||||||
return build(function (source) {
|
|
||||||
source.on('data', function (obj) {
|
|
||||||
console.log(obj)
|
|
||||||
})
|
|
||||||
}, {
|
|
||||||
parseLine: parseLine
|
|
||||||
})
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Stream concatenation / pipeline
|
|
||||||
|
|
||||||
You can pipeline multiple transports:
|
|
||||||
|
|
||||||
```js
|
|
||||||
const build = require('pino-abstract-transport')
|
|
||||||
const { Transform, pipeline } = require('stream')
|
|
||||||
|
|
||||||
function buildTransform () {
|
|
||||||
return build(function (source) {
|
|
||||||
return new Transform({
|
|
||||||
objectMode: true,
|
|
||||||
autoDestroy: true,
|
|
||||||
transform (line, enc, cb) {
|
|
||||||
line.service = 'bob'
|
|
||||||
cb(null, JSON.stringify(line))
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}, { enablePipelining: true })
|
|
||||||
}
|
|
||||||
|
|
||||||
function buildDestination () {
|
|
||||||
return build(function (source) {
|
|
||||||
source.on('data', function (obj) {
|
|
||||||
console.log(obj)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
pipeline(process.stdin, buildTransform(), buildDestination(), function (err) {
|
|
||||||
console.log('pipeline completed!', err)
|
|
||||||
})
|
|
||||||
```
|
|
||||||
|
|
||||||
### Using pino config
|
|
||||||
|
|
||||||
Setting `expectPinoConfig` to `true` will make the transport wait for pino to send its configuration before starting to process logs. It will add `levels`, `messageKey` and `errorKey` to the stream.
|
|
||||||
|
|
||||||
When used with an incompatible version of pino, the stream will immediately error.
|
|
||||||
|
|
||||||
```js
|
|
||||||
import build from 'pino-abstract-transport'
|
|
||||||
|
|
||||||
export default function (opts) {
|
|
||||||
return build(async function (source) {
|
|
||||||
for await (const obj of source) {
|
|
||||||
console.log(`[${source.levels.labels[obj.level]}]: ${obj[source.messageKey]}`)
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
expectPinoConfig: true
|
|
||||||
})
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
MIT
|
|
||||||
-122
@@ -1,122 +0,0 @@
|
|||||||
// Type definitions for pino-abstract-transport 0.4.0
|
|
||||||
// Project: https://github.com/pinojs/pino-abstract-transport#readme
|
|
||||||
// Definitions by: Diyar Oktay <https://github.com/windupbird144>
|
|
||||||
|
|
||||||
/// <reference types="node" />
|
|
||||||
|
|
||||||
import { Transform } from "stream";
|
|
||||||
|
|
||||||
type BuildOptions = {
|
|
||||||
/**
|
|
||||||
* `parseLine(line)` a function that is used to parse line received from pino.
|
|
||||||
* @default JSON.parse
|
|
||||||
*/
|
|
||||||
parseLine?: (line: string) => unknown;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* `parse` an option to change to data format passed to build function.
|
|
||||||
* @default undefined
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
parse?: "lines";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* `close(err, cb)` a function that is called to shutdown the transport.
|
|
||||||
* It's called both on error and non-error shutdowns. It can also return
|
|
||||||
* a promise. In this case discard the the cb argument.
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* ```typescript
|
|
||||||
* {
|
|
||||||
* close: function (err, cb) {
|
|
||||||
* process.nextTick(cb, err)
|
|
||||||
* }
|
|
||||||
* }
|
|
||||||
* ```
|
|
||||||
* */
|
|
||||||
close?: (err: Error, cb: Function) => void | Promise<void>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* `metadata` If set to false, do not add metadata properties to the returned stream
|
|
||||||
*/
|
|
||||||
metadata?: false;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* `expectPinoConfig` If set to true, the transport will wait for pino to send its
|
|
||||||
* configuration before starting to process logs.
|
|
||||||
*/
|
|
||||||
expectPinoConfig?: boolean;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Pass these options to wrap the split2 stream and
|
|
||||||
* the returned stream into a Duplex
|
|
||||||
*/
|
|
||||||
type EnablePipelining = BuildOptions & {
|
|
||||||
enablePipelining: true;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a split2 instance and returns it. This same instance is also passed
|
|
||||||
* to the given function, which is called after pino has sent its configuration.
|
|
||||||
*
|
|
||||||
* @returns {Promise<Transform>} the split2 instance
|
|
||||||
*/
|
|
||||||
declare function build(
|
|
||||||
fn: (transform: Transform & build.OnUnknown) => void | Promise<void>,
|
|
||||||
opts: BuildOptions & { expectPinoConfig: true }
|
|
||||||
): Promise<Transform & build.OnUnknown>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a split2 instance and returns it. This same instance is also passed
|
|
||||||
* to the given function, which is called synchronously.
|
|
||||||
*
|
|
||||||
* @returns {Transform} the split2 instance
|
|
||||||
*/
|
|
||||||
declare function build(
|
|
||||||
fn: (transform: Transform & build.OnUnknown) => void | Promise<void>,
|
|
||||||
opts?: BuildOptions
|
|
||||||
): Transform & build.OnUnknown;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a split2 instance and passes it to the given function, which is called
|
|
||||||
* after pino has sent its configuration. Then wraps the split2 instance and
|
|
||||||
* the returned stream into a Duplex, so they can be concatenated into multiple
|
|
||||||
* transports.
|
|
||||||
*
|
|
||||||
* @returns {Promise<Transform>} the wrapped split2 instance
|
|
||||||
*/
|
|
||||||
declare function build(
|
|
||||||
fn: (transform: Transform & build.OnUnknown) => Transform & build.OnUnknown,
|
|
||||||
opts: EnablePipelining & { expectPinoConfig: true }
|
|
||||||
): Promise<Transform>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a split2 instance and passes it to the given function, which is called
|
|
||||||
* synchronously. Then wraps the split2 instance and the returned stream into a
|
|
||||||
* Duplex, so they can be concatenated into multiple transports.
|
|
||||||
*
|
|
||||||
* @returns {Transform} the wrapped split2 instance
|
|
||||||
*/
|
|
||||||
declare function build(
|
|
||||||
fn: (transform: Transform & build.OnUnknown) => Transform & build.OnUnknown,
|
|
||||||
opts: EnablePipelining
|
|
||||||
): Transform;
|
|
||||||
|
|
||||||
declare namespace build {
|
|
||||||
export interface OnUnknown {
|
|
||||||
/**
|
|
||||||
* `unknown` is the event emitted where an unparsable line is found
|
|
||||||
*
|
|
||||||
* @param event 'unknown'
|
|
||||||
* @param line the unparsable line
|
|
||||||
* @param error the error that was thrown when parsing the line
|
|
||||||
*/
|
|
||||||
on(
|
|
||||||
event: "unknown",
|
|
||||||
listener: (line: string, error: unknown) => void
|
|
||||||
): void;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export = build;
|
|
||||||
Loaded 100 of 463 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user