Normalizar Áudio de Arquivos MP3

Publicado por Fabio C Bastos (última atualização em 03/01/2012)

[ Hits: 7.399 ]

Homepage: http://khfw.wordpress.com

Download normalizaAudio




Trata-se de um shell script para rodar o comando normalize-audio em arquivos de áudio do tipo mp3. O pacote normalize-audio roda em Ubuntu mas não em Fedora (não sei se há outro nome ou outro pacote similar) e você pode instalar com sudo apt-get install normalize-audio.

Já aviso que fiz o script correndo e que sou iniciante então há alguns problemas de lógica. Essas falhas não impedem o correto funcionamento do programa mas você vai perceber que falta um ou outro laço para evitar ter que iniciar o programa novamente. Apesar disso, atinge o objetivo que é agilizar a ação em muitos arquivos (no meu caso eram quase 3000 arquivos que eu teria que fazer um a um).

Lembrando que Música é o diretório onde estão os meus arquivos, se for necessário, basta alterar antes de executar o script. Veja que ele não faz distinção de usuários, ou seja, você pode rodar em qualquer perfil que vai funcionar do mesmo jeito.
Espero que quem tem mais conhecimento que eu, se tiver disponibilidade e boa vontade, que contribua com esse código. Vai servir para me ajudar a aprender mais sobre o assunto e, desde já, agradeço.

  



Esconder código-fonte

#!/bin/bash
 clear
 echo “SCRIPT PARA NORMALIZAR VOLUME DE ARQUIVOS DE ÁUDIO!”
 cd /home/$USER/Música
 if [ -e /home/$USER/Música ]
 then
 ls -l |less
 echo -n “Informe o diretório que quer acessar (digite somente a primeira palavra e clique Enter): “
 read d1
 cd $d1*
 pwd
 echo -n “Lista de diretórios disponíveis.”
 ls -l
 echo -n “Quer normalizar um arquivo (digite 1), normalizar vários (digite 2) ou acessar um diretório (digite 3)? Código: “
 read d2

if [ $d2 = 1 ]
 then
 echo -n “Informe nome da faixa que quer normalizar (digite somente a primeira palavra e clique Enter): “
 read d3
 normalize-audio $d3*
 else
 if [ $d2 = 2 ]
 then
 normalize-audio *.mp3
 else
 if [ $d2 = 3 ]
 then
 echo -n “Informe o diretório que quer acessar (digite somente a primeira palavra e clique Enter): “
 read d4
 cd $d4*
 ls -l
 echo -n “Quer normalizar um arquivo (digite 1), normalizar vários (digite 2) ou acessar um diretório (digite 3)? Código: “
 read d5
 if [ $d5 = 1 ]
 then
 echo -n “Informe nome da faixa que quer normalizar (digite somente a primeira palavra e clique Enter): “
 read d3
 normalize-audio $d3*
 else
 if [ $d5 = 2 ]
 then
 normalize-audio *.mp3
 else
 if [ $d5 = 3 ]
 then
 ls -l
 echo -n “Informe o diretório que quer acessar (digite somente a primeira palavra e clique Enter): “
 read d4
 cd $d4*
 ls -l
 echo -n “Digite 2 para normalizar todos os mp3 desta pasta: “
 read d6
 if [ $d6 == 2 ]
 then
 normalize-audio *.mp3
 fi
 fi
 fi
 fi
 fi
 fi
 fi
 fi

Scripts recomendados

Echoc (Comando echo, mas com cores)

Gerenciador de conexões SSH

Exercicio

A coisa funciona?

A-ImgMenus


  

Comentários
[1] Comentário enviado por himfea em 03/01/2012 - 08:34h

no Fedora o pacote se chama somente "normalize" e e o comando de shell é "normalize-mp3"....nunca usei esse pacote, farei uns testes para comparar a diferença =]
tenho algumas idéias de como tu poderias otimizar esse script:
- utilizar o find com a opção exec, assim não precisa necessariamente indicar sempre um diretório, exemplo eu que tenho 100GB de MP3, heheeeh
- utilizar o case ao invés de muitos ifs, heheheeh

se eu efetuar alguma modificação no script lhe envio para verificar =]
abraços

[2] Comentário enviado por facb69 em 04/01/2012 - 16:57h

himfea.
Realmente, a opção do case parece uma boa assim com o find. Deste, não conheço o uso com exec, tentarei algo com isso.
Quanto ao Fedora, baixei aqui mas o comando ficou como normalize mesmo, com normalize-mp3, deu erro "Can't exec "": No such file or directory at /usr/bin/normalize-mp3 line 741. Error decoding, stopped at /usr/bin/normalize-mp3 line 746.".
Valeu as dicas e a atenção.

Abraço,
Fábio

[3] Comentário enviado por himfea em 04/01/2012 - 17:35h

pra mim também acusou esse erro ae, mas acabei não pesquisando uma solução
hehehe

[4] Comentário enviado por mbrunoac em 22/01/2015 - 21:40h

Kra da uma olhada nessa adaptação do seu script que eu fiz, NÂO TESTEI

#!/bin/bash
function identifica_Distro(){
DISTRO=$(cat /etc/issue | awk -e '{if(NR == 1) print $1 }')
case $DISTRO in
"Fedora") echo "Sua Distribuição é Fedora, script para fedora ainda em construção"
exit ;;
"Ubuntu") Menu ;;
esac
}
function Menu(){
clear
echo "SCRIPT PARA NORMALIZAR VOLUME DE ARQUIVOS DE ÁUDIO!"
cd /home/$USER/Música
dir=$(pwd)
echo "Diretório pré-selecionado " $dir
ls -l | awk '{print $9}'
echo -n "Informe o diretório que quer acessar (digite somente a primeira palavra e clique Enter): "
read d
cd $d*
pwd
echo -n "Lista de diretórios disponíveis. "
ls -l | awk '{print $9}'
Opcoes
}

function Opcoes(){
while true; do
echo "Normalizar um arquivo (Digite 1)"
echo "Normalizar Todos (Digite 2)"
echo "Acessar um diretório (Digite 3)"
echo "Sair (Digite 0): Opção?"
read opt
case $opt in
1) Normaliza $opt ;;
2) Todos ;;
3) echo -n "Informe o diretório que quer acessar (digite somente a primeira palavra e clique Enter): "
read d4
cd $d4*
ls -l | awk '{print $9}' ;;
0) break ;;
esac
done
}

function Normaliza(){
case $opt in
1) ls -l | awk '{print $9}'
echo -n "Informe nome da faixa que quer normalizar (digite somente a primeira palavra e clique Enter): "
read faixa
normalize-audio $faixa*
;;

2) normalize-audio *.mp3 ;;

3) echo -n "Informe o diretório que quer acessar (digite somente a primeira palavra e clique Enter): "
read d
cd $d*
pwd
echo -n "Lista de diretórios disponíveis."
ls -l | awk '{print $9}'
Opcoes ;;
0) break ;;
esac
}

identifica_Distro


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts