* clicktrack support
This commit is contained in:
parent
b7cbb86e3b
commit
e3b4b2324b
|
|
@ -32,6 +32,7 @@ ActiveAdmin.register_page "Fake Purchaser" do
|
|||
jam_track_right.user = user
|
||||
jam_track_right.jam_track = jam_track
|
||||
jam_track_right.is_test_purchase = true
|
||||
jam_track_right.version = jam_track.version
|
||||
jam_track_right.save!
|
||||
count = count + 1
|
||||
end
|
||||
|
|
|
|||
|
|
@ -313,4 +313,5 @@ jam_track_lang_idx.sql
|
|||
giftcard.sql
|
||||
add_description_to_crash_dumps.sql
|
||||
acappella.sql
|
||||
purchasable_gift_cards.sql
|
||||
purchasable_gift_cards.sql
|
||||
versionable_jamtracks.sql
|
||||
|
|
@ -0,0 +1 @@
|
|||
ALTER TABLE jam_track_rights ADD COLUMN version VARCHAR NOT NULL DEFAULT '0';
|
||||
|
|
@ -56,7 +56,7 @@ module JamRuby
|
|||
#track.original_filename = wav_file
|
||||
click_track.original_audio_s3_path = click_track_file[:original_filename]
|
||||
click_track.track_type = 'Click'
|
||||
click_track.part = 'Click'
|
||||
click_track.part = 'Clicktrack'
|
||||
click_track.instrument_id = 'computer'
|
||||
click_track.jam_track = jam_track
|
||||
click_track.position = 10000
|
||||
|
|
@ -67,8 +67,12 @@ module JamRuby
|
|||
end
|
||||
end
|
||||
|
||||
jam_track.increment_version!
|
||||
|
||||
# with the click track in hand, flesh out the details
|
||||
synchronize_audio_track(jam_track, tmp_dir, false, click_track)
|
||||
|
||||
finish('success', nil)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -1255,7 +1259,6 @@ module JamRuby
|
|||
@@log.debug("#{self.name} track! instrument: #{parsed_wav[:instrument] ? parsed_wav[:instrument] : 'N/A'}, part: #{parsed_wav[:part] ? parsed_wav[:part] : 'N/A'}, filename: #{parsed_wav[:filename]} ")
|
||||
end
|
||||
|
||||
|
||||
track.instrument_id = parsed_wav[:instrument] || 'other'
|
||||
track.track_type = 'Track'
|
||||
track.part = parsed_wav[:part] || "Other #{unknowns}"
|
||||
|
|
@ -1266,6 +1269,13 @@ module JamRuby
|
|||
elsif parsed_wav[:type] == :clickwav
|
||||
file.file_type = 'ClickWav'
|
||||
addt_files << file
|
||||
|
||||
# and also add a JamTrackTrack for this click track
|
||||
track.track_type = 'Click'
|
||||
track.part = 'Clicktrack'
|
||||
track.instrument_id = 'computer'
|
||||
track.position = 10000
|
||||
tracks << track
|
||||
elsif parsed_wav[:type] == :precount
|
||||
file.file_type = 'Precount'
|
||||
file.precount_num = parsed_wav[:precount_num]
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ module JamRuby
|
|||
jam_file_opts=""
|
||||
jam_track.jam_track_tracks.each do |jam_track_track|
|
||||
|
||||
next if jam_track_track.track_type != "Track" # master mixes do not go into the JKZ
|
||||
next if jam_track_track.track_type == "Master" # master mixes do not go into the JKZ
|
||||
|
||||
# use the jam_track_track ID as the filename.ogg/.wav, because it's important metadata
|
||||
nm = jam_track_track.id + File.extname(jam_track_track.url_by_sample_rate(sample_rate))
|
||||
|
|
@ -52,7 +52,8 @@ module JamRuby
|
|||
step = bump_step(jam_track_right, step)
|
||||
|
||||
copy_url_to_file(track_url, track_filename)
|
||||
jam_file_opts << " -i #{Shellwords.escape("#{track_filename}+#{jam_track_track.part}")}"
|
||||
part = jam_track_track.track_type == 'Click' ? 'ClickTrack' : jam_track_track.part
|
||||
jam_file_opts << " -i #{Shellwords.escape("#{track_filename}+#{part}")}"
|
||||
end
|
||||
#puts "LS + " + `ls -la '#{tmp_dir}'`
|
||||
|
||||
|
|
|
|||
|
|
@ -86,6 +86,10 @@ module JamRuby
|
|||
after_save :sync_reproduction_royalty
|
||||
after_save :sync_onboarding_exceptions
|
||||
|
||||
def increment_version
|
||||
self.version = version.to_i + 1
|
||||
save!
|
||||
end
|
||||
|
||||
def sync_reproduction_royalty
|
||||
|
||||
|
|
@ -341,7 +345,7 @@ module JamRuby
|
|||
query = query.where('genre_id = ? ', options[:genre])
|
||||
end
|
||||
|
||||
query = query.where("jam_track_tracks.instrument_id = '#{options[:instrument]}' and jam_track_tracks.track_type != 'Master'") unless options[:instrument].blank?
|
||||
query = query.where("jam_track_tracks.instrument_id = '#{options[:instrument]}' and jam_track_tracks.track_type = 'Track'") unless options[:instrument].blank?
|
||||
query = query.where("jam_tracks.sales_region = '#{options[:availability]}'") unless options[:availability].blank?
|
||||
|
||||
# FIXME: n+1 queries for rights and genres
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ module JamRuby
|
|||
belongs_to :last_mixdown, class_name: 'JamRuby::JamTrackMixdown', foreign_key: 'last_mixdown_id', inverse_of: :jam_track_right
|
||||
belongs_to :last_stem, class_name: 'JamRuby::JamTrackTrack', foreign_key: 'last_stem_id', inverse_of: :jam_track_right
|
||||
|
||||
validates :version, presence: true
|
||||
validates :user, presence: true
|
||||
validates :jam_track, presence: true
|
||||
validates :is_test_purchase, inclusion: {in: [true, false]}
|
||||
|
|
@ -133,8 +134,33 @@ module JamRuby
|
|||
end
|
||||
end
|
||||
|
||||
def cleanup_old_package!
|
||||
if self.jam_track.version != self.version
|
||||
delete_s3_files
|
||||
self[:url_48] = nil
|
||||
self[:url_44] = nil
|
||||
self.signing_queued_at = nil
|
||||
self.signing_started_at_48 = nil
|
||||
self.signing_started_at_44 = nil
|
||||
self.last_signed_at = nil
|
||||
self.current_packaging_step = nil
|
||||
self.packaging_steps = nil
|
||||
self.should_retry = false
|
||||
self.signing_44 = false
|
||||
self.signing_48 = false
|
||||
self.signed_44 = false
|
||||
self.signed_48 = false
|
||||
self.queued = false
|
||||
self.version = self.jam_track.version
|
||||
self.save!
|
||||
end
|
||||
end
|
||||
# if the job is already signed, just queued up for signing, or currently signing, then don't enqueue... otherwise fire it off
|
||||
def enqueue_if_needed(sample_rate=48)
|
||||
|
||||
# delete any package that's out dated
|
||||
cleanup_old_package!
|
||||
|
||||
state = signing_state(sample_rate)
|
||||
if state == 'SIGNED' || state == 'SIGNING' || state == 'QUEUED'
|
||||
false
|
||||
|
|
@ -148,9 +174,9 @@ module JamRuby
|
|||
# @return true if signed && file exists for the sample_rate specifed:
|
||||
def ready?(sample_rate=48)
|
||||
if sample_rate==48
|
||||
self.signed_48 && self.url_48.present? && self.url_48.file.exists?
|
||||
self.signed_48 && self.url_48.present? && self.url_48.file.exists? && self.version == self.jam_track.version
|
||||
else
|
||||
self.signed_44 && self.url_44.present? && self.url_44.file.exists?
|
||||
self.signed_44 && self.url_44.present? && self.url_44.file.exists? && self.version == self.jam_track.version
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ module JamRuby
|
|||
sqlstr = "'#{instruments.join("','")}'"
|
||||
rel = rel.joins(:jam_track_tracks)
|
||||
rel = rel.where("jam_track_tracks.instrument_id IN (#{sqlstr})")
|
||||
rel = rel.where("jam_track_tracks.track_type != 'Master'")
|
||||
rel = rel.where("jam_track_tracks.track_type = 'Track'")
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ module JamRuby
|
|||
def self.ios_purchase(current_user, jam_track, receipt)
|
||||
jam_track_right = JamRuby::JamTrackRight.find_or_create_by_user_id_and_jam_track_id(current_user.id, jam_track.id) do |jam_track_right|
|
||||
jam_track_right.redeemed = false
|
||||
jam_track_right.version = jam_track.version
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -328,6 +329,7 @@ module JamRuby
|
|||
# create a JamTrackRight (this needs to be in a transaction too to make sure we don't make these by accident)
|
||||
jam_track_right = JamRuby::JamTrackRight.find_or_create_by_user_id_and_jam_track_id(current_user.id, jam_track.id) do |jam_track_right|
|
||||
jam_track_right.redeemed = shopping_cart.free?
|
||||
jam_track_right.version = jam_track.version
|
||||
end
|
||||
|
||||
# also if the purchase was a free one, then:
|
||||
|
|
|
|||
|
|
@ -369,8 +369,8 @@ context.JK.DownloadJamTrack = class DownloadJamTrack
|
|||
@trackDetail = context.jamClient.JamTrackGetTrackDetail ("#{@jamTrack.id}-#{@sampleRateForFilename}")
|
||||
|
||||
if @trackDetail.version?
|
||||
@logger.error("after invalidating package, the version is still wrong!")
|
||||
throw "after invalidating package, the version is still wrong!"
|
||||
@logger.error("after invalidating package, the version is still wrong!", @trackDetail)
|
||||
throw "after invalidating package, the version is still wrong! #{@trackDetail.version}"
|
||||
|
||||
switch @trackDetail.key_state
|
||||
when 'pending'
|
||||
|
|
|
|||
|
|
@ -30,19 +30,21 @@ MIX_MODES = context.JK.MIX_MODES
|
|||
)
|
||||
|
||||
for track in jamtrack.tracks
|
||||
trackRow.tracks.push(track)
|
||||
if track.track_type=='Master'
|
||||
track.instrument_desc = "Master"
|
||||
else
|
||||
inst = '../assets/content/icon_instrument_default24.png'
|
||||
if track.instrument?
|
||||
if track.instrument.id in @instrument_logo_map
|
||||
inst = @instrument_logo_map[track.instrument.id].asset
|
||||
track.instrument_desc = track.instrument.description
|
||||
track.instrument_url = inst
|
||||
|
||||
if track.part != ''
|
||||
track.instrument_desc += ' (' + track.part + ')'
|
||||
if track.track_type == 'Master' || track.track_type == 'Track'
|
||||
trackRow.tracks.push(track)
|
||||
if track.track_type == 'Master'
|
||||
track.instrument_desc = "Master"
|
||||
else if track.track_type == 'Track'
|
||||
inst = '../assets/content/icon_instrument_default24.png'
|
||||
if track.instrument?
|
||||
if track.instrument.id in @instrument_logo_map
|
||||
inst = @instrument_logo_map[track.instrument.id].asset
|
||||
track.instrument_desc = track.instrument.description
|
||||
track.instrument_url = inst
|
||||
|
||||
if track.part != ''
|
||||
track.instrument_desc += ' (' + track.part + ')'
|
||||
|
||||
trackRow.free_state = if @state.is_free then 'free' else 'non-free'
|
||||
|
||||
|
|
|
|||
|
|
@ -35,19 +35,22 @@ MIX_MODES = context.JK.MIX_MODES
|
|||
)
|
||||
###
|
||||
for track in jamtrack.tracks
|
||||
trackRow.tracks.push(track)
|
||||
if track.track_type=='Master'
|
||||
track.instrument_desc = "Master"
|
||||
else
|
||||
inst = '../assets/content/icon_instrument_default24.png'
|
||||
if track.instrument?
|
||||
if track.instrument.id in @instrument_logo_map
|
||||
inst = @instrument_logo_map[track.instrument.id].asset
|
||||
track.instrument_desc = track.instrument.description
|
||||
track.instrument_url = inst
|
||||
|
||||
if track.part != ''
|
||||
track.instrument_desc += ' (' + track.part + ')'
|
||||
if track.track_type == 'Master' || track.track_type == 'Track'
|
||||
trackRow.tracks.push(track)
|
||||
|
||||
if track.track_type == 'Master'
|
||||
track.instrument_desc = "Master"
|
||||
else if track.track_type == 'Track'
|
||||
inst = '../assets/content/icon_instrument_default24.png'
|
||||
if track.instrument?
|
||||
if track.instrument.id in @instrument_logo_map
|
||||
inst = @instrument_logo_map[track.instrument.id].asset
|
||||
track.instrument_desc = track.instrument.description
|
||||
track.instrument_url = inst
|
||||
|
||||
if track.part != ''
|
||||
track.instrument_desc += ' (' + track.part + ')'
|
||||
|
||||
trackRow.free_state = if @state.is_free then 'free' else 'non-free'
|
||||
|
||||
|
|
|
|||
|
|
@ -32,6 +32,11 @@ mixins.push(Reflux.listenTo(JamTrackPlayerStore, 'onJamTrackPlayerStoreChanged')
|
|||
|
||||
mixins: mixins
|
||||
|
||||
computeWeight: (jam_track_track) ->
|
||||
weight = switch
|
||||
when jam_track_track.track_type == 'Master' then 0
|
||||
when jam_track_track.track_type == 'Click' then 10000
|
||||
else jam_track_track.position
|
||||
|
||||
onJamTrackPlayerStoreChanged: (changes) ->
|
||||
#logger.debug("PopupMediaControls: jamtrack changed", changes)
|
||||
|
|
@ -222,9 +227,16 @@ mixins.push(Reflux.listenTo(JamTrackPlayerStore, 'onJamTrackPlayerStoreChanged')
|
|||
|
||||
active = jamTrack.last_stem_id?
|
||||
trackOptions = []
|
||||
for track in jamTrack.tracks
|
||||
if track.track_type == 'Track'
|
||||
|
||||
jamTrack.tracks.sort((a, b) =>
|
||||
aWeight = @computeWeight(a)
|
||||
bWeight = @computeWeight(b)
|
||||
return aWeight - bWeight
|
||||
)
|
||||
|
||||
|
||||
for track in jamTrack.tracks
|
||||
if track.track_type == 'Track' || track.track_type == 'Click'
|
||||
|
||||
if track.instrument
|
||||
instrumentId = track.instrument.id
|
||||
|
|
@ -239,7 +251,6 @@ mixins.push(Reflux.listenTo(JamTrackPlayerStore, 'onJamTrackPlayerStoreChanged')
|
|||
boundStemPlayClick = this.downloadStem.bind(this)
|
||||
boundStemChange = this.stemChanged.bind(this)
|
||||
|
||||
console.log("jamTrack.lastStemId", jamTrack.last_stem_id)
|
||||
myMixdowns.push `
|
||||
<div key={track.id} className={classNames({'stem-track' : true, 'mixdown-display': true, 'active' : active})}>
|
||||
<div className="mixdown-name">
|
||||
|
|
@ -267,8 +278,12 @@ mixins.push(Reflux.listenTo(JamTrackPlayerStore, 'onJamTrackPlayerStoreChanged')
|
|||
tracks = []
|
||||
if jamTrack?
|
||||
for track in jamTrack.tracks
|
||||
if track.track_type == 'Track'
|
||||
if track.instrument
|
||||
if track.track_type == 'Track' || track.track_type == 'Click'
|
||||
if track.track_type == 'Click'
|
||||
instrumentId = track.instrument.id
|
||||
instrumentDescription = 'Clicktrack'
|
||||
part = ''
|
||||
else if track.instrument
|
||||
instrumentId = track.instrument.id
|
||||
instrumentDescription = track.instrument.description
|
||||
if track.part? && track.part != instrumentDescription
|
||||
|
|
@ -280,7 +295,7 @@ mixins.push(Reflux.listenTo(JamTrackPlayerStore, 'onJamTrackPlayerStoreChanged')
|
|||
tracks.push(`
|
||||
<tr className="stem">
|
||||
<td><img src={context.JK.getInstrumentIcon24(instrumentId)} className="instrument-icon" /> {instrumentDescription} {part}</td>
|
||||
<td className="mute"><input type="checkbox" className="stem-mute" data-stem-id={track.id} /></td>
|
||||
<td className="mute"><input type="checkbox" className="stem-mute" data-stem-id={track.id} defaultChecked={track.track_type == 'Click'}/></td>
|
||||
</tr>`)
|
||||
|
||||
stems = `<div key="stems" className="stems">
|
||||
|
|
|
|||
|
|
@ -248,7 +248,7 @@ mixins.push(Reflux.listenTo(JamTrackStore, 'onJamTrackChanged'))
|
|||
|
||||
trackOptions = []
|
||||
for track in jamTrack.tracks
|
||||
if track.track_type == 'Track'
|
||||
if track.track_type == 'Track' || track.track_type == 'Click'
|
||||
|
||||
if track.instrument
|
||||
instrumentId = track.instrument.id
|
||||
|
|
|
|||
|
|
@ -402,6 +402,9 @@ MIX_MODES = context.JK.MIX_MODES;
|
|||
else
|
||||
trackName = instrumentName
|
||||
|
||||
if jamTrack.track_type == 'Click'
|
||||
trackName = 'Clicktrack'
|
||||
|
||||
data =
|
||||
name: jamTrackName
|
||||
trackName: trackName
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ context = window
|
|||
jamTracks: () ->
|
||||
if @session && @session.jam_track
|
||||
@session.jam_track.tracks.filter((track)->
|
||||
track.track_type == 'Track'
|
||||
track.track_type == 'Track' || track.track_type == 'Click'
|
||||
)
|
||||
else
|
||||
null
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ JamTrackActions = @JamTrackActions
|
|||
@trackDetail = context.jamClient.JamTrackGetTrackDetail (fqId)
|
||||
|
||||
if @trackDetail.version?
|
||||
logger.error("after invalidating package, the version is still wrong!")
|
||||
logger.error("after invalidating package, the version is still wrong!", @trackDetail)
|
||||
throw "after invalidating package, the version is still wrong!"
|
||||
|
||||
if @jamTrack.activeMixdown.client_state == 'cant_open'
|
||||
|
|
|
|||
|
|
@ -41,6 +41,10 @@
|
|||
|
||||
context._.each(jam_track.tracks, function (track) {
|
||||
|
||||
if (track.track_type == 'Click') {
|
||||
return;
|
||||
}
|
||||
|
||||
var $element = $('<div class="jam-track-preview-holder"></div>')
|
||||
|
||||
$previews.append($element);
|
||||
|
|
|
|||
|
|
@ -30,6 +30,10 @@
|
|||
|
||||
context._.each(jam_track.tracks, function (track) {
|
||||
|
||||
if (track.track_type == 'Click') {
|
||||
return;
|
||||
}
|
||||
|
||||
var $element = $('<div class="jam-track-preview-holder"></div>')
|
||||
|
||||
$previews.append($element);
|
||||
|
|
|
|||
|
|
@ -40,6 +40,10 @@
|
|||
|
||||
context._.each(jam_track.tracks, function (track) {
|
||||
|
||||
if (track.track_type == 'Click') {
|
||||
return;
|
||||
}
|
||||
|
||||
var $element = $('<div class="jam-track-preview-holder"></div>')
|
||||
|
||||
$previews.append($element);
|
||||
|
|
|
|||
Loading…
Reference in New Issue