patterns no projeto do MMPSearch

This commit is contained in:
JotaChina 2025-11-11 19:15:09 -03:00
parent 25a3a60576
commit 3e6fdfd324
45 changed files with 199325 additions and 18322 deletions

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

View File

@ -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

View File

@ -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

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

View File

@ -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

View File

@ -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

View File

@ -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,99 +84,151 @@ 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 %}
{% endif %}
<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 %}
{% 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;">
{% 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>
<div style="display: flex; align-items: center; gap: 8px;">
{% assign display_name = instrument.instrument_name %}
{% if display_name contains "audiofileprocessor" and instrument.patterns %}
{% assign first_pattern_name = instrument.patterns | map: 'name' | first %}
{% if first_pattern_name and first_pattern_name != empty %}
{% assign display_name = first_pattern_name | remove: ".ogg" | remove: ".wav" | remove: ".flac" | remove: ".mp3" %}
{% elsif instrument.audiofileprocessor.src %}
{% assign src_parts = instrument.audiofileprocessor.src | split: '/' %}
{% assign file_name = src_parts | last %}
{% assign display_name = file_name | remove: ".ogg" | remove: ".wav" | remove: ".flac" | remove: ".mp3" %}
{% endif %}
{% endif %}
</li>
{% assign instrument_slug = display_name | replace: ' ', '+' %}
<a href="{{ '/instruments/?instrument=' | append: instrument_slug | relative_url }}" class="tag is-info is-light">
<code>{{ display_name }}</code>
</a>
</div>
{% comment %}
LOOP para múltiplos patterns com rótulo P1, P2, P3.
{% endcomment %}
{% for pattern in instrument.patterns %}
{% assign pattern_steps = pattern.steps %}
{% if pattern_steps and pattern_steps.size > 0 %}
<div class="mt-2" style="display: flex; align-items: center; gap: 4px;">
<span class="is-size-7 has-text-grey-light">
P{{ forloop.index }}:
</span>
{% comment %}
>>> INÍCIO DA LÓGICA DE STEPS MELHORADA <<<
Container da grade de steps
{% endcomment %}
<div style="display: flex; flex-direction: row; border: 1px solid #ccc; padding: 2px; border-radius: 2px; background-color: #f0f0f0;">
{% for step_active in pattern_steps %}
{% comment %} Define a cor do step {% endcomment %}
{% assign step_color = '#d9d9d9' %} {% comment %} Cor INATIVA (cinza claro) {% endcomment %}
{% if step_active == true or step_active == 'true' or step_active == 1 %}
{% assign step_color = '#4caf50' %} {% comment %} Cor ATIVA (verde) {% endcomment %}
{% endif %}
{% comment %} Define o espaçamento (divisão do compasso) {% endcomment %}
{% assign step_style = '' %}
{% assign step_index_zero_based = forloop.index0 %}
{% comment %} --- Calcula o módulo *antes* do 'if' --- {% endcomment %}
{% assign remainder = step_index_zero_based | modulo: 4 %}
{% if step_index_zero_based > 0 and remainder == 0 %}
{% assign step_style = 'margin-left: 3px;' %}
{% endif %}
<div
style="width: 5px; height: 10px; background-color: {{ step_color }}; border-radius: 1px; {{ step_style }}"
></div>
{% endfor %}
</div>
{% comment %} >>> FIM DA LÓGICA DE STEPS MELHORADA <<< {% endcomment %}
</div>
{% endif %}
{% endfor %}
{% comment %} Player de áudio e condição de sample ausente {% endcomment %}
{% assign sample_src = instrument.audiofileprocessor.src | default: "" | strip %}
{% if instrument.audiofileprocessor and sample_src != "" %}
{% assign audio_filename_with_path = 'src/samples/' | append: sample_src %}
<div class="audio-player-section mt-3">
<audio controls>
<source
src="{{ audio_filename_with_path | relative_url }}"
type="audio/ogg"
>
{% assign wav_path = audio_filename_with_path | replace: '.ogg', '.wav' %}
<source
src="{{ wav_path | relative_url }}"
type="audio/wav"
>
Seu navegador não suporta o elemento <code>audio</code>.
</audio>
</div>
{% else %}
<p class="has-text-danger is-size-7 mt-3">
O sample **não foi enviado** 😢
</p>
{% endif %}
{% endfor %}
</ul>
{% endif %}
</li>
</li>
{% endif %}
{% endfor %}
</ul>
{% endif %}
{% endfor %}
</ul>
</div>
</details>
</li>
{% endif %}
{% endfor %}
</ul>
</div>
</details>
</section>
{% endif %}
</div> <div class="column is-one-third" height="800px" widht="800px">
<div class="box p-4 has-background-info-light" height="800px" widht="800px">
</div>
<div class="column is-one-third">
<div class="box p-4 has-background-info-light">
<h3 class="title is-6 has-text-info mb-3">🛠️ Abra na Criação Colaborativa</h3>
{% comment %}
CONSTRUÇÃO DA URL CORRIGIDA PARA AMBIENTES DE TESTE:
- O filtro `relative_url` foi removido para evitar a duplicação do caminho.
- O prefixo de teste `/~jotachina/mmpSearch/` foi adicionado manualmente.
CONSTRUÇÃO DA URL CORRIGIDA PARA AMBIENTES DE TESTE:
{% endcomment %}
{% assign creation_url = '/~jotachina/mmpSearch/creation.html?project=' | append: page.file %}
<span class="icon"><i class="fa-solid fa-up-right-from-square"></i></span>
@ -190,7 +244,7 @@ title: "{{ page.file }}"
Arquivo: <code>{{ page.file }}</code>
</p>
<div class="mt-4 is-hidden-mobile" height="800px" widht="800px">
<div class="mt-4 is-hidden-mobile">
{% assign embed_url = creation_url | append: '&embed=true' %}
<iframe
@ -201,7 +255,8 @@ title: "{{ page.file }}"
</iframe>
</div>
</div>
</div> </div>
</div>
</div>
</div>
</main>
</main>
</div>

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

View File

@ -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

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

View File

@ -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

View File

@ -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

View File

@ -1,21 +0,0 @@
[
"Computacao_Musical_Thiago_Rocha_de_Moraes.mmp",
"FelipeFerraz.mmp",
"Gustavo Castro.mmp",
"Iara Rodrigues.mmp",
"JoãoVitorSimão-2023008380-megaMainSong.mmp",
"Samanta Freire.mmp",
"SonsAlignígenas.mmp",
"Um começo.mmp",
"VitorAugusto.mmp",
"Wesley_Silva_Guimarães.mmp",
"beatJulioCesardeSousa.mmp",
"carlos.mmp",
"deprecado_wallace.mmp",
"eliasMendesSong.mmp",
"gabriel_gomes.mmp",
"leandro_souza_atvd1.mmp",
"teste.mmp",
"tp1 - Luiz Filipe Almada.mmp",
"tp1_MarcoAntonio.mmp"
]

View File

@ -1,769 +0,0 @@
{
"basses": {
"bass01.ogg": {
"_isFile": true
},
"bass_acid01.ogg": {
"_isFile": true
},
"bass_acid02.ogg": {
"_isFile": true
},
"bass_hard01.ogg": {
"_isFile": true
},
"bass_hard02.ogg": {
"_isFile": true
},
"bass_punch01.ogg": {
"_isFile": true
},
"horror_bass01.ogg": {
"_isFile": true
},
"matrix1000_pluck01.ogg": {
"_isFile": true
},
"rave_bass01.ogg": {
"_isFile": true
},
"rave_bass02.ogg": {
"_isFile": true
},
"rave_bass04.ogg": {
"_isFile": true
},
"synth_acid01.ogg": {
"_isFile": true
},
"synth_acid02.ogg": {
"_isFile": true
},
"techno_synth01.ogg": {
"_isFile": true
}
},
"bassloops": {
"briff01.ogg": {
"_isFile": true
},
"rave_bass01.ogg": {
"_isFile": true
},
"rave_bass02.ogg": {
"_isFile": true
},
"tb303_01.ogg": {
"_isFile": true
},
"techno_bass01.ogg": {
"_isFile": true
},
"techno_bass02.ogg": {
"_isFile": true
},
"techno_synth01.ogg": {
"_isFile": true
},
"techno_synth02.ogg": {
"_isFile": true
},
"techno_synth03.ogg": {
"_isFile": true
},
"techno_synth04.ogg": {
"_isFile": true
}
},
"beats": {
"909beat01.ogg": {
"_isFile": true
},
"break01.ogg": {
"_isFile": true
},
"break02.ogg": {
"_isFile": true
},
"break03.ogg": {
"_isFile": true
},
"electro_beat01.ogg": {
"_isFile": true
},
"electro_beat02.ogg": {
"_isFile": true
},
"house_loop01.ogg": {
"_isFile": true
},
"jungle01.ogg": {
"_isFile": true
},
"rave_hihat01.ogg": {
"_isFile": true
},
"rave_hihat02.ogg": {
"_isFile": true
},
"rave_kick01.ogg": {
"_isFile": true
},
"rave_kick02.ogg": {
"_isFile": true
},
"rave_snare01.ogg": {
"_isFile": true
}
},
"drums": {
"bassdrum01.ogg": {
"_isFile": true
},
"bassdrum02.ogg": {
"_isFile": true
},
"bassdrum03.ogg": {
"_isFile": true
},
"bassdrum04.ogg": {
"_isFile": true
},
"bassdrum_acoustic01.ogg": {
"_isFile": true
},
"bassdrum_acoustic02.ogg": {
"_isFile": true
},
"clap01.ogg": {
"_isFile": true
},
"clap02.ogg": {
"_isFile": true
},
"clap03.ogg": {
"_isFile": true
},
"clap04.ogg": {
"_isFile": true
},
"clav01.ogg": {
"_isFile": true
},
"clav02.ogg": {
"_isFile": true
},
"crash01.ogg": {
"_isFile": true
},
"crash02.ogg": {
"_isFile": true
},
"hihat_closed01.ogg": {
"_isFile": true
},
"hihat_closed02.ogg": {
"_isFile": true
},
"hihat_closed03.ogg": {
"_isFile": true
},
"hihat_closed04.ogg": {
"_isFile": true
},
"hihat_closed05.ogg": {
"_isFile": true
},
"hihat_foot_pedal01.ogg": {
"_isFile": true
},
"hihat_opened01.ogg": {
"_isFile": true
},
"hihat_opened02.ogg": {
"_isFile": true
},
"hihat_opened03.ogg": {
"_isFile": true
},
"kick01.ogg": {
"_isFile": true
},
"kick02.ogg": {
"_isFile": true
},
"kick03.ogg": {
"_isFile": true
},
"kick04.ogg": {
"_isFile": true
},
"kick_distorted01.ogg": {
"_isFile": true
},
"kick_hard01.ogg": {
"_isFile": true
},
"kick_hardcore01.ogg": {
"_isFile": true
},
"kick_hiphop01.ogg": {
"_isFile": true
},
"kick_long01.ogg": {
"_isFile": true
},
"kick_soft01.ogg": {
"_isFile": true
},
"kick_soft02.ogg": {
"_isFile": true
},
"nasty_bass01.ogg": {
"_isFile": true
},
"nasty_rim01.ogg": {
"_isFile": true
},
"nasty_snare01.ogg": {
"_isFile": true
},
"ride01.ogg": {
"_isFile": true
},
"ride02.ogg": {
"_isFile": true
},
"rim01.ogg": {
"_isFile": true
},
"shaker01.ogg": {
"_isFile": true
},
"shaker02.ogg": {
"_isFile": true
},
"shaker03.ogg": {
"_isFile": true
},
"sidestick01.ogg": {
"_isFile": true
},
"snare01.ogg": {
"_isFile": true
},
"snare02.ogg": {
"_isFile": true
},
"snare03.ogg": {
"_isFile": true
},
"snare04.ogg": {
"_isFile": true
},
"snare05.ogg": {
"_isFile": true
},
"snare06.ogg": {
"_isFile": true
},
"snare07.ogg": {
"_isFile": true
},
"snare_acoustic01.ogg": {
"_isFile": true
},
"snare_electro01.ogg": {
"_isFile": true
},
"snare_harsh01.ogg": {
"_isFile": true
},
"snare_hiphop01.ogg": {
"_isFile": true
},
"snare_hiphop02.ogg": {
"_isFile": true
},
"snare_muffled01.ogg": {
"_isFile": true
},
"snare_muffled02.ogg": {
"_isFile": true
},
"snare_rim01.ogg": {
"_isFile": true
},
"snare_short01.ogg": {
"_isFile": true
},
"tom01.ogg": {
"_isFile": true
},
"tom02.ogg": {
"_isFile": true
},
"tom03.ogg": {
"_isFile": true
},
"tom04.ogg": {
"_isFile": true
},
"tom05.ogg": {
"_isFile": true
},
"tom_hi01.ogg": {
"_isFile": true
},
"tom_low01.ogg": {
"_isFile": true
},
"tom_mid01.ogg": {
"_isFile": true
},
"wood01.ogg": {
"_isFile": true
},
"zap01.ogg": {
"_isFile": true
},
"zap02.ogg": {
"_isFile": true
},
"zap03.ogg": {
"_isFile": true
}
},
"drumsynth": {
"acoustic": {},
"cr78": {},
"cr8000": {},
"effects": {},
"electro": {},
"farfisa": {},
"ferraro": {},
"instrument": {},
"jorgensohn": {},
"latin": {},
"linn": {},
"magnetboy": {},
"misc": {},
"misc_bass": {},
"misc_claps": {},
"misc_electro": {},
"misc_fx": {},
"misc_hats": {},
"misc_perc": {},
"misc_synth": {},
"r_n_b": {},
"tr606": {},
"tr77": {},
"tr808": {},
"tr909": {}
},
"effects": {
"chroma_sound_effect01.ogg": {
"_isFile": true
},
"explode01.ogg": {
"_isFile": true
},
"filter_sweep01.ogg": {
"_isFile": true
},
"scratch01.ogg": {
"_isFile": true
},
"start01.ogg": {
"_isFile": true
},
"start02.ogg": {
"_isFile": true
},
"stop01.ogg": {
"_isFile": true
},
"warp01.ogg": {
"_isFile": true
},
"warp02.ogg": {
"_isFile": true
},
"wind_chimes01.ogg": {
"_isFile": true
}
},
"instruments": {
"bassslap01.ogg": {
"_isFile": true
},
"bassslap02.ogg": {
"_isFile": true
},
"cello01.ogg": {
"_isFile": true
},
"church_organ01.ogg": {
"_isFile": true
},
"church_organ02.ogg": {
"_isFile": true
},
"church_organ03.ogg": {
"_isFile": true
},
"church_organ04.ogg": {
"_isFile": true
},
"e_organ01.ogg": {
"_isFile": true
},
"e_piano_accord01.ogg": {
"_isFile": true
},
"e_piano_accord02.ogg": {
"_isFile": true
},
"flute01.ogg": {
"_isFile": true
},
"harpsichord01.ogg": {
"_isFile": true
},
"piano01.ogg": {
"_isFile": true
},
"piano02.ogg": {
"_isFile": true
},
"steel_guitar01.ogg": {
"_isFile": true
},
"steel_guitar_heavy_distorted01.ogg": {
"_isFile": true
},
"steel_guitar_medium_distorted01.ogg": {
"_isFile": true
},
"steel_guitar_slight_distorted01.ogg": {
"_isFile": true
},
"trumpet01.ogg": {
"_isFile": true
},
"violin_double_stop01.ogg": {
"_isFile": true
},
"violin_fingered01.ogg": {
"_isFile": true
},
"violin_pizzicato01.ogg": {
"_isFile": true
}
},
"latin": {
"latin_brass01.ogg": {
"_isFile": true
},
"latin_guitar01.ogg": {
"_isFile": true
},
"latin_guitar02.ogg": {
"_isFile": true
},
"latin_guitar03.ogg": {
"_isFile": true
}
},
"misc": {
"applause01.ogg": {
"_isFile": true
},
"bass!.ogg": {
"_isFile": true
},
"breath01.ogg": {
"_isFile": true
},
"buzz!.ogg": {
"_isFile": true
},
"dong01.ogg": {
"_isFile": true
},
"dong02.ogg": {
"_isFile": true
},
"dong03.ogg": {
"_isFile": true
},
"electric_ping01.ogg": {
"_isFile": true
},
"hit01.ogg": {
"_isFile": true
},
"hit02.ogg": {
"_isFile": true
},
"metalish_dong01.ogg": {
"_isFile": true
},
"metronome01.ogg": {
"_isFile": true
},
"metronome02.ogg": {
"_isFile": true
},
"raving_crowd01.ogg": {
"_isFile": true
},
"snaph01.ogg": {
"_isFile": true
},
"undefined01.ogg": {
"_isFile": true
}
},
"samples": {},
"shapes": {
"additive.wav": {
"_isFile": true
},
"additive2.wav": {
"_isFile": true
},
"bunglist.wav": {
"_isFile": true
},
"bunglist2.wav": {
"_isFile": true
},
"bunglist3.wav": {
"_isFile": true
},
"bunglist4.wav": {
"_isFile": true
},
"bunglist5.wav": {
"_isFile": true
},
"bunglist6.wav": {
"_isFile": true
},
"bunglist7.wav": {
"_isFile": true
},
"bunglist8.wav": {
"_isFile": true
},
"bunglist9.wav": {
"_isFile": true
},
"harmonics.wav": {
"_isFile": true
},
"low_sine.wav": {
"_isFile": true
},
"micro.wav": {
"_isFile": true
},
"moog.wav": {
"_isFile": true
},
"roundbass.wav": {
"_isFile": true
},
"roundsaw.ogg": {
"_isFile": true
},
"saw+sine.wav": {
"_isFile": true
},
"sine_dist.ogg": {
"_isFile": true
},
"smooth_inv_saw.ogg": {
"_isFile": true
},
"smooth_inv_saw2.ogg": {
"_isFile": true
},
"smooth_inv_saw_dist.ogg": {
"_isFile": true
},
"technobass.wav": {
"_isFile": true
},
"technosynth1.wav": {
"_isFile": true
},
"technosynth2.wav": {
"_isFile": true
},
"technosynth3.wav": {
"_isFile": true
},
"technosynth4.wav": {
"_isFile": true
},
"technosynth5.wav": {
"_isFile": true
},
"technosynth6.wav": {
"_isFile": true
},
"vowel_a.wav": {
"_isFile": true
},
"vowel_u.wav": {
"_isFile": true
}
},
"stringsnpads": {
"bell_choir01.ogg": {
"_isFile": true
},
"bell_choir02.ogg": {
"_isFile": true
},
"chorus01.ogg": {
"_isFile": true
},
"chorus02.ogg": {
"_isFile": true
},
"heaven_strings01.ogg": {
"_isFile": true
},
"juno_pad01.ogg": {
"_isFile": true
},
"korg_poly6_drone01.ogg": {
"_isFile": true
},
"nord_ambient01.ogg": {
"_isFile": true
},
"orion_string01.ogg": {
"_isFile": true
},
"rave_choir01.ogg": {
"_isFile": true
},
"space_strings01.ogg": {
"_isFile": true
},
"space_strings02.ogg": {
"_isFile": true
},
"space_strings03.ogg": {
"_isFile": true
},
"strings01.ogg": {
"_isFile": true
}
},
"waveforms": {
"10saw.flac": {
"_isFile": true
},
"10sine.flac": {
"_isFile": true
},
"10sqr.flac": {
"_isFile": true
},
"10tri.flac": {
"_isFile": true
},
"analogsqr.flac": {
"_isFile": true
},
"fmsaw1.flac": {
"_isFile": true
},
"fmsine.flac": {
"_isFile": true
},
"fmsine2.flac": {
"_isFile": true
},
"halfsine.flac": {
"_isFile": true
},
"impulse.flac": {
"_isFile": true
},
"lfo_trancegate_quarter.flac": {
"_isFile": true
},
"lfo_trancegate_sawdecay_quarter.flac": {
"_isFile": true
},
"lfo_trancegate_sinedecay_quarter.flac": {
"_isFile": true
},
"lfo_trancegate_triplet_half.flac": {
"_isFile": true
},
"lfo_trancegate_triplet_half_2.flac": {
"_isFile": true
},
"lfo_trancegate_triplet_quarter.flac": {
"_isFile": true
},
"lfo_trancegate_whole.flac": {
"_isFile": true
},
"lfo_trancegate_whole_2.flac": {
"_isFile": true
},
"modsqr.flac": {
"_isFile": true
},
"saw1.flac": {
"_isFile": true
},
"saw2.flac": {
"_isFile": true
},
"sinesaw.flac": {
"_isFile": true
},
"w2_addsyn.flac": {
"_isFile": true
},
"w2_angrysaw.flac": {
"_isFile": true
},
"w2_hexagon.flac": {
"_isFile": true
},
"w2_invsine.flac": {
"_isFile": true
},
"w2_invsineabs.flac": {
"_isFile": true
},
"w2_invsinehalf.flac": {
"_isFile": true
},
"w2_noisy.flac": {
"_isFile": true
},
"w2_rad.flac": {
"_isFile": true
},
"w2_sawsine.flac": {
"_isFile": true
},
"w2_sharp.flac": {
"_isFile": true
},
"w2_w-wave.flac": {
"_isFile": true
}
}
}

View File

@ -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

View File

@ -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 = ''
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', '')
})
# 'tags' agora é usado para coletar os tipos de plugins para o retorno
plugin_tags = set()
# <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', ''),
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
}
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.")