태그 보관물: beat-detection

beat-detection

Linux 용 비트 감지 소프트웨어? [닫은] Amarok 2는 ID3v2 태그의 ‘bpm’필드를 사용하여

Amarok 2는 ID3v2 태그의 ‘bpm’필드를 사용하여 음악 컬렉션을 검색 할 수 있습니다. 그 것이다 아주 내가 좋아하는 트랙의 ‘분위기’를 찾을 수 있도록 전체 음악 컬렉션을 태그를 다시 지정하는 것이 좋다.

그러나 나는 나를 도울 수있는 비트 감지 소프트웨어를 찾지 못했습니다. 당신은 하나를 사용한 적이 있습니까? CLI가 바람직합니다. 또한 동일한 ‘bpm’필드로 FLAC에 태그를 지정하는 것과 비슷한 것이 있는지 관심이 있습니다.

감사! 🙂

추신 : 나는 기분 바 기능이 훌륭하다는 것을 알고 있지만 검색에는 쓸모가 없습니다.



답변

사이트에서 DaveParillo는 BpmDj 프로젝트를 찾았다 제안 했습니다. 그것은 bpmcountbpm을 아주 잘 계산 하는 실행 파일을 가지고 있습니다 : 그것은 flac뿐만 아니라 mp3를 처리합니다 :

161.135 Metallica/2008 - Death Magnetic/01-That Was Just Your Life.flac
63.5645 Doom3.mp3

남은 것은 컬렉션에 태그를 다시 지정하는 것입니다. 성공할 때마다이 답변을 업데이트하겠습니다. 감사! 🙂


1 단계

bpmcount전체 컬렉션에 대해 실행 하고 결과를 텍스트 파일에 저장하십시오. 문제는 bpmcount때때로 충돌하고 여러 파일을 처리 할 때 최대 2GB의 메모리를 사용하려고하므로 파일 이름을 하나씩 입력해야한다는 것입니다. 이처럼 :

musicdir='/home/ootync/music'
find "$musicdir" -iregex ".*\.\(mp3\|ogg\|flac\|ape\)" -exec bpmcount {} \; \
    | fgrep "$musicdir" > "$musicdir/BPMs.txt"

2 단계

추가 패키지가 필요합니다 : apt-get install vorbis-tools flac python-mutagen. 이제 ‘bpm’태그를 추가하는 방법을 살펴보십시오.

mid3v2 --TBPM 100 doom3.mp3
vorbiscomment -a -t "BPM=100" mother.ogg
metaflac --set-tag="BPM=100" metallica.flac

아아, * .ape 트랙이 없습니다.

이제 BPM이 있고 전체 컬렉션을 다시 태그해야합니다. 스크립트는 다음과 같습니다.

cat "$musicdir/BPMs.txt" | while read bpm file ; do
    bpm=`printf "%.0f" "$bpm"` ;
    case "$file" in
        *.mp3) mid3v2 --TBPM "$bpm" "$file" > /dev/null ;;
        *.ogg) vorbiscomment -a -t "BPM=$bpm" "$file" ;;
        *.flac) metaflac --set-tag="BPM=$bpm" "$file" ;;
        esac
    done

2.1 단계 방문
다음은 컬렉션에 BPM 태그를 추가하는 스크립트입니다.

CPU 코어 당 하나의 프로세스를 실행하여 프로세스 속도를 높입니다. 또한 임시 파일을 사용하지 않으며 파일에 이미 태그가 있는지 여부를 감지 할 수 있습니다.

또한 FLAC에 때때로 ID3과 VorbisComment가 모두 있음을 발견했습니다. 이 스크립트는 둘 다 업데이트합니다.

#!/bin/bash

function display_help() {
    cat <<-HELP
            Recursive BPM-writer for multicore CPUs.
            It analyzes BPMs of every media file and writes a correct tag there.
            Usage: $(basename "$0") path [...]
            HELP
    exit 0
    }

[ $# -lt 1 ] && display_help

#=== Requirements
requires="bpmcount mid3v2 vorbiscomment metaflac"
which $requires > /dev/null || { echo "E: These binaries are required: $requires" >&2 ; exit 1; }

#=== Functions

function bpm_read(){
    local file="$1"
    local ext="${file##*.}"
    declare -l ext
    # Detect
    { case "$ext" in
        'mp3')  mid3v2 -l "$file" ;;
        'ogg')  vorbiscomment -l "$file" ;;
        'flac') metaflac --export-tags-to=- "$file" ;;
        esac ; } | fgrep 'BPM=' | cut -d'=' -f2
    }
function bpm_write(){
    local file="$1"
    local bpm="${2%%.*}"
    local ext="${file##*.}"
    declare -l ext
    echo "BPM=$bpm @$file"
    # Write
    case "$ext" in
        'mp3')  mid3v2 --TBPM "$bpm" "$file" ;;
        'ogg')  vorbiscomment -a -t "BPM=$bpm" "$file" ;;
        'flac') metaflac --set-tag="BPM=$bpm" "$file"
                mid3v2 --TBPM "$bpm" "$file" # Need to store to ID3 as well :(
                ;;
        esac
    }

#=== Process
function oneThread(){
    local file="$1"
    #=== Check whether there's an existing BPM
        local bpm=$(bpm_read "$file")
        [ "$bpm" != '' ] && return 0 # there's a nonempty BPM tag
    #=== Detect a new BPM
    # Detect a new bpm
    local bpm=$(bpmcount "$file" | grep '^[0-9]' | cut -f1)
    [ "$bpm" == '' ] && { echo "W: Invalid BPM '$bpm' detected @ $file" >&2 ; return 0 ; } # problems
    # Write it
    bpm_write "$file" "${bpm%%.*}" >/dev/null
    }

NUMCPU="$(grep ^processor /proc/cpuinfo | wc -l)"
find $@ -type f -regextype posix-awk -iregex '.*\.(mp3|ogg|flac)' \
    | while read file ; do
        [ `jobs -p | wc -l` -ge $NUMCPU ] && wait
        echo "$file"
        oneThread "$file" &
        done

즐겨! 🙂


답변

이 도구는 BPM을 감지하여 FLAC 파일 태그에 넣는 명령 줄 도구입니다.

http://www.pogo.org.uk/~mark/bpm-tools/


답변

kolypto의 원래 스크립트를 사용하여 사용 bpmcount하고 설치하는 것이 더 좋은 bpm-tag(유틸리티 bpm-tools)로 다시 작성했습니다 . 나는 또한 내 자신의 일부를 개선했다.

GitHub https://github.com/meridius/bpmwrap 에서 찾을 수 있습니다


답변

나는 당신이 찾고있는 것을 정확하게하는 도구를 모르지만 MusicIP 와 함께 놀았습니다 .

리눅스 / 자바 버전을 사용했습니다-음악 라이브러리를 완전히 분석하는 데 오랜 시간이 걸리지 만 실제로 작동합니다. 다른 노래와 비슷한 노래를 찾을 수 있습니다. 생성 된 재생 목록을 마우스 오른쪽 버튼으로 클릭하고 옵션을 선택하여 선택한 노래와 같이 더 많거나 적은 노래를 선택할 수 있습니다. 특정 장르를 제거하도록 선택할 수도 있습니다. 시원하지만 와우 팩터가 사라진 후에는 사용을 중단했습니다.

무료 버전은 최대 75 곡의 노래를 (최소한) m3u 형식으로 내 보냅니다.

현재 지원되지 않지만 Predexis로 상용화하려고 시도한 것 같습니다 .


답변

밴시 미디어 플레이어 는 당신이 찾고있는 도구 일뿐 만 아니라 bpm을 감지 할 수 있습니다.

모든 음악 재생, 구성 및 휴대용 플레이어와의 동기화에 Banshee를 사용합니다. 나는 제휴하지 않지만, 내가 시도한 것 중 가장 좋은 프로그램을 좋아합니다. 또한 bpm을 포함하여 트랙의 모든 종류의 속성을 기반으로 “스마트 재생 목록”을 생성 할 수 있습니다.

노래에 관한 모든 종류의 것들을 분석하는 확장 프로그램이 있으며 연주하는 노래와 비슷한 노래를 찾을 수 있습니다. 그것은 Mirage 라고 불리우며 잠시 동안 사용했지만 더 이상 사용하지 않습니다. 여러 가지 분위기에 맞는 여러 재생 목록을 만들었으므로 (Mirage에 따르면 반드시 비슷한 것은 아닙니다).

Banshee가 탐지 한 bpm을 파일의 ID3v2 “bpm”태그에 다시 저장할지 여부를 모르겠습니다. 누구나 프로그램 외부에서 bpm 태그를 쉽게 확인하는 방법을 알고 있다면 확인하겠습니다.


답변

Linux는 아니지만 Wine에서 잘 작동 할 수 있습니다 -MixMeister BPM Analyzer를 사용합니다.


답변

올바른 BPM 값으로 MP3 파일에 태그를 지정하는 다른 도구를 찾았습니다.

BPMDetect 라고 합니다 . 오픈 소스. QT 라이브러리는 Gnome에서 잘 작동합니다. GUI와 함께 제공되지만 콘솔 전용 버전으로 컴파일 할 수 있습니다 (readme.txt에 설명 된대로 “scons console = 1″실행).

그렇지 않으면 결국 64 비트 Ubuntu 호스트 (fmodex 종속성으로 인해)에서 BPMDetect를 컴파일하는 데 어려움이 있었기 때문에 BpmDJ의 “bpmcount”도 사용했습니다. BpmDJ 웹 사이트에서 사용할 수있는 [x64 .rpm] [3]에서 추출한 “bpmcount”바이너리 (위의 쿨하고 잘 작성된) 셸 스크립트를 가져 왔습니다 (.rpm을 추출했습니다). 와

pm2cpio bpmdj-4.2.pl2-0.x86_64.rpm|cpio -idv

그리고 그것은 매력처럼 작동했습니다. 방금 위의 스크립트를 수정해야 했으므로 내 측면에서 작동하지 않았습니다 (bpmcount 바이너리의 stdout / stderr에 문제가 있음). 내 수정은 파일 리디렉션에 관한 것입니다.

local bpm=$(bpmcount "$file" 3>&1 1>/dev/null 2>&3 | grep '^[0-9]' | cut -f1)