Este acabou por ser um problema mais complicado do que eu esperava inicialmente.
O QuickTime X não pode reproduzir arquivos MIDI, embora o QuickTime 7 possa.
Tanto quanto posso dizer, significa que não há uma solução "integrada" para reproduzir arquivos MIDI no Mac OS X (por exemplo, afplay
não funciona). Portanto, acredito que qualquer solução envolverá o download e a instalação de outro programa.
Opção 1: Faça o download e instale o QuickTime 7, que ainda funciona bem no Mavericks, e você pode reproduzir arquivos midi:
open -a QuickTime\ Player\ 7 /path/to/your/file.mid
no entanto, isso só será reproduzido automaticamente se o usuário tiver ativado essa preferência, que acredito estar desativada por padrão.
Opção # 2: Use FluidSynth
Para instalá-lo, você deve usar o Fink, MacPorts ou (minha recomendação) o Homebrew. Depois que o Homebrew estiver instalado, digite isto no Terminal:
brew install fluidsynth
(O comando de MacPorts seria sudo port install fluidsynth
e o de Fink seria fink install fluidsynth
.)
No entanto, o download fluidsynth
apenas leva você a meio caminho. Então você precisa de um arquivo "SoundFont", do qual eu nunca tinha ouvido falar antes. Há informações sobre eles aqui
Eu baixei um de S. Christian Collins chamado "GeneralUser", que é gratuito. A versão atual (em 27/11/2013) é a versão 1.44 do FluidSynth . {Se esse link direto quebrar no futuro, use o link anterior, que o levará à página da Web comum do GeneralUser.}
Depois de baixar e descompactar, você terá uma série de arquivos, incluindo "GeneralUser GS FluidSynth v1.44.sf2" (obviamente o nome pode mudar no futuro). Renomeei esse arquivo e o mudei para /usr/local/share/fluidsynth/generaluser.v.1.44.sf2
.
Quando o arquivo SoundFont fluidsynth
estiver instalado e instalado, você poderá reproduzir um midi usando este comando:
fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 ~/Music/example.mid
Nota: existem algumas mensagens de erro (aparentemente inofensivas) exibidas quando você faz isso. Se você deseja suprimi-los, use:
(fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 ~/Music/example.mid 2>&1) >/dev/null
em vez de.
Obviamente, nunca vou me lembrar de tudo isso, então criei uma zsh
função chamadaplaymidi
function playmidi {
SOUNDFONT='/usr/local/share/fluidsynth/generaluser.v.1.44.sf2'
if [ -e "$SOUNDFONT" ]
then
for i in "$@"
do
if [ -e "$i" ]
then
(fluidsynth -i "$SOUNDFONT" "$i" 2>&1) >/dev/null
else
echo "[playmidi]: cannot find file at $i"
return 1
fi
done
else
echo "[playmidi]: SOUNDFONT file not found at $SOUNDFONT"
return 1
fi
}
(Isso também deve funcionar para bash
mim.)
Agora tudo o que tenho a fazer é digitar:
playmidi example.mid
e example.mid
vai jogar.
Isso funcionou para mim:
fonte
file.midi: No such file or directory
Você pode usar o VLC com uma interface CLI não interativa com
-I dummy
:Para ativar o suporte midi, vá para Preferências> Mostrar tudo> Entrada / codecs> Codecs de áudio> Fluid Synth e defina o soundfont para um arquivo como o FluidSynth soundfont em http://www.schristiancollins.com/generaluser.php .
Edit: o suporte midi foi removido da versão recente do VLC. Você ainda pode usar o fluidsynth do shell, conforme descrito por TJ Luoma:
fonte
De acordo com este post nos fóruns do VLC, Felix Paul Kuehne , administrador do site, disse
Portanto, por enquanto, faça o downgrade para o vlc 2.0.9 ou aguarde o vlc 2.1.2. Dessa forma, sua solução existente funcionará como antes.
fonte
Não é exatamente a resposta, mas há um pequeno aplicativo que pode enviar dados midi na linha de comando do Mac OS X. Também pode controlar funções básicas do GarageBand: http://www.bibiko.de/music/MIDImyAPP/
fonte
Para tornar as coisas mais convenientes, você pode resumir a resposta de TJ Luoma em um aplicativo AppleScript:
Você pode selecionar Obter informações em um arquivo .mid aleatório, alterar "Abrir com:" para o aplicativo AppleScript e pressionar "Alterar tudo ..." para torná-lo a maneira padrão de abrir arquivos .mid. Agora, quando você clica duas vezes em um arquivo MIDI, ele abre a janela do Terminal e o reproduz automaticamente.
fonte