Compare commits
3 Commits
83a52fc76e
...
2153a9d50c
| Author | SHA1 | Date |
|---|---|---|
|
|
2153a9d50c | |
|
|
3e6986e07c | |
|
|
3e6fdfd324 |
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
_data/Um começo.yml
2048
_data/Um começo.yml
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
56476
_data/all.yml
56476
_data/all.yml
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:
|
||||
- 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
|
|
@ -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,198 @@ 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 CLICÁVEIS (4-steps) <<<
|
||||
(O container agora é 'row' para manter os chunks na horizontal)
|
||||
{% endcomment %}
|
||||
<div class="patterns-container" style="display: flex; flex-direction: row; flex-wrap: wrap; gap: 4px;">
|
||||
{% assign total_steps = pattern_steps.size %}
|
||||
{% assign chunk_size = 4 %}
|
||||
|
||||
{% comment %} Calcula quantos pedaços de 4 steps teremos {% endcomment %}
|
||||
{% assign num_chunks = total_steps | divided_by: chunk_size %}
|
||||
|
||||
{% comment %}
|
||||
FIX: Primeiro calculamos o 'resto' e salvamos numa variável
|
||||
{% endcomment %}
|
||||
{% assign remainder = total_steps | modulo: chunk_size %}
|
||||
|
||||
{% comment %}
|
||||
FIX: Agora sim usamos a variável na comparação
|
||||
{% endcomment %}
|
||||
{% if remainder > 0 %}
|
||||
{% assign num_chunks = num_chunks | plus: 1 %}
|
||||
{% endif %}
|
||||
|
||||
{% for i in (0..num_chunks) %}
|
||||
{% assign start_index = i | times: chunk_size %}
|
||||
|
||||
{% comment %} Pega a fatia de 4 steps {% endcomment %}
|
||||
{% 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;">
|
||||
|
||||
{% for step_active in current_chunk_array %}
|
||||
{% assign step_color = '#d9d9d9' %}
|
||||
{% if step_active == true or step_active == 'true' or step_active == 1 %}
|
||||
{% assign step_color = '#4caf50' %}
|
||||
{% endif %}
|
||||
|
||||
<div style="width: 5px; height: 10px; background-color: {{ step_color }}; border-radius: 1px; margin-right: 1px;"></div>
|
||||
{% endfor %}
|
||||
|
||||
{% comment %} Preenche com steps vazios se o chunk for menor que 4 {% endcomment %}
|
||||
{% assign remaining_steps = chunk_size | minus: current_chunk_array.size %}
|
||||
{% if remaining_steps > 0 %}
|
||||
{% for j in (1..remaining_steps) %}
|
||||
<div style="width: 5px; height: 10px; background-color: #d9d9d9; border-radius: 1px; margin-right: 1px;"></div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% comment %} >>> FIM DA LÓGICA DE STEPS CLICÁVEIS <<< {% 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 +288,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 +299,8 @@ title: "{{ page.file }}"
|
|||
</iframe>
|
||||
</div>
|
||||
</div>
|
||||
</div> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</main>
|
||||
</div>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,2 @@
|
|||
{"level":30,"time":1762980056562,"pid":2587819,"hostname":"ubuntu","timestamp":1762980056562,"socketId":"QvekitV8wcwavNWAAAGI","action":{"type":"AUDIO_SNAPSHOT_REQUEST","__token":"1","__senderId":"QvekitV8wcwavNWAAAGI","__senderName":"Alicer-Qvek"},"msg":"action_received"}
|
||||
{"level":30,"time":1762987723672,"pid":2587819,"hostname":"ubuntu","timestamp":1762987723672,"socketId":"KmizFldq5cpxphv5AAGw","action":{"type":"AUDIO_SNAPSHOT_REQUEST","__token":"1","__senderId":"KmizFldq5cpxphv5AAGw","__senderName":"Alicer-Kmiz"},"msg":"action_received"}
|
||||
File diff suppressed because one or more lines are too long
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
|
|
@ -8,7 +8,6 @@
|
|||
"plugin"
|
||||
],
|
||||
"plugin": [
|
||||
"",
|
||||
"nes"
|
||||
],
|
||||
"sample": [],
|
||||
|
|
@ -21,7 +20,7 @@
|
|||
{
|
||||
"bassline_name": "main base",
|
||||
"type": "bassline",
|
||||
"tags": "",
|
||||
"tags": "nes",
|
||||
"instruments": [
|
||||
{
|
||||
"instrument_name": "bass1",
|
||||
|
|
@ -32,7 +31,32 @@
|
|||
"pitchrange": "1",
|
||||
"basenote": "33",
|
||||
"fxch": "0",
|
||||
"usemasterpitch": "1"
|
||||
"usemasterpitch": "1",
|
||||
"plugin_name": "nes",
|
||||
"patterns": [
|
||||
{
|
||||
"name": "bass1",
|
||||
"pos": "0",
|
||||
"steps": [
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
true
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"instrument_name": "noise1",
|
||||
|
|
@ -43,7 +67,32 @@
|
|||
"pitchrange": "1",
|
||||
"basenote": "42",
|
||||
"fxch": "0",
|
||||
"usemasterpitch": "1"
|
||||
"usemasterpitch": "1",
|
||||
"plugin_name": "nes",
|
||||
"patterns": [
|
||||
{
|
||||
"name": "noise1",
|
||||
"pos": "0",
|
||||
"steps": [
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
true
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"instrument_name": "snare",
|
||||
|
|
@ -54,7 +103,32 @@
|
|||
"pitchrange": "1",
|
||||
"basenote": "42",
|
||||
"fxch": "0",
|
||||
"usemasterpitch": "1"
|
||||
"usemasterpitch": "1",
|
||||
"plugin_name": "nes",
|
||||
"patterns": [
|
||||
{
|
||||
"name": "snare",
|
||||
"pos": "0",
|
||||
"steps": [
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
|
|||
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
64084
metadata/all.json
64084
metadata/all.json
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
|
|
@ -8,7 +8,6 @@
|
|||
"plugin"
|
||||
],
|
||||
"plugin": [
|
||||
"",
|
||||
"bitinvader"
|
||||
],
|
||||
"sample": [],
|
||||
|
|
@ -21,7 +20,7 @@
|
|||
{
|
||||
"bassline_name": "Beat/Bassline 0",
|
||||
"type": "bassline",
|
||||
"tags": "",
|
||||
"tags": "bitinvader",
|
||||
"instruments": [
|
||||
{
|
||||
"instrument_name": "Alien clKick 05b1",
|
||||
|
|
@ -32,7 +31,48 @@
|
|||
"pitchrange": "28",
|
||||
"basenote": "69",
|
||||
"fxch": "7",
|
||||
"usemasterpitch": "1"
|
||||
"usemasterpitch": "1",
|
||||
"plugin_name": "bitinvader",
|
||||
"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
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"instrument_name": "Alien Snare Dry 02",
|
||||
|
|
@ -43,7 +83,48 @@
|
|||
"pitchrange": "12",
|
||||
"basenote": "69",
|
||||
"fxch": "8",
|
||||
"usemasterpitch": "1"
|
||||
"usemasterpitch": "1",
|
||||
"plugin_name": "bitinvader",
|
||||
"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
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -192,7 +192,54 @@
|
|||
"pitchrange": "1",
|
||||
"basenote": "57",
|
||||
"fxch": "0",
|
||||
"usemasterpitch": "1"
|
||||
"usemasterpitch": "1",
|
||||
"plugin_name": "kicker",
|
||||
"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
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"instrument_name": "errie_ride.ds",
|
||||
|
|
@ -204,6 +251,7 @@
|
|||
"basenote": "57",
|
||||
"fxch": "0",
|
||||
"usemasterpitch": "1",
|
||||
"plugin_name": "audiofileprocessor",
|
||||
"audiofileprocessor": {
|
||||
"amp": "100",
|
||||
"src": "drumsynth/misc_hats/errie_ride.ds",
|
||||
|
|
@ -214,7 +262,53 @@
|
|||
"looped": "0",
|
||||
"eframe": "1",
|
||||
"reversed": "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
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"instrument_name": "coo.ds",
|
||||
|
|
@ -226,6 +320,7 @@
|
|||
"basenote": "57",
|
||||
"fxch": "0",
|
||||
"usemasterpitch": "1",
|
||||
"plugin_name": "audiofileprocessor",
|
||||
"audiofileprocessor": {
|
||||
"amp": "100",
|
||||
"src": "drumsynth/misc_fx/coo.ds",
|
||||
|
|
@ -236,7 +331,53 @@
|
|||
"looped": "0",
|
||||
"eframe": "1",
|
||||
"reversed": "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
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"instrument_name": "house_loop01.ogg",
|
||||
|
|
@ -248,6 +389,7 @@
|
|||
"basenote": "57",
|
||||
"fxch": "0",
|
||||
"usemasterpitch": "1",
|
||||
"plugin_name": "audiofileprocessor",
|
||||
"audiofileprocessor": {
|
||||
"amp": "100",
|
||||
"src": "beats/house_loop01.ogg",
|
||||
|
|
@ -258,7 +400,53 @@
|
|||
"looped": "0",
|
||||
"eframe": "1",
|
||||
"reversed": "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
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"instrument_name": "cheap_fx.ds",
|
||||
|
|
@ -270,6 +458,7 @@
|
|||
"basenote": "57",
|
||||
"fxch": "0",
|
||||
"usemasterpitch": "1",
|
||||
"plugin_name": "audiofileprocessor",
|
||||
"audiofileprocessor": {
|
||||
"amp": "100",
|
||||
"src": "drumsynth/misc_electro/cheap_fx.ds",
|
||||
|
|
@ -280,7 +469,53 @@
|
|||
"looped": "0",
|
||||
"eframe": "1",
|
||||
"reversed": "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
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"instrument_name": "cold_shot.ds",
|
||||
|
|
@ -292,6 +527,7 @@
|
|||
"basenote": "57",
|
||||
"fxch": "0",
|
||||
"usemasterpitch": "1",
|
||||
"plugin_name": "audiofileprocessor",
|
||||
"audiofileprocessor": {
|
||||
"amp": "100",
|
||||
"src": "drumsynth/misc_electro/cold_shot.ds",
|
||||
|
|
@ -302,7 +538,53 @@
|
|||
"looped": "0",
|
||||
"eframe": "1",
|
||||
"reversed": "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
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"instrument_name": "depth_fx.ds",
|
||||
|
|
@ -314,6 +596,7 @@
|
|||
"basenote": "57",
|
||||
"fxch": "0",
|
||||
"usemasterpitch": "1",
|
||||
"plugin_name": "audiofileprocessor",
|
||||
"audiofileprocessor": {
|
||||
"amp": "100",
|
||||
"src": "drumsynth/misc_electro/depth_fx.ds",
|
||||
|
|
@ -324,7 +607,53 @@
|
|||
"looped": "0",
|
||||
"eframe": "1",
|
||||
"reversed": "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
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"instrument_name": "hello_q.ds",
|
||||
|
|
@ -336,6 +665,7 @@
|
|||
"basenote": "57",
|
||||
"fxch": "0",
|
||||
"usemasterpitch": "1",
|
||||
"plugin_name": "audiofileprocessor",
|
||||
"audiofileprocessor": {
|
||||
"amp": "100",
|
||||
"src": "drumsynth/misc_electro/hello_q.ds",
|
||||
|
|
@ -346,7 +676,53 @@
|
|||
"looped": "0",
|
||||
"eframe": "1",
|
||||
"reversed": "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
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -1,243 +0,0 @@
|
|||
[
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/bassdrum_acoustic02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/effects/stop01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/effects/start01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/effects/warp01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/effects/wind_chimes01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/effects/start02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/effects/explode01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/effects/scratch01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/effects/filter_sweep01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/effects/chroma_sound_effect01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/effects/warp02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/misc/applause01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/misc/undefined01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/misc/bass!.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/misc/snaph01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/misc/breath01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/misc/hit02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/misc/metronome01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/misc/electric_ping01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/misc/hit01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/misc/metronome02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/misc/dong03.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/misc/metalish_dong01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/misc/dong02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/misc/buzz!.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/misc/raving_crowd01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/misc/dong01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/beats/break03.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/beats/rave_snare01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/beats/jungle01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/beats/electro_beat01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/beats/rave_kick02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/beats/909beat01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/beats/rave_kick01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/beats/house_loop01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/beats/rave_hihat01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/beats/break02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/beats/rave_hihat02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/beats/break01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/beats/electro_beat02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/basses/rave_bass04.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/basses/matrix1000_pluck01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/basses/rave_bass03.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/basses/bass_acid01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/basses/techno_synth01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/basses/bass01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/basses/synth_acid02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/basses/bass_hard01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/basses/horror_bass01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/basses/bass_acid02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/basses/rave_bass02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/basses/synth_acid01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/basses/bass_punch01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/basses/rave_bass01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/basses/bass_hard02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/stringsnpads/chorus02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/stringsnpads/bell_choir01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/stringsnpads/strings01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/stringsnpads/space_strings01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/stringsnpads/space_strings03.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/stringsnpads/nord_ambient01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/stringsnpads/orion_string01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/stringsnpads/heaven_strings01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/stringsnpads/korg_poly6_drone01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/stringsnpads/bell_choir02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/stringsnpads/rave_choir01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/stringsnpads/space_strings02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/stringsnpads/juno_pad01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/stringsnpads/chorus01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/bunglist7.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/technobass.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/moog.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/smooth_inv_saw_dist.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/vowel_a.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/roundsaw.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/additive2.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/smooth_inv_saw.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/bunglist9.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/technosynth1.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/technosynth5.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/harmonics.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/smooth_inv_saw2.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/bunglist2.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/bunglist5.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/sine_dist.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/technosynth3.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/micro.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/bunglist.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/technosynth6.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/technosynth2.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/bunglist6.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/bunglist3.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/low_sine.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/saw+sine.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/bunglist4.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/additive.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/bunglist8.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/vowel_u.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/roundbass.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/shapes/technosynth4.wav",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/lfo_trancegate_quarter.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/modsqr.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/lfo_trancegate_triplet_quarter.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/w2_invsine.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/w2_invsinehalf.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/w2_addsyn.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/w2_sharp.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/lfo_trancegate_triplet_half_2.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/saw1.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/w2_rad.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/w2_sawsine.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/lfo_trancegate_sawdecay_quarter.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/w2_noisy.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/w2_hexagon.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/saw2.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/analogsqr.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/w2_invsineabs.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/lfo_trancegate_triplet_half.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/sinesaw.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/fmsaw1.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/lfo_trancegate_sinedecay_quarter.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/10saw.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/fmsine2.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/10tri.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/lfo_trancegate_whole_2.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/10sine.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/w2_angrysaw.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/w2_w-wave.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/10sqr.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/halfsine.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/fmsine.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/impulse.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/waveforms/lfo_trancegate_whole.flac",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/bassloops/techno_synth04.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/bassloops/tb303_01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/bassloops/techno_synth01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/bassloops/techno_synth02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/bassloops/techno_bass01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/bassloops/techno_synth03.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/bassloops/rave_bass02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/bassloops/briff01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/bassloops/rave_bass01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/bassloops/techno_bass02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/latin/latin_brass01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/latin/latin_guitar03.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/latin/latin_guitar02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/latin/latin_guitar01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/hihat_opened03.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/kick_long01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/clap02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/kick03.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/kick_hardcore01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/hihat_opened02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/snare_muffled02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/kick01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/nasty_bass01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/hihat_closed05.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/tom03.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/tom05.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/kick_hiphop01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/clav02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/nasty_snare01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/snare_hiphop02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/tom02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/snare_hiphop01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/clap01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/zap03.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/bassdrum_acoustic02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/tom_low01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/snare_short01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/bassdrum03.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/bassdrum04.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/bassdrum01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/snare_harsh01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/shaker03.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/tom_mid01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/snare_muffled01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/snare_electro01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/crash02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/sidestick01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/hihat_closed03.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/snare_acoustic01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/hihat_closed01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/kick02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/shaker02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/nasty_rim01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/wood01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/snare02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/crash01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/hihat_opened01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/ride02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/ride01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/snare04.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/tom01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/bassdrum02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/zap02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/snare06.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/zap01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/rim01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/snare01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/hihat_foot_pedal01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/snare03.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/clav01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/clap04.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/kick_soft02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/snare07.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/clap03.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/kick_hard01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/snare_rim01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/shaker01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/hihat_closed04.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/snare05.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/bassdrum_acoustic01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/kick_soft01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/kick04.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/tom04.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/hihat_closed02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/kick_distorted01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/drums/tom_hi01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/instruments/flute01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/instruments/e_organ01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/instruments/trumpet01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/instruments/violin_fingered01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/instruments/e_piano_accord02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/instruments/steel_guitar_heavy_distorted01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/instruments/church_organ04.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/instruments/steel_guitar_medium_distorted01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/instruments/violin_double_stop01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/instruments/steel_guitar_slight_distorted01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/instruments/church_organ01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/instruments/violin_pizzicato01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/instruments/bassslap01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/instruments/harpsichord01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/instruments/piano02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/instruments/church_organ03.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/instruments/cello01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/instruments/bassslap02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/instruments/church_organ02.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/instruments/e_piano_accord01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/instruments/piano01.ogg",
|
||||
"/nethome/jotachina/projetos/mmpSearch/mmp/instruments/lmms/samples/instruments/steel_guitar01.ogg"
|
||||
]
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,404 @@
|
|||
---
|
||||
layout: default
|
||||
title: Projetos por Pattern Rítmico
|
||||
permalink: /pattern/
|
||||
---
|
||||
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<main class="main-content">
|
||||
<div class="publication">{% include sidebar.html %}</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="columns is-mobile is-vcentered" style="margin-bottom: 2rem">
|
||||
<div class="column is-auto">
|
||||
<h2 class="title is-4">
|
||||
<code>Projetos que possuem patterns similares:</code>
|
||||
</h2>
|
||||
</div>
|
||||
<div class="column is-auto">
|
||||
<button id="clearFilterButton" class="button is-small is-light">
|
||||
Limpar filtro
|
||||
</button>
|
||||
</div>
|
||||
</div> <style>
|
||||
/* Estilos para o nosso sequencer de 16 steps */
|
||||
.pattern-search-box {
|
||||
display: flex;
|
||||
flex-wrap: wrap; /* Permite quebrar a linha se necessário */
|
||||
gap: 4px;
|
||||
cursor: pointer;
|
||||
margin-bottom: 2rem;
|
||||
padding: 8px;
|
||||
background-color: #f5f5f5;
|
||||
border: 1px solid #dbdbdb;
|
||||
border-radius: 4px;
|
||||
display: inline-flex;
|
||||
}
|
||||
.search-step {
|
||||
/* MODIFICADO: Steps menores para caber 16 */
|
||||
width: 18px;
|
||||
height: 30px;
|
||||
background-color: #d9d9d9; /* Cor INATIVA */
|
||||
border: 1px solid #999;
|
||||
border-radius: 3px;
|
||||
transition: background-color 0.1s ease;
|
||||
}
|
||||
.search-step.is-active {
|
||||
background-color: #4caf50; /* Cor ATIVA (verde) */
|
||||
}
|
||||
|
||||
/* NOVO: Adiciona um espaço extra a cada 4 steps para legibilidade */
|
||||
.search-step:nth-child(4n):not(:last-child) {
|
||||
margin-right: 8px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="field">
|
||||
<label class="label"><code>Desenhe um pattern (até 16 steps) para buscar:</code></label>
|
||||
<div id="pattern-search-box" class="pattern-search-box">
|
||||
<div class="search-step" data-index="0"></div>
|
||||
<div class="search-step" data-index="1"></div>
|
||||
<div class="search-step" data-index="2"></div>
|
||||
<div class="search-step" data-index="3"></div>
|
||||
<div class="search-step" data-index="4"></div>
|
||||
<div class="search-step" data-index="5"></div>
|
||||
<div class="search-step" data-index="6"></div>
|
||||
<div class="search-step" data-index="7"></div>
|
||||
<div class="search-step" data-index="8"></div>
|
||||
<div class="search-step" data-index="9"></div>
|
||||
<div class="search-step" data-index="10"></div>
|
||||
<div class="search-step" data-index="11"></div>
|
||||
<div class="search-step" data-index="12"></div>
|
||||
<div class="search-step" data-index="13"></div>
|
||||
<div class="search-step" data-index="14"></div>
|
||||
<div class="search-step" data-index="15"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="project-list" class="columns is-multiline">
|
||||
|
||||
{% comment %}
|
||||
... O SEU LOOP LIQUID DE PROJETOS VEM AQUI ...
|
||||
NENHUMA MUDANÇA É NECESSÁRIA NO LIQUID.
|
||||
Ele continua exatamente como estava, gerando os 'project-item'
|
||||
e os 'data-patterns' com chunks de 4 steps.
|
||||
{% endcomment %}
|
||||
|
||||
{% for projeto in site.data.all %}
|
||||
|
||||
{% assign project_patterns_flat = "" | split: "," %}
|
||||
{% assign project_patterns_data = "" | split: "," %}
|
||||
|
||||
{% for track in projeto.tracks %}
|
||||
{% if track.instruments %}
|
||||
{% for instrument in track.instruments %}
|
||||
|
||||
{% 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 %}
|
||||
{% if display_name == nil or display_name == "" %}
|
||||
{% assign display_name = "Instrumento" %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
{% if instrument.patterns %}
|
||||
{% for pattern in instrument.patterns %}
|
||||
{% assign pattern_steps = pattern.steps %}
|
||||
{% if pattern_steps and pattern_steps.size > 0 %}
|
||||
|
||||
{% assign total_steps = pattern_steps.size %}
|
||||
{% assign chunk_size = 4 %}
|
||||
{% assign num_chunks = total_steps | divided_by: chunk_size %}
|
||||
|
||||
{% assign remainder = total_steps | modulo: chunk_size %}
|
||||
{% if remainder > 0 %}
|
||||
{% assign num_chunks = num_chunks | plus: 1 %}
|
||||
{% endif %}
|
||||
|
||||
{% for i in (0..num_chunks) %}
|
||||
{% assign start_index = i | times: chunk_size %}
|
||||
{% assign current_chunk_array = pattern_steps | slice: start_index, chunk_size %}
|
||||
|
||||
{% if current_chunk_array.size > 0 %}
|
||||
{% 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 %}
|
||||
|
||||
{% assign data_pair = chunk_string | append: '::' | append: display_name %}
|
||||
|
||||
{% unless project_patterns_flat contains chunk_string %}
|
||||
{% assign project_patterns_flat = project_patterns_flat | push: chunk_string %}
|
||||
{% endunless %}
|
||||
|
||||
{% unless project_patterns_data contains data_pair %}
|
||||
{% assign project_patterns_data = project_patterns_data | push: data_pair %}
|
||||
{% endunless %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% if project_patterns_flat.size > 0 %}
|
||||
{% assign project_patterns_string = project_patterns_flat | join: ',' %}
|
||||
|
||||
<div
|
||||
class="column is-6 project-item"
|
||||
data-patterns="{{ project_patterns_string }}"
|
||||
>
|
||||
<div class="box">
|
||||
{% assign file_url = projeto.file | downcase | replace: ' ', '-' |
|
||||
replace: 'ç', 'c' | replace: 'ã', 'a' | replace: 'á', 'a' | replace:
|
||||
'â', 'a' | replace: 'é', 'e' | replace: 'ê', 'e' | replace: 'í', 'i' |
|
||||
replace: 'ó', 'o' | replace: 'ô', 'o' | replace: 'õ', 'o' | replace:
|
||||
'ú', 'u' %}
|
||||
|
||||
<a
|
||||
href="../mmp_pages/{{ file_url }}.html"
|
||||
class="button is-link is-fullwidth"
|
||||
>
|
||||
{{ projeto.file }}
|
||||
</a>
|
||||
|
||||
<div style="margin-top: 1rem">
|
||||
<p><strong>Patterns (4-steps):</strong></p>
|
||||
<div class="tags" style="margin-top: 0.5rem;">
|
||||
|
||||
{% for data_pair_string in project_patterns_data %}
|
||||
{% assign pair_parts = data_pair_string | split: '::' %}
|
||||
{% assign p_string = pair_parts[0] %}
|
||||
{% assign p_instrument = pair_parts[1] | default: '?' %}
|
||||
|
||||
<a href="#" class="pattern-item tag is-info is-light" data-pattern="{{ p_string }}" title="Filtrar por {{ p_string }} (de {{ p_instrument }})">
|
||||
|
||||
<div style="display: flex; flex-direction: row; border: 1px solid #999; padding: 2px; border-radius: 2px; background-color: #fff; margin-right: 5px;">
|
||||
{% assign p_array = p_string | split: "" %}
|
||||
{% for step_char in p_array %}
|
||||
{% assign step_color = '#d9d9d9' %}
|
||||
{% if step_char == '1' %}
|
||||
{% assign step_color = '#4caf50' %}
|
||||
{% endif %}
|
||||
<div style="width: 5px; height: 10px; background-color: {{ step_color }}; border-radius: 1px; margin-right: 1px;"></div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<span class="is-size-7" style="margin-right: 5px;">{{ p_instrument }}:</span>
|
||||
<code>{{ p_string }}</code>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
{% comment %}
|
||||
SCRIPT FINAL (TOTALMENTE REESCRITO PARA 16-STEPS "AND" FILTER)
|
||||
{% endcomment %}
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
const projects = document.querySelectorAll(".project-item");
|
||||
const allPatternItems = document.querySelectorAll(".pattern-item");
|
||||
const clearFilterButton = document.querySelector("#clearFilterButton");
|
||||
const searchSteps = document.querySelectorAll(".search-step"); // Agora tem 16
|
||||
|
||||
/**
|
||||
* "Fonte da verdade": um array de chunks de 4 steps (ex: ["1001", "0010"])
|
||||
* que estão ativos no filtro.
|
||||
*/
|
||||
let activeChunks = [];
|
||||
|
||||
/**
|
||||
* Pega o desenho de 16 steps e o quebra em 4 chunks.
|
||||
* @returns {string[]} ex: ["1001", "0010", "0000", "0000"]
|
||||
*/
|
||||
function getChunksFromSearchBox() {
|
||||
let fullPattern = "";
|
||||
searchSteps.forEach(step => {
|
||||
fullPattern += step.classList.contains("is-active") ? "1" : "0";
|
||||
});
|
||||
// Quebra a string "10010010..." em ["1001", "0010", ...]
|
||||
return fullPattern.match(/.{1,4}/g) || [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Pega os chunks ativos (ex: ["1001", "0010"]) e desenha
|
||||
* o pattern de 16 steps (ex: "1001001000000000") na caixa.
|
||||
*/
|
||||
function setSearchBoxFromChunks(chunks) {
|
||||
let fullPattern = (chunks || []).join("").padEnd(16, "0");
|
||||
const bits = fullPattern.split("");
|
||||
|
||||
searchSteps.forEach((step, index) => {
|
||||
if (bits[index] === "1") {
|
||||
step.classList.add("is-active");
|
||||
} else {
|
||||
step.classList.remove("is-active");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Filtra a lista de projetos.
|
||||
* Um projeto SÓ aparece se ele tiver TODOS os activeChunks.
|
||||
*/
|
||||
function filterByPattern(chunks) {
|
||||
// Se não há chunks ativos (e não vazios), mostra tudo
|
||||
const effectiveChunks = chunks.filter(c => c !== "0000");
|
||||
if (effectiveChunks.length === 0) {
|
||||
projects.forEach(project => project.style.display = "block");
|
||||
return;
|
||||
}
|
||||
|
||||
projects.forEach((project) => {
|
||||
const projectPatterns = project
|
||||
.getAttribute("data-patterns")
|
||||
.split(",");
|
||||
|
||||
// Lógica "AND": .every() verifica se TODOS os chunks são verdadeiros
|
||||
const isMatch = effectiveChunks.every(chunk =>
|
||||
projectPatterns.includes(chunk)
|
||||
);
|
||||
|
||||
project.style.display = isMatch ? "block" : "none";
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Destaca MÚLTIPLAS tags que estão no filtro "AND".
|
||||
*/
|
||||
function highlightActiveFilter(chunks) {
|
||||
allPatternItems.forEach((item) => {
|
||||
const itemPattern = item.getAttribute("data-pattern");
|
||||
|
||||
// Se o pattern da tag ESTÁ no array de chunks ativos
|
||||
if (chunks.includes(itemPattern)) {
|
||||
item.classList.remove("is-light"); // Fica sólido
|
||||
} else {
|
||||
item.classList.add("is-info", "is-light"); // Fica light
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Atualiza a URL com um parâmetro ?p=1001,0010
|
||||
*/
|
||||
function updateUrl(chunks) {
|
||||
const newUrl = new URL(window.location.href);
|
||||
// Filtra "0000" antes de salvar na URL
|
||||
const effectiveChunks = chunks.filter(c => c !== "0000");
|
||||
|
||||
if (effectiveChunks.length > 0) {
|
||||
newUrl.searchParams.set("p", effectiveChunks.join(","));
|
||||
} else {
|
||||
newUrl.searchParams.delete("p");
|
||||
}
|
||||
window.history.replaceState({}, "", newUrl);
|
||||
}
|
||||
|
||||
/**
|
||||
* A NOVA função principal que sincroniza tudo.
|
||||
*/
|
||||
function runFilter() {
|
||||
// 1. Lê o desenho e pega os chunks ativos
|
||||
const chunksFromBox = getChunksFromSearchBox();
|
||||
activeChunks = chunksFromBox.filter(c => c !== "0000");
|
||||
|
||||
// 2. Filtra os projetos (lógica "AND")
|
||||
filterByPattern(activeChunks);
|
||||
|
||||
// 3. Destaca as tags
|
||||
highlightActiveFilter(activeChunks);
|
||||
|
||||
// 4. Atualiza a URL
|
||||
updateUrl(activeChunks);
|
||||
}
|
||||
|
||||
// ========================================================
|
||||
// Event Listeners (Gatilhos)
|
||||
// ========================================================
|
||||
|
||||
// 1. Ao carregar a página (lê a URL)
|
||||
const urlParams = new URLSearchParams(window.location.search);
|
||||
let patternFromUrl = urlParams.get("p");
|
||||
|
||||
if (patternFromUrl) {
|
||||
activeChunks = patternFromUrl.split(","); // ex: ["1001", "0010"]
|
||||
setSearchBoxFromChunks(activeChunks); // Desenha "100100100000..."
|
||||
filterByPattern(activeChunks);
|
||||
highlightActiveFilter(activeChunks);
|
||||
}
|
||||
|
||||
// 2. Ao clicar numa TAG (na lista de projetos)
|
||||
allPatternItems.forEach((item) => {
|
||||
item.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const selectedPattern = item.getAttribute("data-pattern");
|
||||
|
||||
// Lógica: Clicar numa tag a "adiciona" ao filtro "AND"
|
||||
|
||||
// Pega o que já está desenhado
|
||||
let currentChunks = getChunksFromSearchBox().filter(c => c !== "0000");
|
||||
|
||||
// Se já está lá, remove (toggle)
|
||||
if (currentChunks.includes(selectedPattern)) {
|
||||
currentChunks = currentChunks.filter(c => c !== selectedPattern);
|
||||
}
|
||||
// Se não está, adiciona (se houver espaço)
|
||||
else if (currentChunks.length < 4) {
|
||||
currentChunks.push(selectedPattern);
|
||||
}
|
||||
|
||||
activeChunks = currentChunks;
|
||||
|
||||
// Atualiza tudo
|
||||
setSearchBoxFromChunks(activeChunks);
|
||||
filterByPattern(activeChunks);
|
||||
highlightActiveFilter(activeChunks);
|
||||
updateUrl(activeChunks);
|
||||
});
|
||||
});
|
||||
|
||||
// 3. Ao clicar em um STEP da caixa de busca
|
||||
searchSteps.forEach(step => {
|
||||
step.addEventListener("click", function() {
|
||||
// 1. Liga/desliga o step
|
||||
step.classList.toggle("is-active");
|
||||
|
||||
// 2. Roda o filtro principal
|
||||
runFilter();
|
||||
});
|
||||
});
|
||||
|
||||
// 4. Botão para limpar filtro
|
||||
clearFilterButton.addEventListener("click", function () {
|
||||
activeChunks = [];
|
||||
setSearchBoxFromChunks([]); // Limpa o desenho
|
||||
filterByPattern([]); // Mostra todos os projetos
|
||||
highlightActiveFilter([]); // Limpa os destaques
|
||||
updateUrl([]); // Limpa a URL
|
||||
});
|
||||
});
|
||||
</script>
|
||||
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.")
|
||||
Loading…
Reference in New Issue