Add files via upload

This commit is contained in:
JotaChina 2024-07-25 16:46:48 -03:00 committed by GitHub
parent 1d370456c3
commit a909794f65
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
40 changed files with 1111 additions and 0 deletions

25
404.html Normal file
View File

@ -0,0 +1,25 @@
---
permalink: /404.html
layout: default
---
<style type="text/css" media="screen">
.container {
margin: 10px auto;
max-width: 600px;
text-align: center;
}
h1 {
margin: 30px 0;
font-size: 4em;
line-height: 1;
letter-spacing: -1px;
}
</style>
<div class="container">
<h1>404</h1>
<p><strong>Page not found :(</strong></p>
<p>The requested page could not be found.</p>
</div>

5
Gemfile Normal file
View File

@ -0,0 +1,5 @@
source "https://rubygems.org"
# Dependências principais do Jekyll
gem "jekyll", "~> 4.3.3"
gem "minima", "~> 2.5"

81
Gemfile.lock Normal file
View File

@ -0,0 +1,81 @@
GEM
remote: https://rubygems.org/
specs:
addressable (2.8.6)
public_suffix (>= 2.0.2, < 6.0)
colorator (1.1.0)
concurrent-ruby (1.2.3)
em-websocket (0.5.3)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0)
eventmachine (1.2.7)
ffi (1.16.3)
forwardable-extended (2.6.0)
google-protobuf (3.24.4-x86_64-linux)
http_parser.rb (0.8.0)
i18n (1.14.4)
concurrent-ruby (~> 1.0)
jekyll (4.3.3)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 1.0)
jekyll-sass-converter (>= 2.0, < 4.0)
jekyll-watch (~> 2.0)
kramdown (~> 2.3, >= 2.3.1)
kramdown-parser-gfm (~> 1.0)
liquid (~> 4.0)
mercenary (>= 0.3.6, < 0.5)
pathutil (~> 0.9)
rouge (>= 3.0, < 5.0)
safe_yaml (~> 1.0)
terminal-table (>= 1.8, < 4.0)
webrick (~> 1.7)
jekyll-feed (0.17.0)
jekyll (>= 3.7, < 5.0)
jekyll-sass-converter (3.0.0)
sass-embedded (~> 1.54)
jekyll-seo-tag (2.8.0)
jekyll (>= 3.8, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
kramdown (2.4.0)
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.4)
listen (3.9.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.4.0)
minima (2.5.1)
jekyll (>= 3.5, < 5.0)
jekyll-feed (~> 0.9)
jekyll-seo-tag (~> 2.1)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (5.0.4)
rake (13.1.0)
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
rexml (3.2.6)
rouge (4.1.3)
safe_yaml (1.0.5)
sass-embedded (1.69.3)
google-protobuf (~> 3.23)
rake (>= 13.0.0)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
unicode-display_width (2.5.0)
webrick (1.8.1)
PLATFORMS
x86_64-linux
DEPENDENCIES
jekyll (~> 4.3.3)
minima (~> 2.5)
BUNDLED WITH
2.4.20

57
_config.yml Normal file
View File

@ -0,0 +1,57 @@
# Welcome to Jekyll!
#
# This config file is meant for settings that affect your whole blog, values
# which you are expected to set up once and rarely edit after that. If you find
# yourself editing this file very often, consider using Jekyll's data files
# feature for the data you need to update frequently.
#
# For technical reasons, this file is *NOT* reloaded automatically when you use
# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
#
# If you need help with YAML syntax, here are some quick references for you:
# https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml
# https://learnxinyminutes.com/docs/yaml/
#
# Site settings
# These are used to personalize your new site. If you look in the HTML files,
# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
# You can create any custom variable you would like, and they will be accessible
# in the templates via {{ site.myvariable }}.
title: Your awesome title
email: your-email@example.com
description: >- # this means to ignore newlines until "baseurl:"
Write an awesome description for your new site here. You can edit this
line in _config.yml. It will appear in your document head meta (for
Google search results) and in your feed.xml site description.
baseurl: "" # the subpath of your site, e.g. /blog
url: "" # the base hostname & protocol for your site, e.g. http://example.com
twitter_username: jekyllrb
github_username: jekyll
# Build settings
theme: minima
plugins:
- jekyll-feed
baseurl: /~jotachina/mmpSearch/mmpSearch/_site
# Exclude from processing.
# The following items will not be processed, by default.
# Any item listed under the `exclude:` key here will be automatically added to
# the internal "default list".
#
# Excluded items can be processed by explicitly listing the directories or
# their entries' file path in the `include:` list.
#
# exclude:
# - .sass-cache/
# - .jekyll-cache/
# - gemfiles/
# - Gemfile
# - Gemfile.lock
# - node_modules/
# - vendor/bundle/
# - vendor/cache/
# - vendor/gems/
# - vendor/ruby/

