* improvements for bpm + silence detection

This commit is contained in:
Seth Call 2016-02-21 12:49:16 -06:00
parent 865e8201e0
commit 04234eef27
1 changed files with 19 additions and 8 deletions

View File

@ -105,7 +105,7 @@ module JamRuby
if JamTrackImporter.marks_approved.has_key?(jam_track.slug)
@@log.info("Found track in mark approved list. skipping")
finish('success', 'mark created')
finish('success', 'mark@jamkazam.com created')
return
end
@ -148,18 +148,29 @@ module JamRuby
if click_track
start_time = determine_start_time(click_track_file, tmp_dir, click_track[:original_filename])
start_time = determine_start_time(click_track_file, tmp_dir, click_track[:original_filename], false)
else
start_time = determine_start_time(master_track_file, tmp_dir, master_track[:url])
start_time = determine_start_time(master_track_file, tmp_dir, master_track[:url], false)
end
trimmed_for_beat_analysis = File.join(tmp_dir, 'trimmed_for_beat.wav')
# trim out the 1st 5 second after non-silence
trim_cmd = "sox #{Shellwords.escape(click_track_file)} #{Shellwords.escape(trimmed_for_beat_analysis)} trim #{start_time} #{start_time + 5}"
cmd = "bash -c #{Shellwords.escape(trim_cmd)}"
@@log.debug("executing cmd #{cmd}")
output=`#{cmd}`
result_code = $?.to_i
if result_code != 0
finish("trim-fail", "failed to run trim click track: #{output}")
return
end
# bpm comes from git clone http://www.pogo.org.uk/~mark/bpm-tools.git
sox="sox #{Shellwords.escape(click_track_file)} -t raw -r 44100 -e float -c 1 - | bpm"
sox="sox #{Shellwords.escape(trimmed_for_beat_analysis)} -t raw -r 44100 -e float -c 1 - | bpm -m 25 -x 250"
cmd = "bash -c #{Shellwords.escape(sox)}"
@@log.debug("executing cmd #{cmd}")
output=`#{cmd}`
result_code = $?.to_i
if result_code == 0
@ -192,8 +203,8 @@ module JamRuby
end
def determine_start_time(audio_file, tmp_dir, original_filename)
burp_gaps = ['0.3', '0.2', '0.1', '0.05']
def determine_start_time(audio_file, tmp_dir, original_filename, protect_short = true)
burp_gaps = ['0.3', '0.2', '0.1', '0.05', '0.025']
out_wav = File.join(tmp_dir, 'stripped.wav')
total_time_command = "soxi -D \"#{audio_file}\""