# Uniformização/Unificação dos datasets Pega os datasets IOACAS e MIR e os "mergeia" em um. Este algoritmo precede a execução de [lsh](https://github.com/HosanaUFRRJ2014/lsh). **Importante:** Para o algoritmo funcionar, é preciso ter os dois datasets dentro da pasta deste repositório para o código funcionar. Estes não estão disponibizados neste repositório devido a direitos autorais. Dois deles, podem ser recuperados do site [MIREX](https://www.music-ir.org/mirex/wiki/2019:Query_by_Singing/Humming#Data). Para que possa ocorrer a expansão deste dataset é preciso adicionar um terceiro dataset. Este terceiro dataset, o dataset de ruído, pode ser encontrado em [The Lakh MIDI Dataset v0.1](https://colinraffel.com/projects/lmd/) (Baixar o dataset LMD-matched). ## Etapas: A fim de obter um dataset unificado, executar as etapas abaixo: Para ajuda via comando, consulte `python main.py --help` 1. **Renomear pasta deste repositório para `uniformiza_dataset`** 2. **Recuperar os datasets originais** [do MIXEX, seção "Data"](https://www.musicir.org/mirex/wiki/2019:Query_by_Singing/Humming#Data). Colocá-los na pasta do reposítório. TODO: verificar pequenas modificações manuais feitas nos datasets antes de executar o algoritmo. Houve uniformização manual do nome das pastas. 3. **Executar a uniformização/unificação** python main.py -norm True -expand False Este comando gera uma pasta contendo as queries, outra as músicas (pasta songs). Gera também os seguintes arquivos: - *expected_results.list* - Contém uma lista que relaciona cada query com o nome (sem extensão) esperado da música dos datasets unificados. - *ioacas_query_correlation_file.list* - Relaciona os nomes das queries do dataset unificado com os do dataset IOACAS. - *ioacas_song_correlation_file.list* - Relaciona os nomes das músicas do dataset unificado com os do dataset IOACAS. - *midi_songs.list* - Lista das músicas em formato MIDI. - *mir_query_correlation_file.list* - Relaciona os nomes das queries do dataset unificado com os do dataset MIR. - *mir_song_correlation_file.list* - Relaciona os nomes das músicas do dataset unificado com os do dataset MIR. 4. **Adicionar músicas de ruído na pasta de músicas** Para aumentar o dataset e verificar se o algoritmo está funcionando em boa velocidade e acurácia. 4.1. Criar lista das músicas presentes no dataset de ruído grep .*[\.mid]$ -r -l | sort > midi.list 4.2. Executar comando de expansão do dataset python main.py -norm False -expand True 5. **(Opcional) Transformar as queries do formato MID para WAV.** 5.1. Instalar, em seu Sistema Operacional, o programa Timidity. sudo apt update sudo apt install timidity # funciona no Ubuntu 18.04 5.2. Executar a conversão python main.py -norm False -expand False -convert $CONVERSION_OPTION CONVERSION_OPTION válidos: - "only_mirex" - converte apenas os datasets MIR_QBSH e IOACAS do MIREX. - "only_lmd" - converte apenas o datasets vindo do LMD - "all" - converte todos os três datasets envolvidos - "none" - não converte nenhum dataset (opção padrão) As músicas convertidas ficarão na pasta `songs_wav.` **NOTA:** As opções que envolvem a conversão do dataset LMD trazem consigo um excessivo consumo de memória de disco. Numa das tentativas de conversão, cerca de 7 mil músicas convertidas ocuparam mais de 200 GB.