{"id":775,"date":"2014-12-16T15:49:21","date_gmt":"2014-12-16T14:49:21","guid":{"rendered":"http:\/\/minifahrer.bplaced.net\/wrdprs\/?p=775"},"modified":"2014-12-16T21:38:27","modified_gmt":"2014-12-16T20:38:27","slug":"bpmcounter-sh-beats-per-minute","status":"publish","type":"post","link":"http:\/\/minifahrer.bplaced.net\/wrdprs\/?p=775","title":{"rendered":"bpmcounter.sh Beats per minute"},"content":{"rendered":"<p>Meine Audiodateien liegen auf einem Debian System und ich stand vor der Thematik das TBPM Tag meiner mp3 Dateien zu pflegen.<\/p>\n<p>Nach l\u00e4ngerer Recherche bin ich auf das Paket bpm-tools gestossen, mit dem das z\u00e4hlen der Beats sehr gut funktioniert.<\/p>\n<p>Es w\u00fcrde diesen Beitrag nicht geben, wenn auch das schreiben der Tags funktionieren w\u00fcrde.<\/p>\n<p>bpm-tag hat bei meinen Dateien (idv2.3\/2.4) nicht nur das TBPM Feld beschrieben, sondern die Inhalte aller anderen (Ausnahme APIC) Tags gel\u00f6scht.<\/p>\n<p>Daher der gute Rat &#8211; wer das script nutzen m\u00f6chte &#8211; probiert vorher mit Kopien und nicht mit den einzigen originalen, ob es Nebenwirkungen gibt.<\/p>\n<p>Die Problematik mit den gel\u00f6schten Feldern und der Tatsache, dass bpm-tag (nicht der spezifikation entsprechend) kommawerte in die Tags schreibt habe ich also mit dem folgenden Script\/wrapper gel\u00f6st.<\/p>\n<p>Aus den anderen Beitr\u00e4gen wei\u00df ich um die Problematik der Zeilenumbr\u00fcche &#8211; daher das Script als gezipter Anhang.<\/p>\n<p>Folgende Pakete werden (mindestens) vorausgesetzt:<\/p>\n<p><code><br \/>\npython<br \/>\neyeD3<br \/>\nsudo apt-get install sox<br \/>\nsudo apt-get install lame<br \/>\nsudo apt-get install libsox-fmt-mp3<br \/>\nsudo apt-get install bpm-tools<br \/>\n<\/code><\/p>\n<p>Auch wenn es anders in der Hilfe von bpm-tag beschrieben ist &#8211; die beiden Schalter bpm-tag <strong>-f -n<\/strong> sind n\u00f6tig, damit bpm-tag nur die bpm z\u00e4hlt und nicht in den Tag schreibt.<\/p>\n<p>Da das z\u00e4hlen etwas Zeitaufwendig ist, wird zuerst mittels eyeD3 nachgesehen, ob das TBPM Feld beschrieben ist, bevor die bpm gez\u00e4hlt werden.<br \/>\nEyeD3 nutze ich (und damit der Wrapper\/ das Script) auch zum schreiben der Tags.<\/p>\n<p>Das Script geht rekursiv durch alle Unterordner.<br \/>\nWem das Script gef\u00e4llt, sollte den untenstehenden Anhang benutzen und nicht via copy &amp; paste die Zeilen \u00fcbernehmen, da alle Browser die Zeilen parsen und verarbeiten.<\/p>\n<p><code><br \/>\n#!&#047;bin&#047;bash<\/p>\n<p>SAVEIFS=$IFS<br \/>\nIFS=$(echo -en &quot;\\n\\b&quot;)<br \/>\nVERSION=0.1<\/p>\n<p>if (( $# &lt; 1 )) ; then<br \/>\n    cd &quot;$1&quot;<br \/>\nfi<\/p>\n<p>header() {<br \/>\n\t # echo ----------------------------------------------------------<br \/>\n\t echo bpm.sh - adding bpm tag, version $VERSION<br \/>\n\t echo ----------------------------------------------------------<br \/>\n\t echo -ne &quot;\\n&quot;<br \/>\n \t}<\/p>\n<p>check_bpm-tools() {<br \/>\n\tlocal bpmtagok=$(which bpm-tag)<br \/>\n\tif &#091; -z &quot;$bpmtagok&quot; &#093;; then<br \/>\n\t\techo &quot;you need bpm-tag to run this script&quot;<br \/>\n\t\techo &quot;apt-get install bpm-tools&quot;<br \/>\n                exit 1<br \/>\n\tfi<br \/>\n\t# checking for eyeD3 ...<br \/>\n        local eyed3ok=$(which eyeD3)<\/p>\n<p>\tif &#091; -z &quot;$eyed3ok&quot; &#093;; then<br \/>\n\t\techo &quot;you need eyeD3 (http:&#047;&#047;eyed3.nicfit.net&#047;) to run this script&quot;<br \/>\n                exit 1<br \/>\n\tfi<br \/>\n\t}<br \/>\n        echo &quot; all tools found.&quot;<\/p>\n<p>header<br \/>\nwhile &#091; &quot;$1&quot; &#093;; do<br \/>\n\tcase $1 in<br \/>\n        \t-v) exit 0;;<br \/>\n                -c) check_bpm-tools; exit 0;;<br \/>\n                -i) cover_img; exit 0;;<br \/>\n        esac<br \/>\n        shift<br \/>\ndone<\/p>\n<p>for d in *&#047; ; do<br \/>\n        echo cleaning up $d<br \/>\n        cd &quot;$d&quot;<br \/>\n\tfor file in $(find -iname &#039;*.mp3&#039; | sort); do<br \/>\n\t\techo checking &quot;$file&quot;<br \/>\n\t\tbpmset=$(eyeD3 &quot;$file&quot; |grep BPM |cut -f2 -d&#039;:&#039;|cut -f2 -d &#039; &#039;)<br \/>\n        \t\tif &#091; -z &quot;$bpmset&quot; &#093;; then<br \/>\n\t\t\t\techo -n &quot;no bpm tag &quot;<br \/>\n\t\t\t\tbpm=$(bpm-tag -f -n &quot;$file&quot; 2&gt;&amp;1 | cut -f2 -d&#039;:&#039; | cut -f1 -d &#039;.&#039;)<br \/>\n\t\t\t\techo &quot;- set bpm to$bpm&quot;<br \/>\n\t\t\t\teyeD3 --preserve-file-times &quot;$file&quot; --bpm=$bpm &amp;&gt; &#047;dev&#047;null<br \/>\n\t\t\telse<br \/>\n\t\t\t\techo bpm tag is set to $bpmset<br \/>\n\t\t\tfi<br \/>\n\t\techo -ne &quot;\\n&quot;<br \/>\n\tdone<br \/>\ncd ..<br \/>\ndone<br \/>\nIFS=$SAVEIFS<\/code><\/p>\n<p><a href=\"http:\/\/minifahrer.bplaced.net\/wrdprs\/wp-content\/uploads\/2014\/12\/bpmcounter.sh_.zip\">bpmcounter.sh<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Meine Audiodateien liegen auf einem Debian System und ich stand vor der Thematik das TBPM Tag meiner mp3 Dateien zu pflegen. Nach l\u00e4ngerer Recherche bin ich auf das Paket bpm-tools gestossen, mit dem das z\u00e4hlen der Beats sehr gut funktioniert. Es w\u00fcrde diesen Beitrag nicht geben, wenn auch das schreiben der Tags funktionieren w\u00fcrde. bpm-tag &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/minifahrer.bplaced.net\/wrdprs\/?p=775\" class=\"more-link\"><span class=\"screen-reader-text\">\u201ebpmcounter.sh Beats per minute\u201c<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":780,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22],"tags":[38,40,39,41],"_links":{"self":[{"href":"http:\/\/minifahrer.bplaced.net\/wrdprs\/index.php?rest_route=\/wp\/v2\/posts\/775"}],"collection":[{"href":"http:\/\/minifahrer.bplaced.net\/wrdprs\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/minifahrer.bplaced.net\/wrdprs\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/minifahrer.bplaced.net\/wrdprs\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/minifahrer.bplaced.net\/wrdprs\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=775"}],"version-history":[{"count":7,"href":"http:\/\/minifahrer.bplaced.net\/wrdprs\/index.php?rest_route=\/wp\/v2\/posts\/775\/revisions"}],"predecessor-version":[{"id":787,"href":"http:\/\/minifahrer.bplaced.net\/wrdprs\/index.php?rest_route=\/wp\/v2\/posts\/775\/revisions\/787"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/minifahrer.bplaced.net\/wrdprs\/index.php?rest_route=\/wp\/v2\/media\/780"}],"wp:attachment":[{"href":"http:\/\/minifahrer.bplaced.net\/wrdprs\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=775"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/minifahrer.bplaced.net\/wrdprs\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=775"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/minifahrer.bplaced.net\/wrdprs\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=775"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}