patterns no projeto do MMPSearch
This commit is contained in:
1 parent
52d1d90fc1
commit
34a44ec763
23 files changed
+94100
-6629
No files matched your search
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
@@ -9,7 +9,6 @@ tags:
|
||||
bassline:
|
||||
- main base
|
||||
plugin:
|
||||
- ''
|
||||
- nes
|
||||
sample: []
|
||||
tracks:
|
||||
@@ -20,8 +19,29 @@ tracks:
|
||||
instrument_name: bass1
|
||||
instrument_type: '0'
|
||||
pan: '1.6'
|
||||
patterns:
|
||||
- name: bass1
|
||||
pos: '0'
|
||||
steps:
|
||||
- true
|
||||
- false
|
||||
- true
|
||||
- true
|
||||
- true
|
||||
- false
|
||||
- true
|
||||
- true
|
||||
- true
|
||||
- false
|
||||
- true
|
||||
- true
|
||||
- true
|
||||
- false
|
||||
- true
|
||||
- true
|
||||
pitch: '0'
|
||||
pitchrange: '1'
|
||||
plugin_name: nes
|
||||
usemasterpitch: '1'
|
||||
vol: '96'
|
||||
- basenote: '42'
|
||||
@@ -29,8 +49,29 @@ tracks:
|
||||
instrument_name: noise1
|
||||
instrument_type: '0'
|
||||
pan: '0'
|
||||
patterns:
|
||||
- name: noise1
|
||||
pos: '0'
|
||||
steps:
|
||||
- true
|
||||
- false
|
||||
- true
|
||||
- true
|
||||
- true
|
||||
- false
|
||||
- true
|
||||
- true
|
||||
- true
|
||||
- false
|
||||
- true
|
||||
- true
|
||||
- true
|
||||
- false
|
||||
- true
|
||||
- true
|
||||
pitch: '0'
|
||||
pitchrange: '1'
|
||||
plugin_name: nes
|
||||
usemasterpitch: '1'
|
||||
vol: '100'
|
||||
- basenote: '42'
|
||||
@@ -38,11 +79,32 @@ tracks:
|
||||
instrument_name: snare
|
||||
instrument_type: '0'
|
||||
pan: '0'
|
||||
patterns:
|
||||
- name: snare
|
||||
pos: '0'
|
||||
steps:
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
pitch: '0'
|
||||
pitchrange: '1'
|
||||
plugin_name: nes
|
||||
usemasterpitch: '1'
|
||||
vol: '122.4'
|
||||
tags: ''
|
||||
tags: nes
|
||||
type: bassline
|
||||
- arpeggiator:
|
||||
arp: '0'
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -169,8 +169,86 @@ tracks:
|
||||
instrument_name: Kicker
|
||||
instrument_type: '0'
|
||||
pan: '0'
|
||||
patterns:
|
||||
- name: Kicker
|
||||
pos: '0'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: Kicker
|
||||
pos: '192'
|
||||
steps:
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: Kicker
|
||||
pos: '384'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: Kicker
|
||||
pos: '576'
|
||||
steps:
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
pitch: '0'
|
||||
pitchrange: '1'
|
||||
plugin_name: kicker
|
||||
usemasterpitch: '1'
|
||||
vol: '100'
|
||||
- basenote: '57'
|
||||
@@ -178,8 +256,86 @@ tracks:
|
||||
instrument_name: OpulenZ
|
||||
instrument_type: '0'
|
||||
pan: '0'
|
||||
patterns:
|
||||
- name: OpulenZ
|
||||
pos: '0'
|
||||
steps:
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: OpulenZ
|
||||
pos: '192'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: OpulenZ
|
||||
pos: '384'
|
||||
steps:
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: OpulenZ
|
||||
pos: '576'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
pitch: '0'
|
||||
pitchrange: '1'
|
||||
plugin_name: OPL2
|
||||
usemasterpitch: '1'
|
||||
vol: '100'
|
||||
- audiofileprocessor:
|
||||
@@ -197,8 +353,86 @@ tracks:
|
||||
instrument_name: snare01.ogg
|
||||
instrument_type: '0'
|
||||
pan: '0'
|
||||
patterns:
|
||||
- name: snare01.ogg
|
||||
pos: '0'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: snare01.ogg
|
||||
pos: '192'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- name: snare01.ogg
|
||||
pos: '384'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: snare01.ogg
|
||||
pos: '576'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
pitch: '0'
|
||||
pitchrange: '1'
|
||||
plugin_name: audiofileprocessor
|
||||
usemasterpitch: '1'
|
||||
vol: '100'
|
||||
- audiofileprocessor:
|
||||
@@ -216,8 +450,86 @@ tracks:
|
||||
instrument_name: clap01.ogg
|
||||
instrument_type: '0'
|
||||
pan: '0'
|
||||
patterns:
|
||||
- name: clap01.ogg
|
||||
pos: '0'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: clap01.ogg
|
||||
pos: '192'
|
||||
steps:
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- name: clap01.ogg
|
||||
pos: '384'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: clap01.ogg
|
||||
pos: '576'
|
||||
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:
|
||||
@@ -235,8 +547,86 @@ tracks:
|
||||
instrument_name: tom01.ogg
|
||||
instrument_type: '0'
|
||||
pan: '0'
|
||||
patterns:
|
||||
- name: tom01.ogg
|
||||
pos: '0'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: tom01.ogg
|
||||
pos: '192'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: tom01.ogg
|
||||
pos: '384'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: tom01.ogg
|
||||
pos: '576'
|
||||
steps:
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
pitch: '0'
|
||||
pitchrange: '1'
|
||||
plugin_name: audiofileprocessor
|
||||
usemasterpitch: '1'
|
||||
vol: '100'
|
||||
- audiofileprocessor:
|
||||
@@ -254,8 +644,86 @@ tracks:
|
||||
instrument_name: tom02.ogg
|
||||
instrument_type: '0'
|
||||
pan: '0'
|
||||
patterns:
|
||||
- name: tom02.ogg
|
||||
pos: '0'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: tom02.ogg
|
||||
pos: '192'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: tom02.ogg
|
||||
pos: '384'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: tom02.ogg
|
||||
pos: '576'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
pitch: '0'
|
||||
pitchrange: '1'
|
||||
plugin_name: audiofileprocessor
|
||||
usemasterpitch: '1'
|
||||
vol: '100'
|
||||
- audiofileprocessor:
|
||||
@@ -273,8 +741,86 @@ tracks:
|
||||
instrument_name: zap02.ogg
|
||||
instrument_type: '0'
|
||||
pan: '0'
|
||||
patterns:
|
||||
- name: zap02.ogg
|
||||
pos: '0'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: zap02.ogg
|
||||
pos: '192'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: zap02.ogg
|
||||
pos: '384'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: zap02.ogg
|
||||
pos: '576'
|
||||
steps:
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
pitch: '0'
|
||||
pitchrange: '1'
|
||||
plugin_name: audiofileprocessor
|
||||
usemasterpitch: '1'
|
||||
vol: '100'
|
||||
- audiofileprocessor:
|
||||
@@ -292,8 +838,86 @@ tracks:
|
||||
instrument_name: hihat_opened01.ogg
|
||||
instrument_type: '0'
|
||||
pan: '0'
|
||||
patterns:
|
||||
- name: hihat_opened01.ogg
|
||||
pos: '0'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: hihat_opened01.ogg
|
||||
pos: '192'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: hihat_opened01.ogg
|
||||
pos: '384'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: hihat_opened01.ogg
|
||||
pos: '576'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
pitch: '0'
|
||||
pitchrange: '1'
|
||||
plugin_name: audiofileprocessor
|
||||
usemasterpitch: '1'
|
||||
vol: '100'
|
||||
- audiofileprocessor:
|
||||
@@ -311,8 +935,86 @@ tracks:
|
||||
instrument_name: metronome01.ogg
|
||||
instrument_type: '0'
|
||||
pan: '0'
|
||||
patterns:
|
||||
- name: metronome01.ogg
|
||||
pos: '0'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: metronome01.ogg
|
||||
pos: '192'
|
||||
steps:
|
||||
- true
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: metronome01.ogg
|
||||
pos: '384'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: metronome01.ogg
|
||||
pos: '576'
|
||||
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:
|
||||
@@ -330,8 +1032,86 @@ tracks:
|
||||
instrument_name: metronome02.ogg
|
||||
instrument_type: '0'
|
||||
pan: '0'
|
||||
patterns:
|
||||
- name: metronome02.ogg
|
||||
pos: '0'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: metronome02.ogg
|
||||
pos: '192'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- name: metronome02.ogg
|
||||
pos: '384'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: metronome02.ogg
|
||||
pos: '576'
|
||||
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
|
||||
|
||||
+2048
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
+50064
-6412
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
+75
-2
@@ -9,7 +9,6 @@ tags:
|
||||
bassline:
|
||||
- Beat/Bassline 0
|
||||
plugin:
|
||||
- ''
|
||||
- bitinvader
|
||||
sample: []
|
||||
tracks:
|
||||
@@ -20,8 +19,45 @@ tracks:
|
||||
instrument_name: Alien clKick 05b1
|
||||
instrument_type: '0'
|
||||
pan: '0'
|
||||
patterns:
|
||||
- name: Alien clKick 05b1
|
||||
pos: '0'
|
||||
steps:
|
||||
- true
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- true
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
pitch: '-2800'
|
||||
pitchrange: '28'
|
||||
plugin_name: bitinvader
|
||||
usemasterpitch: '1'
|
||||
vol: '60'
|
||||
- basenote: '69'
|
||||
@@ -29,11 +65,48 @@ tracks:
|
||||
instrument_name: Alien Snare Dry 02
|
||||
instrument_type: '0'
|
||||
pan: '0'
|
||||
patterns:
|
||||
- name: ''
|
||||
pos: '0'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- true
|
||||
- true
|
||||
- false
|
||||
pitch: '-1200'
|
||||
pitchrange: '12'
|
||||
plugin_name: bitinvader
|
||||
usemasterpitch: '1'
|
||||
vol: '100'
|
||||
tags: ''
|
||||
tags: bitinvader
|
||||
type: bassline
|
||||
- arpeggiator:
|
||||
arp: '0'
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -166,8 +166,48 @@ tracks:
|
||||
instrument_name: Kicker
|
||||
instrument_type: '0'
|
||||
pan: '0'
|
||||
patterns:
|
||||
- name: Kicker
|
||||
pos: '0'
|
||||
steps:
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: Kicker
|
||||
pos: '192'
|
||||
steps:
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
pitch: '0'
|
||||
pitchrange: '1'
|
||||
plugin_name: kicker
|
||||
usemasterpitch: '1'
|
||||
vol: '104'
|
||||
- audiofileprocessor:
|
||||
@@ -185,8 +225,48 @@ tracks:
|
||||
instrument_name: errie_ride.ds
|
||||
instrument_type: '0'
|
||||
pan: '0'
|
||||
patterns:
|
||||
- name: errie_ride.ds
|
||||
pos: '0'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: errie_ride.ds
|
||||
pos: '192'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
pitch: '0'
|
||||
pitchrange: '1'
|
||||
plugin_name: audiofileprocessor
|
||||
usemasterpitch: '1'
|
||||
vol: '100'
|
||||
- audiofileprocessor:
|
||||
@@ -204,8 +284,48 @@ tracks:
|
||||
instrument_name: coo.ds
|
||||
instrument_type: '0'
|
||||
pan: '0'
|
||||
patterns:
|
||||
- name: coo.ds
|
||||
pos: '0'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: coo.ds
|
||||
pos: '192'
|
||||
steps:
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- true
|
||||
- false
|
||||
- false
|
||||
pitch: '0'
|
||||
pitchrange: '1'
|
||||
plugin_name: audiofileprocessor
|
||||
usemasterpitch: '1'
|
||||
vol: '31.200001'
|
||||
- audiofileprocessor:
|
||||
@@ -223,8 +343,48 @@ tracks:
|
||||
instrument_name: house_loop01.ogg
|
||||
instrument_type: '0'
|
||||
pan: '0'
|
||||
patterns:
|
||||
- name: house_loop01.ogg
|
||||
pos: '0'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: house_loop01.ogg
|
||||
pos: '192'
|
||||
steps:
|
||||
- true
|
||||
- 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:
|
||||
@@ -242,8 +402,48 @@ tracks:
|
||||
instrument_name: cheap_fx.ds
|
||||
instrument_type: '0'
|
||||
pan: '0'
|
||||
patterns:
|
||||
- name: cheap_fx.ds
|
||||
pos: '0'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: cheap_fx.ds
|
||||
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:
|
||||
@@ -261,8 +461,48 @@ tracks:
|
||||
instrument_name: cold_shot.ds
|
||||
instrument_type: '0'
|
||||
pan: '0'
|
||||
patterns:
|
||||
- name: cold_shot.ds
|
||||
pos: '0'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: cold_shot.ds
|
||||
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:
|
||||
@@ -280,8 +520,48 @@ tracks:
|
||||
instrument_name: depth_fx.ds
|
||||
instrument_type: '0'
|
||||
pan: '0'
|
||||
patterns:
|
||||
- name: depth_fx.ds
|
||||
pos: '0'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: depth_fx.ds
|
||||
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:
|
||||
@@ -299,8 +579,48 @@ tracks:
|
||||
instrument_name: hello_q.ds
|
||||
instrument_type: '0'
|
||||
pan: '0'
|
||||
patterns:
|
||||
- name: hello_q.ds
|
||||
pos: '0'
|
||||
steps:
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- false
|
||||
- name: hello_q.ds
|
||||
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
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
+153
-98
@@ -9,25 +9,38 @@ title: "{{ page.file }}"
|
||||
<div class="container">
|
||||
<br>
|
||||
|
||||
<h1 class="title is-3 mb-4"><code>{{ page.file }}</h1></code>
|
||||
<h1 class="title is-3 mb-4"><code>{{ page.file }}</code></h1>
|
||||
|
||||
{% if page.file or page.bpm %}
|
||||
<div class="mb-5">
|
||||
<div class="columns is-mobile is-multiline is-vcentered">
|
||||
{% if page.file %}
|
||||
<div class="column is-narrow">
|
||||
<span><strong><code>📁 Arquivo:</strong> {{ page.file }}</span></code>
|
||||
<span><strong><code>📁 Arquivo:</code></strong> {{ page.file }}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if page.bpm %}
|
||||
<div class="column is-narrow">
|
||||
<span><strong><code>🎵 BPM:</strong> {{ page.bpm }}</span></code>
|
||||
<span><strong><code>🎵 BPM:</code></strong> {{ page.bpm }}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% assign audio_file_path = '/mmp/wav/' | append: page.file | append: '.wav' %}
|
||||
{% if page.file %}
|
||||
<section class="audio-player-section mb-6">
|
||||
<audio controls>
|
||||
<source src="{{ audio_file_path | relative_url }}" type="audio/wav">
|
||||
{% assign audio_ogg_path = '/mmp/ogg/' | append: page.file | append: '.ogg' %}
|
||||
<source src="{{ audio_ogg_path | relative_url }}" type="audio/ogg">
|
||||
Seu navegador não suporta o elemento <code>audio</code>.
|
||||
</audio>
|
||||
</section>
|
||||
{% endif %}
|
||||
|
||||
|
||||
<div class="columns">
|
||||
|
||||
<div class="column is-two-thirds">
|
||||
@@ -35,36 +48,25 @@ title: "{{ page.file }}"
|
||||
{% if page.tags %}
|
||||
{% assign tags_vazias = true %}
|
||||
{% for categoria in page.tags %}
|
||||
{% if categoria[1].size > 0 %}
|
||||
{% if categoria[1] and categoria[1].size > 0 %}
|
||||
{% assign tags_vazias = false %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% unless tags_vazias %}
|
||||
<section class="tags-section mb-6">
|
||||
{% assign audio_file = '/mmp/wav/' | append: page.file | append: '.wav' %}
|
||||
|
||||
{% if audio_file %}
|
||||
<section class="audio-player-section mb-6">
|
||||
<audio controls>
|
||||
<source src="{{ audio_file | relative_url }}" type="audio/wav">
|
||||
Seu navegador não suporta o elemento <code>audio</code>.
|
||||
</audio>
|
||||
</section>
|
||||
{% endif %}
|
||||
<details>
|
||||
<summary class="title is-5" style="cursor: pointer; padding-left: 0;">
|
||||
<code>🏷️ Tags</code>
|
||||
<code>🏷️ Tags</code>
|
||||
</summary>
|
||||
{% for categoria in page.tags %}
|
||||
{% if categoria[1].size > 0 %}
|
||||
{% if categoria[1] and categoria[1].size > 0 %}
|
||||
<div class="mb-4">
|
||||
<strong><code>{{ categoria[0] }}:</strong></code>
|
||||
<strong><code>{{ categoria[0] }}:</code></strong>
|
||||
<div class="tags mt-2">
|
||||
{% for valor in categoria[1] %}
|
||||
{% if valor != "" %}
|
||||
{% assign tag_slug = valor | replace: ' ', '+' %}
|
||||
|
||||
{% if categoria[0] == 'bassline' %}
|
||||
<a href="{{ '/bassline/?bassline=' | append: tag_slug | relative_url }}" class="tag is-info is-light">{{ valor }}</a>
|
||||
{% elsif categoria[0] == 'sample' %}
|
||||
@@ -82,102 +84,154 @@ title: "{{ page.file }}"
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</details>
|
||||
</section>
|
||||
</details>
|
||||
{% endunless %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.tracks and page.tracks.size > 0 %}
|
||||
<section class="instruments-section">
|
||||
<details open>
|
||||
<summary class="title is-5" style="cursor: pointer; padding-left: 0;">
|
||||
<code>🎚️ Instrumentos </code>
|
||||
</summary>
|
||||
|
||||
{% comment %}
|
||||
USANDO <details> PARA CRIAR UM ACORDION NATIVO:
|
||||
O atributo "open" (se presente) mantém a lista expandida.
|
||||
O <summary> é o título clicável que o usuário vê.
|
||||
{% endcomment %}
|
||||
<details>
|
||||
<summary class="title is-5" style="cursor: pointer; padding-left: 0;">
|
||||
<code>🎚️ Instrumentos </code>
|
||||
</summary>
|
||||
|
||||
<div class="content mt-3">
|
||||
<ul style="list-style: none; padding-left: 0;">
|
||||
{% for track in page.tracks %}
|
||||
{% assign tem_instr = false %}
|
||||
{% if track.instruments and track.instruments.size > 0 %}
|
||||
{% assign tem_instr = true %}
|
||||
<div class="content mt-3">
|
||||
<ul style="list-style: none; padding-left: 0;">
|
||||
{% for track in page.tracks %}
|
||||
{% assign tem_instr = false %}
|
||||
{% if track.instruments and track.instruments.size > 0 %}
|
||||
{% assign tem_instr = true %}
|
||||
{% endif %}
|
||||
|
||||
{% if track.bassline_name or tem_instr %}
|
||||
<li class="mb-5">
|
||||
{% if track.bassline_name %}
|
||||
<p class="has-text-weight-bold mb-2">🎼 {{ track.bassline_name }}</p>
|
||||
{% endif %}
|
||||
|
||||
{% if track.bassline_name or tem_instr %}
|
||||
<li class="mb-5">
|
||||
{% if track.bassline_name %}
|
||||
<p class="has-text-weight-bold mb-2">🎼 {{ track.bassline_name }}</p>
|
||||
{% endif %}
|
||||
|
||||
{% if tem_instr %}
|
||||
<ul class="pl-4">
|
||||
{% for instrument in track.instruments %}
|
||||
{% if instrument.instrument_name %}
|
||||
<li style="margin-bottom: 0.4rem;">
|
||||
{% assign instrument_slug = instrument.instrument_name | replace: ' ', '+' %}
|
||||
<a href="{{ '/instruments/?instrument=' | append: instrument_slug | relative_url }}" class="tag is-info is-light">
|
||||
<code>{{ instrument.instrument_name }}</code>
|
||||
</a>
|
||||
|
||||
{% comment %}
|
||||
VERIFICAÇÃO DE SAMPLE:
|
||||
Se `audiofileprocessor` existir E `src` existir E `src` não for vazio, exibe o player.
|
||||
{% endcomment %}
|
||||
{% assign sample_src = instrument.audiofileprocessor.src | default: "" | strip %}
|
||||
|
||||
{% 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>
|
||||
<source
|
||||
src="{{ audio_filename_with_path | relative_url }}"
|
||||
type="audio/ogg"
|
||||
>
|
||||
|
||||
{% assign wav_path = audio_filename_with_path | replace: '.ogg', '.wav' %}
|
||||
<source
|
||||
src="{{ wav_path | relative_url }}"
|
||||
type="audio/wav"
|
||||
>
|
||||
|
||||
Seu navegador não suporta o elemento <code>audio</code>.
|
||||
</audio>
|
||||
</div>
|
||||
{% else %}
|
||||
{% comment %} CONDIÇÃO DE MENSAGEM: O sample não foi enviado! {% endcomment %}
|
||||
<p class="has-text-danger is-size-7 mt-3">
|
||||
O sample **não foi enviado** 😢
|
||||
</p>
|
||||
{% if tem_instr %}
|
||||
<ul class="pl-4">
|
||||
{% for instrument in track.instruments %}
|
||||
{% if instrument.instrument_name %}
|
||||
<li style="margin-bottom: 0.4rem;">
|
||||
|
||||
<div style="display: flex; align-items: center; gap: 8px;">
|
||||
{% 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 %}
|
||||
</li>
|
||||
|
||||
{% 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>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
{% comment %}
|
||||
LOOP para múltiplos patterns com rótulo P1, P2, P3.
|
||||
{% endcomment %}
|
||||
{% for pattern in instrument.patterns %}
|
||||
{% assign pattern_steps = pattern.steps %}
|
||||
|
||||
{% if pattern_steps and pattern_steps.size > 0 %}
|
||||
<div class="mt-2" style="display: flex; align-items: center; gap: 4px;">
|
||||
|
||||
<span class="is-size-7 has-text-grey-light">
|
||||
P{{ forloop.index }}:
|
||||
</span>
|
||||
|
||||
{% comment %}
|
||||
>>> INÍCIO DA LÓGICA DE STEPS MELHORADA <<<
|
||||
Container da grade de steps
|
||||
{% endcomment %}
|
||||
<div style="display: flex; flex-direction: row; border: 1px solid #ccc; padding: 2px; border-radius: 2px; background-color: #f0f0f0;">
|
||||
{% for step_active in pattern_steps %}
|
||||
|
||||
{% comment %} Define a cor do step {% endcomment %}
|
||||
{% assign step_color = '#d9d9d9' %} {% comment %} Cor INATIVA (cinza claro) {% endcomment %}
|
||||
{% if step_active == true or step_active == 'true' or step_active == 1 %}
|
||||
{% assign step_color = '#4caf50' %} {% comment %} Cor ATIVA (verde) {% endcomment %}
|
||||
{% endif %}
|
||||
|
||||
{% comment %} Define o espaçamento (divisão do compasso) {% endcomment %}
|
||||
{% assign step_style = '' %}
|
||||
{% assign step_index_zero_based = forloop.index0 %}
|
||||
|
||||
{% comment %} --- Calcula o módulo *antes* do 'if' --- {% endcomment %}
|
||||
{% assign remainder = step_index_zero_based | modulo: 4 %}
|
||||
|
||||
{% if step_index_zero_based > 0 and remainder == 0 %}
|
||||
{% assign step_style = 'margin-left: 3px;' %}
|
||||
{% endif %}
|
||||
|
||||
<div
|
||||
style="width: 5px; height: 10px; background-color: {{ step_color }}; border-radius: 1px; {{ step_style }}"
|
||||
></div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% comment %} >>> FIM DA LÓGICA DE STEPS MELHORADA <<< {% endcomment %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
|
||||
{% comment %} Player de áudio e condição de sample ausente {% endcomment %}
|
||||
{% assign sample_src = instrument.audiofileprocessor.src | default: "" | strip %}
|
||||
|
||||
{% 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>
|
||||
<source
|
||||
src="{{ audio_filename_with_path | relative_url }}"
|
||||
type="audio/ogg"
|
||||
>
|
||||
{% assign wav_path = audio_filename_with_path | replace: '.ogg', '.wav' %}
|
||||
<source
|
||||
src="{{ wav_path | relative_url }}"
|
||||
type="audio/wav"
|
||||
>
|
||||
Seu navegador não suporta o elemento <code>audio</code>.
|
||||
</audio>
|
||||
</div>
|
||||
{% else %}
|
||||
<p class="has-text-danger is-size-7 mt-3">
|
||||
O sample **não foi enviado** 😢
|
||||
</p>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</details>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</details>
|
||||
|
||||
</section>
|
||||
{% endif %}
|
||||
</div> <div class="column is-one-third" height="800px" widht="800px">
|
||||
<div class="box p-4 has-background-info-light" height="800px" widht="800px">
|
||||
</div>
|
||||
|
||||
<div class="column is-one-third">
|
||||
<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>
|
||||
|
||||
{% comment %}
|
||||
CONSTRUÇÃO DA URL CORRIGIDA PARA AMBIENTES DE TESTE:
|
||||
- O filtro `relative_url` foi removido para evitar a duplicação do caminho.
|
||||
- O prefixo de teste `/~jotachina/mmpSearch/` foi adicionado manualmente.
|
||||
CONSTRUÇÃO DA URL CORRIGIDA PARA AMBIENTES DE TESTE:
|
||||
{% endcomment %}
|
||||
{% 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
|
||||
href="{{ creation_url }}"
|
||||
target="_blank"
|
||||
@@ -190,7 +244,7 @@ title: "{{ page.file }}"
|
||||
Arquivo: <code>{{ page.file }}</code>
|
||||
</p>
|
||||
|
||||
<div class="mt-4 is-hidden-mobile" height="800px" widht="800px">
|
||||
<div class="mt-4 is-hidden-mobile">
|
||||
{% assign embed_url = creation_url | append: '&embed=true' %}
|
||||
|
||||
<iframe
|
||||
@@ -201,7 +255,8 @@ title: "{{ page.file }}"
|
||||
</iframe>
|
||||
</div>
|
||||
</div>
|
||||
</div> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</main>
|
||||
</div>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,135 +1,247 @@
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
# -----------------------------------------------------------
|
||||
# FUNÇÃO AUXILIAR: CALCULAR STEPS A PARTIR DE POSIÇÕES DE NOTAS
|
||||
# (Esta função é necessária para a injeção de steps)
|
||||
# -----------------------------------------------------------
|
||||
|
||||
def calculate_steps_from_notes(pattern_element, ticks_per_step=12):
|
||||
"""
|
||||
Calcula o array de steps [True, False, ...] a partir das notas XML.
|
||||
|
||||
:param pattern_element: O objeto ElementTree para a tag <pattern>.
|
||||
:param ticks_per_step: O número de ticks por step (12 para 1/16 no LMMS).
|
||||
:return: Um array de booleanos representando os steps marcados.
|
||||
"""
|
||||
try:
|
||||
# Pega o número total de steps (ex: 16, 64)
|
||||
total_steps = int(pattern_element.attrib.get('steps', 16))
|
||||
except ValueError:
|
||||
total_steps = 16
|
||||
|
||||
steps = [False] * total_steps
|
||||
|
||||
notes = pattern_element.findall('note')
|
||||
|
||||
for note in notes:
|
||||
try:
|
||||
# Posição da nota em ticks
|
||||
note_pos_ticks = int(note.attrib.get('pos', 0))
|
||||
|
||||
# Converte a posição em ticks para o índice do step (arredondando)
|
||||
step_index = round(note_pos_ticks / ticks_per_step)
|
||||
|
||||
if 0 <= step_index < total_steps:
|
||||
steps[step_index] = True
|
||||
except ValueError:
|
||||
# Ignora notas com posição inválida
|
||||
continue
|
||||
|
||||
return steps
|
||||
|
||||
# -----------------------------------------------------------
|
||||
# FUNÇÃO PRINCIPAL: PARSE_BASSLINES (MESCLADA)
|
||||
# -----------------------------------------------------------
|
||||
|
||||
def parse_basslines(track):
|
||||
"""
|
||||
Processa uma track <track type="1"> (Beat/Bassline), extrai todos os seus
|
||||
instrumentos (sub-tracks), coleta detalhes e calcula os steps
|
||||
para cada pattern.
|
||||
"""
|
||||
|
||||
# Nome da track principal (ex: "Beat/Bassline 0")
|
||||
track_name = track.attrib.get('name', 'N/A')
|
||||
bbtrack = track.find('./bbtrack')
|
||||
instruments = []
|
||||
tags = ''
|
||||
|
||||
# 'tags' agora é usado para coletar os tipos de plugins para o retorno
|
||||
plugin_tags = set()
|
||||
|
||||
if bbtrack is not None:
|
||||
for container in bbtrack.findall('./trackcontainer'):
|
||||
for instrument_track in container.findall('./track'):
|
||||
instrument_info = {}
|
||||
instrument_info['instrument_name'] = instrument_track.attrib.get('name', 'N/A')
|
||||
instrument_info['instrument_type'] = instrument_track.attrib.get('type', 'N/A')
|
||||
#print(instrument_info['tags'])
|
||||
# <instrumenttrack>
|
||||
instrumenttrack = instrument_track.find('./instrumenttrack')
|
||||
if instrumenttrack is not None:
|
||||
instrument_info.update({
|
||||
'pitch': instrumenttrack.attrib.get('pitch', ''),
|
||||
'pan': instrumenttrack.attrib.get('pan', ''),
|
||||
'vol': instrumenttrack.attrib.get('vol', ''),
|
||||
'pitchrange': instrumenttrack.attrib.get('pitchrange', ''),
|
||||
'basenote': instrumenttrack.attrib.get('basenote', ''),
|
||||
'fxch': instrumenttrack.attrib.get('fxch', ''),
|
||||
'usemasterpitch': instrumenttrack.attrib.get('usemasterpitch', '')
|
||||
})
|
||||
if bbtrack is None:
|
||||
# Se não houver bbtrack, pode ser uma bassline vazia (como a 1 e 2)
|
||||
return {
|
||||
'bassline_name': track_name,
|
||||
'type': 'bassline',
|
||||
'tags': '', # Retorna tag vazia
|
||||
'instruments': instruments # Retorna lista vazia
|
||||
}
|
||||
|
||||
# <audiofileprocessor>
|
||||
audiofileprocessor = instrument_track.find('.//audiofileprocessor')
|
||||
if audiofileprocessor is not None:
|
||||
if 'audiofileprocessor' not in tags:
|
||||
tags = 'audiofileprocessor'
|
||||
instrument_info['audiofileprocessor'] = {
|
||||
'amp': audiofileprocessor.attrib.get('amp', ''),
|
||||
'src': audiofileprocessor.attrib.get('src', ''),
|
||||
'lframe': audiofileprocessor.attrib.get('lframe', ''),
|
||||
'stutter': audiofileprocessor.attrib.get('stutter', ''),
|
||||
'interp': audiofileprocessor.attrib.get('interp', ''),
|
||||
'sframe': audiofileprocessor.attrib.get('sframe', ''),
|
||||
'looped': audiofileprocessor.attrib.get('looped', ''),
|
||||
'eframe': audiofileprocessor.attrib.get('eframe', ''),
|
||||
'reversed': audiofileprocessor.attrib.get('reversed', ''),
|
||||
for container in bbtrack.findall('./trackcontainer'):
|
||||
# Itera sobre cada instrumento (sub-track tipo 0) dentro da bassline
|
||||
for instrument_track in container.findall('./track'):
|
||||
instrument_info = {}
|
||||
|
||||
# Pega o nome do instrumento (ex: "kicker", "snare_hiphop02.ogg")
|
||||
instrument_info['instrument_name'] = instrument_track.attrib.get('name', 'N/A')
|
||||
instrument_info['instrument_type'] = instrument_track.attrib.get('type', 'N/A')
|
||||
|
||||
# --- Início da Coleta de Detalhes (da sua função base) ---
|
||||
|
||||
# <instrumenttrack>
|
||||
instrumenttrack = instrument_track.find('./instrumenttrack')
|
||||
if instrumenttrack is not None:
|
||||
instrument_info.update({
|
||||
'pitch': instrumenttrack.attrib.get('pitch', ''),
|
||||
'pan': instrumenttrack.attrib.get('pan', ''),
|
||||
'vol': instrumenttrack.attrib.get('vol', ''),
|
||||
'pitchrange': instrumenttrack.attrib.get('pitchrange', ''),
|
||||
'basenote': instrumenttrack.attrib.get('basenote', ''),
|
||||
'fxch': instrumenttrack.attrib.get('fxch', ''),
|
||||
'usemasterpitch': instrumenttrack.attrib.get('usemasterpitch', '')
|
||||
})
|
||||
|
||||
# Adiciona o nome real do plugin (kicker, audiofileprocessor, etc.)
|
||||
instrument_tag = instrument_track.find('.//instrument')
|
||||
if instrument_tag is not None:
|
||||
plugin_name = instrument_tag.attrib.get('name')
|
||||
if plugin_name:
|
||||
plugin_tags.add(plugin_name) # Adiciona à tag da bassline
|
||||
instrument_info['plugin_name'] = plugin_name # Salva o nome do plugin
|
||||
|
||||
# <audiofileprocessor>
|
||||
audiofileprocessor = instrument_track.find('.//audiofileprocessor')
|
||||
if audiofileprocessor is not None:
|
||||
instrument_info['audiofileprocessor'] = {
|
||||
'amp': audiofileprocessor.attrib.get('amp', ''),
|
||||
'src': audiofileprocessor.attrib.get('src', ''),
|
||||
'lframe': audiofileprocessor.attrib.get('lframe', ''),
|
||||
'stutter': audiofileprocessor.attrib.get('stutter', ''),
|
||||
'interp': audiofileprocessor.attrib.get('interp', ''),
|
||||
'sframe': audiofileprocessor.attrib.get('sframe', ''),
|
||||
'looped': audiofileprocessor.attrib.get('looped', ''),
|
||||
'eframe': audiofileprocessor.attrib.get('eframe', ''),
|
||||
'reversed': audiofileprocessor.attrib.get('reversed', ''),
|
||||
}
|
||||
|
||||
# <eldata>
|
||||
eldata = instrument_track.find('./eldata')
|
||||
if eldata is not None:
|
||||
eldata_info = {
|
||||
'fwet': eldata.attrib.get('fwet', ''),
|
||||
'ftype': eldata.attrib.get('ftype', ''),
|
||||
'fcut': eldata.attrib.get('fcut', ''),
|
||||
'fres': eldata.attrib.get('fres', '')
|
||||
}
|
||||
|
||||
elvol = eldata.find('./elvol')
|
||||
if elvol is not None:
|
||||
eldata_info['elvol'] = {
|
||||
'sustain': elvol.attrib.get('sustain', ''),
|
||||
'lamt': elvol.attrib.get('lamt', ''),
|
||||
'lshp': elvol.attrib.get('lshp', ''),
|
||||
'amt': elvol.attrib.get('amt', ''),
|
||||
'pdel': elvol.attrib.get('pdel', ''),
|
||||
'lpdel': elvol.attrib.get('lpdel', ''),
|
||||
'lspd_numerator': elvol.attrib.get('lspd_numerator', ''),
|
||||
'lspd_syncmode': elvol.attrib.get('lspd_syncmode', ''),
|
||||
'latt': elvol.attrib.get('latt', ''),
|
||||
'ctlenvamt': elvol.attrib.get('ctlenvamt', ''),
|
||||
'x100': elvol.attrib.get('x100', ''),
|
||||
'dec': elvol.attrib.get('dec', ''),
|
||||
'hold': elvol.attrib.get('hold', ''),
|
||||
'rel': elvol.attrib.get('rel', ''),
|
||||
'lspd_denominator': elvol.attrib.get('lspd_denominator', ''),
|
||||
'userwavefile': elvol.attrib.get('userwavefile', ''),
|
||||
'att': elvol.attrib.get('att', ''),
|
||||
'lspd': elvol.attrib.get('lspd', '')
|
||||
}
|
||||
|
||||
# <eldata>
|
||||
eldata = instrument_track.find('./eldata')
|
||||
if eldata is not None:
|
||||
eldata_info = {
|
||||
'fwet': eldata.attrib.get('fwet', ''),
|
||||
'ftype': eldata.attrib.get('ftype', ''),
|
||||
'fcut': eldata.attrib.get('fcut', ''),
|
||||
'fres': eldata.attrib.get('fres', '')
|
||||
elcut = eldata.find('./elcut')
|
||||
if elcut is not None:
|
||||
eldata_info['elcut'] = {
|
||||
'cutoff': elcut.attrib.get('cutoff', ''),
|
||||
'q': elcut.attrib.get('q', '')
|
||||
}
|
||||
|
||||
elvol = eldata.find('./elvol')
|
||||
if elvol is not None:
|
||||
eldata_info['elvol'] = {
|
||||
'sustain': elvol.attrib.get('sustain', ''),
|
||||
'lamt': elvol.attrib.get('lamt', ''),
|
||||
'lshp': elvol.attrib.get('lshp', ''),
|
||||
'amt': elvol.attrib.get('amt', ''),
|
||||
'pdel': elvol.attrib.get('pdel', ''),
|
||||
'lpdel': elvol.attrib.get('lpdel', ''),
|
||||
'lspd_numerator': elvol.attrib.get('lspd_numerator', ''),
|
||||
'lspd_syncmode': elvol.attrib.get('lspd_syncmode', ''),
|
||||
'latt': elvol.attrib.get('latt', ''),
|
||||
'ctlenvamt': elvol.attrib.get('ctlenvamt', ''),
|
||||
'x100': elvol.attrib.get('x100', ''),
|
||||
'dec': elvol.attrib.get('dec', ''),
|
||||
'hold': elvol.attrib.get('hold', ''),
|
||||
'rel': elvol.attrib.get('rel', ''),
|
||||
'lspd_denominator': elvol.attrib.get('lspd_denominator', ''),
|
||||
'userwavefile': elvol.attrib.get('userwavefile', ''),
|
||||
'att': elvol.attrib.get('att', ''),
|
||||
'lspd': elvol.attrib.get('lspd', '')
|
||||
}
|
||||
|
||||
elcut = eldata.find('./elcut')
|
||||
if elcut is not None:
|
||||
eldata_info['elcut'] = {
|
||||
'cutoff': elcut.attrib.get('cutoff', ''),
|
||||
'q': elcut.attrib.get('q', '')
|
||||
}
|
||||
|
||||
elres = eldata.find('./elres')
|
||||
if elres is not None:
|
||||
eldata_info['elres'] = {
|
||||
'res': elres.attrib.get('res', '')
|
||||
}
|
||||
|
||||
instrument_info['eldata'] = eldata_info
|
||||
|
||||
# <chordcreator>
|
||||
chordcreator = instrument_track.find('./chordcreator')
|
||||
if chordcreator is not None:
|
||||
instrument_info['chordcreator'] = {
|
||||
'chord_enabled': chordcreator.attrib.get('chord-enabled', ''),
|
||||
'chordrange': chordcreator.attrib.get('chordrange', ''),
|
||||
'chord': chordcreator.attrib.get('chord', '')
|
||||
elres = eldata.find('./elres')
|
||||
if elres is not None:
|
||||
eldata_info['elres'] = {
|
||||
'res': elres.attrib.get('res', '')
|
||||
}
|
||||
|
||||
# <arpeggiator>
|
||||
arpeggiator = instrument_track.find('./arpeggiator')
|
||||
if arpeggiator is not None:
|
||||
instrument_info['arpeggiator'] = {
|
||||
'arptime': arpeggiator.attrib.get('arptime', ''),
|
||||
'arpmode': arpeggiator.attrib.get('arpmode', ''),
|
||||
'arp': arpeggiator.attrib.get('arp', ''),
|
||||
'arprange': arpeggiator.attrib.get('arprange', '')
|
||||
}
|
||||
instrument_info['eldata'] = eldata_info
|
||||
|
||||
# <midiport>
|
||||
midiport = instrument_track.find('./midiport')
|
||||
if midiport is not None:
|
||||
instrument_info['midiport'] = {
|
||||
'outputprogram': midiport.attrib.get('outputprogram', ''),
|
||||
'inputchannel': midiport.attrib.get('inputchannel', ''),
|
||||
'outputcontroller': midiport.attrib.get('outputcontroller', ''),
|
||||
'inputcontroller': midiport.attrib.get('inputcontroller', ''),
|
||||
'outputchannel': midiport.attrib.get('outputchannel', ''),
|
||||
'writable': midiport.attrib.get('writable', ''),
|
||||
'fixedinputvelocity': midiport.attrib.get('fixedinputvelocity', ''),
|
||||
'basevelocity': midiport.attrib.get('basevelocity', ''),
|
||||
'readable': midiport.attrib.get('readable', ''),
|
||||
'fixedoutputvelocity': midiport.attrib.get('fixedoutputvelocity', ''),
|
||||
'fixedoutputnote': midiport.attrib.get('fixedoutputnote', '')
|
||||
}
|
||||
# <chordcreator>
|
||||
chordcreator = instrument_track.find('./chordcreator')
|
||||
if chordcreator is not None:
|
||||
instrument_info['chordcreator'] = {
|
||||
'chord_enabled': chordcreator.attrib.get('chord-enabled', ''),
|
||||
'chordrange': chordcreator.attrib.get('chordrange', ''),
|
||||
'chord': chordcreator.attrib.get('chord', '')
|
||||
}
|
||||
|
||||
instruments.append(instrument_info)
|
||||
# <arpeggiator>
|
||||
arpeggiator = instrument_track.find('./arpeggiator')
|
||||
if arpeggiator is not None:
|
||||
instrument_info['arpeggiator'] = {
|
||||
'arptime': arpeggiator.attrib.get('arptime', ''),
|
||||
'arpmode': arpeggiator.attrib.get('arpmode', ''),
|
||||
'arp': arpeggiator.attrib.get('arp', ''),
|
||||
'arprange': arpeggiator.attrib.get('arprange', '')
|
||||
}
|
||||
|
||||
# <midiport>
|
||||
midiport = instrument_track.find('./midiport')
|
||||
if midiport is not None:
|
||||
instrument_info['midiport'] = {
|
||||
'outputprogram': midiport.attrib.get('outputprogram', ''),
|
||||
'inputchannel': midiport.attrib.get('inputchannel', ''),
|
||||
'outputcontroller': midiport.attrib.get('outputcontroller', ''),
|
||||
'inputcontroller': midiport.attrib.get('inputcontroller', ''),
|
||||
'outputchannel': midiport.attrib.get('outputchannel', ''),
|
||||
'writable': midiport.attrib.get('writable', ''),
|
||||
'fixedinputvelocity': midiport.attrib.get('fixedinputvelocity', ''),
|
||||
'basevelocity': midiport.attrib.get('basevelocity', ''),
|
||||
'readable': midiport.attrib.get('readable', ''),
|
||||
'fixedoutputvelocity': midiport.attrib.get('fixedoutputvelocity', ''),
|
||||
'fixedoutputnote': midiport.attrib.get('fixedoutputnote', '')
|
||||
}
|
||||
|
||||
# --- Fim da Coleta de Detalhes ---
|
||||
|
||||
|
||||
# --- INJEÇÃO DA LÓGICA DE STEPS ---
|
||||
# Encontra todos os patterns associados a este instrumento
|
||||
pattern_elements = instrument_track.findall('pattern')
|
||||
patterns_with_steps = []
|
||||
|
||||
for pattern_xml in pattern_elements:
|
||||
# Chama a função auxiliar para calcular o array de steps
|
||||
steps_array = calculate_steps_from_notes(pattern_xml)
|
||||
|
||||
pattern_data = {
|
||||
'name': pattern_xml.attrib.get('name'),
|
||||
'pos': pattern_xml.attrib.get('pos'),
|
||||
'steps': steps_array, # <-- AQUI ESTÃO OS STEPS
|
||||
}
|
||||
patterns_with_steps.append(pattern_data)
|
||||
|
||||
# Adiciona a lista de patterns (com steps) ao instrumento
|
||||
instrument_info['patterns'] = patterns_with_steps
|
||||
# --- FIM DA INJEÇÃO DE STEPS ---
|
||||
|
||||
instruments.append(instrument_info)
|
||||
|
||||
# Lógica de Tags (Melhorada)
|
||||
# Define a tag principal da bassline com base nos plugins encontrados
|
||||
final_tag = ''
|
||||
if 'audiofileprocessor' in plugin_tags:
|
||||
final_tag = 'audiofileprocessor'
|
||||
elif 'kicker' in plugin_tags:
|
||||
final_tag = 'kicker'
|
||||
elif 'tripleoscillator' in plugin_tags:
|
||||
final_tag = 'tripleoscillator'
|
||||
elif plugin_tags:
|
||||
final_tag = list(plugin_tags)[0] # Pega o primeiro que encontrar
|
||||
|
||||
return {
|
||||
'bassline_name': track_name,
|
||||
'type': 'bassline',
|
||||
'tags': tags, #verificar aqui
|
||||
'tags': final_tag,
|
||||
'instruments': instruments
|
||||
}
|
||||
|
||||
# Se este arquivo for executado diretamente, ele não fará nada
|
||||
if __name__ == "__main__":
|
||||
print("Este arquivo contém a função parse_basslines() e deve ser importado por outro script.")
|
||||
Reference in new issue
Block a user