터미널에서 미디 파일을 어떻게 재생할 수 있습니까? midi를 가지고 놀고

터미널에서 미디 파일을 재생할 수있는 가장 간단한 명령 줄 앱 (또는 내가 모르는 매버릭스의 온보드 도구)을 찾고 있습니다. 가능한 한 평범합니다 play myfile.mid.

컨텍스트 : Python에서 midi를 가지고 놀고 있는데 스크립트에서 실행할 수있는 것이 필요합니다. GUI, 창 없음, 재생 만 가능합니다. 파이썬 스크립트에서 호출 할 수 있어야하지만 터미널에서 작동하는 것은 무엇이든해야합니다.



답변

이것은 원래 예상했던 것보다 더 복잡한 문제로 판명되었습니다.

QuickTime 7은 QuickTime 7과 달리 MIDI 파일을 재생할 수 없습니다.

내가 알 수있는 한, Mac OS X에서 MIDI 파일을 재생하는 “내장”솔루션 이 없다는 것을 의미합니다 (예 : afplay작동하지 않음). 따라서 모든 솔루션에는 다른 프로그램을 다운로드하여 설치해야한다고 생각합니다.

옵션 # 1 : Mavericks에서 여전히 잘 작동하는 QuickTime 7 을 다운로드하여 설치 한 후 다음 방법으로 midi 파일을 재생할 수 있습니다.

open -a QuickTime\ Player\ 7 /path/to/your/file.mid 

그러나 사용자가 해당 환경 설정을 활성화 한 경우에만 자동 재생됩니다 . 기본적으로 꺼져 있습니다.

옵션 # 2 : FluidSynth 사용

설치하려면 Fink, MacPorts 또는 (나의 추천) Homebrew를 사용해야합니다. Homebrew가 설치되면 터미널에 다음을 입력하십시오.

brew install fluidsynth

(MacPorts의 명령은 sudo port install fluidsynthFink의 명령입니다 fink install fluidsynth.)

그러나, 다운로드 fluidsynth는 거기에 약간만 있습니다. 그런 다음 “들리지 않은”SoundFont 파일이 필요합니다. 이 그들에 대한 정보는 여기에서

S. Christian Collins 에서 “GeneralUser”라는 하나를 무료로 다운로드했습니다. 현재 버전 (2013-11-27 기준)은 FluidSynth 버전 1.44 입니다. {향후 직접 링크가 끊어지면 이전 링크를 사용하여 GeneralUser의 일반 웹 페이지로 이동하십시오.}

다운로드 한 후 압축을 풀면 “GeneralUser GS FluidSynth v1.44.sf2″를 포함한 일련의 파일이 생성됩니다 (명명은 나중에 변경 될 수 있음). 해당 파일의 이름을 바꾸고로 옮겼습니다 /usr/local/share/fluidsynth/generaluser.v.1.44.sf2.

SoundFont 파일이 설치되고 fluidsynth설치되면 다음 명령을 사용하여 미디를 재생할 수 있습니다.

fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 ~/Music/example.mid 

nb 그렇게 할 때 표시되는 (무해한) 오류 메시지가 있습니다. 당신이 그들을 억제하려면 다음을 사용하십시오 :

(fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 ~/Music/example.mid 2>&1) >/dev/null

대신에.

분명히 나는 결코 그 모든 기억 않을거야, 그래서 만든 zsh호출 된 함수를playmidi

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
}

( 그것도 효과가 있어야 합니다 bash.)

이제 내가해야 할 일은 다음과 같습니다.

playmidi example.mid 

example.mid재생됩니다.


답변

이것은 나를 위해 일했다 :

brew 설치 소심
$ 소심한 file.midi

답변

다음을 사용하여 비 대화식 CLI 인터페이스와 함께 VLC를 사용할 수 있습니다 -I dummy.

/Applications/VLC.app/Contents/MacOS/VLC -I dummy file.mid vlc://quit

midi 지원을 사용하려면 환경 설정> 모두 표시> 입력 / 코덱> 오디오 코덱> Fluid Synth로 이동하여 http://www.schristiancollins.com/generaluser.php 의 FluidSynth 사운드 폰트와 같은 파일로 사운드 폰트를 설정 하십시오 .

편집 : 최신 버전의 VLC에서 midi 지원이 제거되었습니다. TJ Luoma에서 설명한대로 쉘에서 fluidsynth를 계속 사용할 수 있습니다.

brew install fluidsynth
wget http://www.schristiancollins.com/soundfonts/GeneralUser_GS_1.44-FluidSynth.zip
unzip GeneralUser_GS_1.44-FluidSynth.zip
mkdir -p /usr/local/share/fluidsynth
mv GeneralUser\ GS\ 1.44\ FluidSynth/GeneralUser\ GS\ FluidSynth\ v1.44.sf2 /usr/local/share/fluidsynth
fluidsynth -i /usr/local/share/fluidsynth/GeneralUser\ GS\ FluidSynth\ v1.44.sf2 file.mid

답변

VLC의 자체 포럼 에 대한 이 게시물에 따르면 사이트 관리자 인 Felix Paul Kuehne 은 말했습니다.

안녕하세요, 마지막 업데이트에 대한 컴파일 과정에서 FluidSynth가 사라졌습니다. 그것이 곧 2.1.2로 돌아올 것임을 확신하십시오!

이제 vlc 2.0.9로 다운 그레이드하거나 vlc 2.1.2를 기다립니다. 이렇게하면 기존 솔루션이 예전처럼 작동합니다.


답변

정답은 아니지만 Mac OS X 명령 행에서 미디 데이터를 전송할 수있는 작은 앱이 있습니다. 기본 GarageBand 기능도 제어 할 수 있습니다 :
http://www.bibiko.de/music/MIDImyAPP/


답변

보다 편리하게하기 위해 AppleScript 앱에서 TJ Luoma의 답변 을 마무리 할 수 있습니다.

on open inputFile
    tell application "Terminal"
        do script "fluidsynth -i /usr/local/share/fluidsynth/generaluser.v.1.44.sf2 " & (quoted form of POSIX path of inputFile as string)
        activate
    end tell
end open

그런 다음 임의의 .mid 파일에서 정보 입수를 선택하고 “Open with :”를 AppleScript 앱으로 변경 한 다음 “Change All …”을 눌러 .mid 파일을 여는 기본 방법으로 만들 수 있습니다. 이제 MIDI 파일을 두 번 클릭하면 터미널 창이 열리고 자동으로 재생됩니다.