18
about.markdown Normal file
View File

@ -0,0 +1,18 @@
---
layout: page
title: About
permalink: /about/
---
This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at [jekyllrb.com](https://jekyllrb.com/)
You can find the source code for Minima at GitHub:
[jekyll][jekyll-organization] /
[minima](https://github.com/jekyll/minima)
You can find the source code for Jekyll at GitHub:
[jekyll][jekyll-organization] /
[jekyll](https://github.com/jekyll/jekyll)
[jekyll-organization]: https://github.com/jekyll

14
generate_mmp_data.py Normal file
View File

@ -0,0 +1,14 @@
import subprocess
def run_script(script_path):
subprocess.run(['python', script_path])
def main():
script_path = 'scripts/indexa.py'
run_script(script_path)
script_path = 'scripts/statistics.py'
run_script(script_path)
if __name__ == '__main__':
main()

6
index.markdown Normal file
View File

@ -0,0 +1,6 @@
---
# Feel free to add content and custom Front Matter to this file.
# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults
layout: home
---

View File

@ -0,0 +1,66 @@
{
"file": "mmp/JoãoVitorSimão-2023008380-megaMainSong.mmp",
"bpm": "160",
"tracks": [
{
"track_name": "main base",
"type": "bassline",
"instruments": [
{
"instrument_name": "bass1"
},
{
"instrument_name": "noise1"
},
{
"instrument_name": "snare"
}
]
},
{
"track_name": "End Drums",
"type": "plugin",
"instruments": []
},
{
"track_name": "Middle Bass",
"type": "plugin",
"instruments": []
},
{
"track_name": "Melody 1",
"type": "plugin",
"instruments": []
},
{
"track_name": "Melody 2",
"type": "plugin",
"instruments": []
},
{
"track_name": "Chords",
"type": "plugin",
"instruments": []
},
{
"track_name": "Menu base",
"type": "plugin",
"instruments": []
},
{
"track_name": "Menu Melody",
"type": "plugin",
"instruments": []
},
{
"track_name": "Menu Start",
"type": "plugin",
"instruments": []
},
{
"track_name": "Menu Bass",
"type": "plugin",
"instruments": []
}
]
}

View File

@ -0,0 +1,71 @@
{
"file": "mmp/Samanta Freire.mmp",
"bpm": "140",
"tracks": [
{
"track_name": "TripleOscillator",
"type": "plugin",
"instruments": []
},
{
"track_name": "Sample track",
"type": "sample",
"instruments": []
},
{
"track_name": "Beat/Bassline 0",
"type": "bassline",
"instruments": [
{
"instrument_name": "Kicker"
},
{
"instrument_name": "bassdrum01.ogg"
},
{
"instrument_name": "hihat_closed05.ogg"
},
{
"instrument_name": "chorus01.ogg"
},
{
"instrument_name": "kick01.ogg"
},
{
"instrument_name": "Drone Arp"
},
{
"instrument_name": "vapo.wav"
},
{
"instrument_name": "OpulenZ"
}
]
},
{
"track_name": "Beat/Bassline 1",
"type": "bassline",
"instruments": []
},
{
"track_name": "Beat/Bassline 2",
"type": "bassline",
"instruments": []
},
{
"track_name": "Beat/Bassline 3",
"type": "bassline",
"instruments": []
},
{
"track_name": "Beat/Bassline 4",
"type": "bassline",
"instruments": []
},
{
"track_name": "Beat/Bassline 5",
"type": "bassline",
"instruments": []
}
]
}

View File

@ -0,0 +1,67 @@
{
"file": "mmp/SonsAlignígenas.mmp",
"bpm": "140",
"tracks": [
{
"track_name": "TripleOscillator",
"type": "plugin",
"instruments": []
},
{
"track_name": "Sample track",
"type": "sample",
"instruments": []
},
{
"track_name": "Batida/Linha de Baixo 0",
"type": "bassline",
"instruments": [
{
"instrument_name": "Kicker"
},
{
"instrument_name": "OpulenZ"
},
{
"instrument_name": "snare01.ogg"
},
{
"instrument_name": "clap01.ogg"
},
{
"instrument_name": "tom01.ogg"
},
{
"instrument_name": "tom02.ogg"
},
{
"instrument_name": "zap02.ogg"
},
{
"instrument_name": "hihat_opened01.ogg"
},
{
"instrument_name": "metronome01.ogg"
},
{
"instrument_name": "metronome02.ogg"
}
]
},
{
"track_name": "Batida/Linha de Baixo 3",
"type": "bassline",
"instruments": []
},
{
"track_name": "Batida/Linha de Baixo 2",
"type": "bassline",
"instruments": []
},
{
"track_name": "Batida/Linha de Baixo 1",
"type": "bassline",
"instruments": []
}
]
}

91
metadata/Um começo.json Normal file
View File

@ -0,0 +1,91 @@
{
"file": "mmp/Um começo.mmp",
"bpm": "143",
"tracks": [
{
"track_name": "TripleOscillator",
"type": "plugin",
"instruments": []
},
{
"track_name": "Sample track",
"type": "sample",
"instruments": []
},
{
"track_name": "Violino (Verso 2)",
"type": "bassline",
"instruments": [
{
"instrument_name": "bassdrum04.ogg"
},
{
"instrument_name": "hihat_closed04.ogg"
},
{
"instrument_name": "snare_hiphop01.ogg"
},
{
"instrument_name": "snare_muffled02.ogg"
},
{
"instrument_name": "snare_muffled01.ogg"
},
{
"instrument_name": "bassslap01.ogg"
},
{
"instrument_name": "violin_pizzicato01.ogg"
},
{
"instrument_name": "steel_guitar01.ogg"
}
]
},
{
"track_name": "Violino (Verso 1 - 1)",
"type": "bassline",
"instruments": []
},
{
"track_name": "Guitarra (Verso 1)",
"type": "bassline",
"instruments": []
},
{
"track_name": "Guitarra (Ponte)",
"type": "bassline",
"instruments": []
},
{
"track_name": "Baixo (Verso 2)",
"type": "bassline",
"instruments": []
},
{
"track_name": "Baixo (Refrão)",
"type": "bassline",
"instruments": []
},
{
"track_name": "Bateria (Ponte)",
"type": "bassline",
"instruments": []
},
{
"track_name": "Bateria (Refrão)",
"type": "bassline",
"instruments": []
},
{
"track_name": "Bateria (Verso 1)",
"type": "bassline",
"instruments": []
},
{
"track_name": "Base",
"type": "bassline",
"instruments": []
}
]
}

View File

@ -0,0 +1,81 @@
{
"file": "mmp/VitorAugusto.mmp",
"bpm": "140",
"tracks": [
{
"track_name": "TripleOscillator",
"type": "plugin",
"instruments": []
},
{
"track_name": "Sample track",
"type": "sample",
"instruments": []
},
{
"track_name": "Piano",
"type": "bassline",
"instruments": [
{
"instrument_name": "Kicker"
},
{
"instrument_name": "kick_distorted01.ogg"
},
{
"instrument_name": "clap01.ogg"
},
{
"instrument_name": "snare05.ogg"
},
{
"instrument_name": "hihat_closed01.ogg"
},
{
"instrument_name": "hihat_opened01.ogg"
},
{
"instrument_name": "Analog Piano 1"
},
{
"instrument_name": "Synth Violin 2 Fat"
}
]
},
{
"track_name": "Kick",
"type": "bassline",
"instruments": []
},
{
"track_name": "Kick_distorted",
"type": "bassline",
"instruments": []
},
{
"track_name": "Clap",
"type": "bassline",
"instruments": []
},
{
"track_name": "Snare",
"type": "bassline",
"instruments": []
},
{
"track_name": "Hihat_closed",
"type": "bassline",
"instruments": []
},
{
"track_name": "Hihat_opened",
"type": "bassline",
"instruments": []
},
{
"track_name": "Violino",
"type": "bassline",
"instruments": []
}
]
}

View File

@ -0,0 +1,48 @@
{
"file": "mmp/Wesley_Silva_Guimarães.mmp",
"bpm": "140",
"tracks": [
{
"track_name": "TripleOscillator",
"type": "plugin",
"instruments": []
},
{
"track_name": "Sample track",
"type": "sample",
"instruments": []
},
{
"track_name": "bassdrum01.ogg",
"type": "plugin",
"instruments": []
},
{
"track_name": "Beat/Bassline 0",
"type": "bassline",
"instruments": [
{
"instrument_name": "Kicker"
},
{
"instrument_name": "bassdrum01.ogg"
},
{
"instrument_name": "bassdrum02.ogg"
},
{
"instrument_name": "bassdrum04.ogg"
},
{
"instrument_name": "clap01.ogg"
},
{
"instrument_name": "kick02.ogg"
},
{
"instrument_name": "hihat_closed01.ogg"
}
]
}
]
}

View File

@ -0,0 +1,76 @@
{
"file": "mmp/leandro_souza_atvd1.mmp",
"bpm": "145",
"tracks": [
{
"track_name": "Áudio Amostras",
"type": "sample",
"instruments": []
},
{
"track_name": "Áudio Amostras",
"type": "sample",
"instruments": []
},
{
"track_name": "Áudio Amostras",
"type": "sample",
"instruments": []
},
{
"track_name": "clap",
"type": "bassline",
"instruments": [
{
"instrument_name": "Kicker"
},
{
"instrument_name": "forshaw - clap 1 .wav"
},
{
"instrument_name": "forshaw - kick 1.wav"
},
{
"instrument_name": "forshaw - snare 6.wav"
},
{
"instrument_name": "forshaw - hh 6.wav"
},
{
"instrument_name": "forshaw - OHITHAT (6).wav"
},
{
"instrument_name": "forshaw - 808 2.wav"
},
{
"instrument_name": "forshaw - 808 1.wav"
}
]
},
{
"track_name": "kick",
"type": "bassline",
"instruments": []
},
{
"track_name": "snare",
"type": "bassline",
"instruments": []
},
{
"track_name": "hithat",
"type": "bassline",
"instruments": []
},
{
"track_name": "open hat",
"type": "bassline",
"instruments": []
},
{
"track_name": "808",
"type": "bassline",
"instruments": []
}
]
}

View File

@ -0,0 +1,72 @@
{
"file": "mmp/tp1 - Luiz Filipe Almada.mmp",
"bpm": "140",
"tracks": [
{
"track_name": "Kick",
"type": "bassline",
"instruments": [
{
"instrument_name": "Kicker"
},
{
"instrument_name": "kick04.ogg"
},
{
"instrument_name": "hihat_closed04.ogg"
},
{
"instrument_name": "hihat_closed03.ogg"
},
{
"instrument_name": "hihat_closed01.ogg"
},
{
"instrument_name": "hihat_opened01.ogg"
},
{
"instrument_name": "steel_guitar01.ogg"
},
{
"instrument_name": "TripleOscillator"
},
{
"instrument_name": "clap01.ogg"
},
{
"instrument_name": "piano01.ogg"
}
]
},
{
"track_name": "Hihat - continuo",
"type": "bassline",
"instruments": []
},
{
"track_name": "HiHat2",
"type": "bassline",
"instruments": []
},
{
"track_name": "HiHat - passagem",
"type": "bassline",
"instruments": []
},
{
"track_name": "Clap",
"type": "bassline",
"instruments": []
},
{
"track_name": "Melody1",
"type": "bassline",
"instruments": []
},
{
"track_name": "Bass",
"type": "bassline",
"instruments": []
}
]
}

View File

@ -0,0 +1,36 @@
{
"file": "mmp/tp1_MarcoAntonio.mmp",
"bpm": "140",
"tracks": [
{
"track_name": "e_piano_accord01.ogg",
"type": "plugin",
"instruments": []
},
{
"track_name": "hihat_closed01.ogg",
"type": "plugin",
"instruments": []
},
{
"track_name": "clap04.ogg",
"type": "plugin",
"instruments": []
},
{
"track_name": "Snare03.ogg",
"type": "plugin",
"instruments": []
},
{
"track_name": "kick02.ogg",
"type": "plugin",
"instruments": []
},
{
"track_name": "hihat_opened01.ogg",
"type": "plugin",
"instruments": []
}
]
}

Binary file not shown.

BIN
mmp/FelipeFerraz.mmpz Normal file

Binary file not shown.

BIN
mmp/Gustavo Castro.mmpz Normal file

Binary file not shown.

BIN
mmp/Iara Rodrigues.mmpz Normal file

Binary file not shown.

Binary file not shown.

BIN
mmp/Samanta Freire.mmpz Normal file

Binary file not shown.

BIN
mmp/SonsAlignígenas.mmpz Normal file

Binary file not shown.

BIN
mmp/Um começo.mmpz Normal file

Binary file not shown.

BIN
mmp/VitorAugusto.mmpz Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
mmp/carlos.mmpz Normal file

Binary file not shown.

BIN
mmp/deprecado_wallace.mmpz Normal file

Binary file not shown.

BIN
mmp/eliasMendesSong.mmpz Normal file

Binary file not shown.

BIN
mmp/gabriel_gomes.mmpz Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
mmp/tp1_MarcoAntonio.mmpz Normal file

Binary file not shown.

30
mmp_files.md Normal file
View File

@ -0,0 +1,30 @@
---
layout: default
title: Arquivos MMP Processados
---
<h2>Arquivos MMP disponíveis:</h2>
<ul>
{% for files in site.data %}
{% assign file_data = files %}
{% for item in file_data %}
{% if item.file %}
<li>File path: <strong>{{ item.file }}</strong></li>
{% endif %}
{% if item.bpm %}
<li>BPM: {{ item.bpm }}</li>
{% endif %}
<ul>
{% for track in item.tracks %}
<li>{{ track.track_name }} ({{ track.type }})</li>
<ul>
{% for instrument in track.instruments %}
<li>{{ instrument.instrument_name }}</li>
{% endfor %}
</ul>
{% endfor %}
</ul>
{% endfor %}
{% endfor %}
</ul>

View File

@ -0,0 +1,17 @@
---
layout: default
title: Instrumentos Similares
---
<h2>Arquivos que possuem instrumentos similares:</h2>
<ul>
{% for item in site.data.processed_data %}
<li>{{ item.instrument_name }}:
<ul>
{% for file_name in item.files %}
<li>{{ file_name }}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>

30
quantasVezes.md Normal file
View File

@ -0,0 +1,30 @@
---
layout: default
title: Quantidade de repetições de instrumentos
---
<h2>Quantidade de vezes que cada instrumento é utilizado:</h2>
<ul id="instrument-list">
{% for item in site.data.processed_data %}
<li data-count="{{ item.count }}">{{ item.instrument_name }}: {{ item.count }}</li>
{% endfor %}
</ul>
<script>
// Apenas para deixar em ordem decrescente
document.addEventListener("DOMContentLoaded", function() {
var instrumentList = document.getElementById('instrument-list');
var items = Array.from(instrumentList.children);
items.sort(function(a, b) {
var countA = parseInt(a.getAttribute('data-count'));
var countB = parseInt(b.getAttribute('data-count'));
return countB - countA; // Ordenação decrescente
});
instrumentList.innerHTML = '';
items.forEach(function(item) {
instrumentList.appendChild(item);
});
});
</script>

149
scripts/indexa.py Normal file
View File

@ -0,0 +1,149 @@
import os
import json
import yaml
import subprocess
import xml.etree.ElementTree as ET
import shutil
def parse_mmp_file(file_path):
try:
#abrindo o .mmp, navegando até os instrumentos
tree = ET.parse(file_path)
root = tree.getroot()
bpm = root.find('./head').attrib.get('bpm', 'N/A')
tracks = root.findall('./song/trackcontainer/track')
track_info = []
#coletando as informações
for track in tracks:
track_name = track.attrib.get('name', 'N/A')
track_type = track.attrib.get('type')
if track_name:
instruments = []
if track_type == '0': # Faixa do tipo plugin
track_info.append({
'track_name': track_name,
'type': 'plugin',
'instruments': [],
})
elif track_type == '1': # Faixa do tipo Beat/Bassline
bbtrack = track.find('./bbtrack')
if bbtrack is not None:
trackcontainers = bbtrack.findall('./trackcontainer')
for container in trackcontainers:
instrument_tracks = container.findall('./track')
for instrument_track in instrument_tracks:
instrument_name = instrument_track.attrib.get('name', 'N/A')
instruments.append({
'instrument_name': instrument_name,
})
track_info.append({
'track_name': track_name,
'type': 'bassline',
'instruments': instruments,
})
elif track_type == '2': # Faixa do tipo Sample Track
track_info.append({
'track_name': track_name,
'type': 'sample',
'instruments': [],
})
return {
'file': file_path,
'bpm': bpm,
'tracks': track_info
}
except ET.ParseError as e:
print(f'Erro ao analisar o arquivo XML {file_path}: {e}')
return None
def process_mmps_in_folder(folder_path):
#coletando os arquivos .mmpz e/ou .mmp
mmp_files = [f for f in os.listdir(folder_path) if f.endswith('.mmp') or f.endswith('.mmpz')]
all_data = []
#caso não haja, criando a pasta dos arquivos mmpz
mmpz_folder = os.path.join(folder_path, 'mmpz')
if not os.path.exists(mmpz_folder):
os.makedirs(mmpz_folder)
#caso não haja, criando a pasta dos arquivos wav
wav_folder = os.path.join(folder_path, 'wav')
if not os.path.exists(wav_folder):
os.makedirs(wav_folder)
#processamento dos arquivos
for file in mmp_files:
file_path = os.path.join(folder_path, file)
print(f'Processando arquivo: {file_path}')
if file.endswith('.mmpz'):
destination_path = os.path.join(mmpz_folder, file)
shutil.move(file_path, destination_path)
print(f'Arquivo {file} movido para {destination_path}')
file_name = os.path.basename(destination_path)
file_name = os.path.splitext(file_name)[0] + ".mmp"
output_file_path = os.path.join(folder_path, file_name)
lmms_mmpz_convert = f'lmms --dump "{destination_path}" > "{output_file_path}"'
try:
#desabilitando os servidores gráficos
os.environ['QT_DEBUG_PLUGINS'] = '1'
os.environ['QT_QPA_PLATFORM'] = 'offscreen'
#rodando o comando para converter os arquivos .mmpz em .mmp
subprocess.run(lmms_mmpz_convert, shell=True, check=True)
print("Comando executado com sucesso!")
except subprocess.CalledProcessError as e:
print(f"Ocorreu um erro ao executar o comando: {e}")
wav_path = '/nethome/jotachina/public_html/mmpSearch/mmpSearch/mmp/mmpz/'+file_name.split('.')[0]
file_name = file_name.split('.')
#"C:\Program Files\LMMS\lmms.exe" -r beatJulioCesardeSousa.mmp -o C:\Users\bacteria\wav -f wav
lmms_wav_convert = f'lmms -r "{wav_path}.mmpz" -o /nethome/jotachina/public_html/mmpSearch/mmpSearch/mmp/wav/{file_name[0]} -f wav'
try:
#desabilitando os servidores gráficos
os.environ['QT_DEBUG_PLUGINS'] = '1'
os.environ['QT_QPA_PLATFORM'] = 'offscreen'
#rodando o comando para converter os arquivos .mmpz em .mmp
subprocess.run(lmms_wav_convert, shell=True, check=True)
print("Comando executado com sucesso!")
except subprocess.CalledProcessError as e:
print(f"Ocorreu um erro ao executar o comando: {e}")
mmp_data = parse_mmp_file(output_file_path)
#caso tenha algum arquivo .mmp perdido na pasta
elif file.endswith('.mmp'):
mmp_data = parse_mmp_file(file_path)
#guardando as informações dos arquivos no arquivo json
#/metadata (json) e /_data(yml)
if mmp_data:
all_data.append(mmp_data)
json_file_name = os.path.splitext(file)[0] + ".json"
json_file_path = os.path.join('metadata', json_file_name)
save_to_json(mmp_data, json_file_path)
yaml_file_name = os.path.splitext(file)[0] + ".yml"
yaml_file_path = os.path.join('_data', yaml_file_name)
save_to_yaml(mmp_data, yaml_file_path)
return all_data
def save_to_json(data, output_file):
with open(output_file, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)
def save_to_yaml(data, output_file):
with open(output_file, 'w', encoding='utf-8') as f:
yaml.dump(data, f)
mmp_folder_path = 'mmp'
processed_data = process_mmps_in_folder(mmp_folder_path)
print("Processamento concluído.")

50
scripts/statistics.py Normal file
View File

@ -0,0 +1,50 @@
import os
import yaml
import json
from collections import defaultdict
current_dir = os.path.dirname(__file__)
data_dir = os.path.abspath(os.path.join(current_dir, '..', '_data'))
if not os.path.exists(data_dir):
raise FileNotFoundError(f'O diretório {data_dir} não foi encontrado.')
instruments_count = defaultdict(int)
similar_files = defaultdict(list)
def load_yaml(file_path):
with open(file_path, 'r') as f:
return yaml.safe_load(f)
for filename in os.listdir(data_dir):
if filename.endswith('.yml') or filename.endswith('.yaml'):
file_path = os.path.join(data_dir, filename)
data = load_yaml(file_path)
bpm = data.get('bpm', 'N/A')
file_name = data.get('file', 'N/A')
tracks = data.get('tracks', [])
for track in tracks:
track_name = track.get('track_name', 'N/A')
instruments = track.get('instruments', [])
for instrument in instruments:
instrument_name = instrument.get('instrument_name', 'N/A')
instruments_count[instrument_name] += 1
if file_name not in similar_files[instrument_name]:
similar_files[instrument_name].append(file_name)
output_data = []
for instrument_name, count in instruments_count.items():
output_data.append({
'instrument_name': instrument_name,
'count': count,
'files': similar_files[instrument_name]
})
current_dir = os.path.dirname(__file__)
data_dir = os.path.abspath(os.path.join(current_dir, '..', '_data'))
output_file = os.path.join(data_dir, 'processed_data.json')
with open(output_file, 'w') as outfile:
json.dump(output_data, outfile, indent=4)
print(f"Dados processados e salvos em {output_file}")

21
wavFiles.md Normal file
View File

@ -0,0 +1,21 @@
---
layout: default
title: Músicas
permalink: /musicas/
---
# Músicas
Aqui estão as músicas exportadas:
{% for music in site.static_files %}
{% if music.path contains 'mmp/wav' %}
<div>
<h2>{{ music.name }}</h2>
<audio controls>
<source src="{{ music.path | relative_url }}" type="audio/wav">
Your browser does not support the audio element.
</audio>
</div>
{% endif %}
{% endfor %}