diff --git a/db/up/mixdown.sql b/db/up/mixdown.sql index cc048ae55..164c410a4 100644 --- a/db/up/mixdown.sql +++ b/db/up/mixdown.sql @@ -43,4 +43,6 @@ CREATE TABLE jam_track_mixdown_packages ( updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); -ALTER TABLE jam_track_rights ADD COLUMN last_mixdown_id VARCHAR(64) REFERENCES jam_track_mixdowns(id) ON DELETE SET NULL; \ No newline at end of file +ALTER TABLE jam_track_rights ADD COLUMN last_mixdown_id VARCHAR(64) REFERENCES jam_track_mixdowns(id) ON DELETE SET NULL; + +ALTER TABLE notifications ADD COLUMN jam_track_mixdown_package_id VARCHAR(64) REFERENCES jam_track_mixdown_packages(id) ON DELETE CASCADE; \ No newline at end of file diff --git a/pb/src/client_container.proto b/pb/src/client_container.proto index 14a8215c4..4acccc86d 100644 --- a/pb/src/client_container.proto +++ b/pb/src/client_container.proto @@ -621,11 +621,11 @@ message JamTrackSignFailed { } message MixdownSignComplete { - required int32 mixdown_package_id = 1; // jam track mixdown package id + required string mixdown_package_id = 1; // jam track mixdown package id } message MixdownSignFailed { - required int32 mixdown_package_id = 1; // jam track mixdown package id + required string mixdown_package_id = 1; // jam track mixdown package id } diff --git a/ruby/lib/jam_ruby/lib/subscription_message.rb b/ruby/lib/jam_ruby/lib/subscription_message.rb index dc1636b5e..02b98f3b9 100644 --- a/ruby/lib/jam_ruby/lib/subscription_message.rb +++ b/ruby/lib/jam_ruby/lib/subscription_message.rb @@ -14,19 +14,25 @@ module JamRuby end def self.mount_source_up_requested(mount) - Notification.send_subscription_message('mount', mount.id, {change_type: IcecastSourceChange::CHANGE_TYPE_MOUNT_UP_REQUEST}.to_json ) + Notification.send_subscription_message('mount', mount.id, {change_type: IcecastSourceChange::CHANGE_TYPE_MOUNT_UP_REQUEST}.to_json) end def self.mount_source_down_requested(mount) - Notification.send_subscription_message('mount', mount.id, {change_type: IcecastSourceChange::CHANGE_TYPE_MOUNT_DOWN_REQUEST}.to_json ) + Notification.send_subscription_message('mount', mount.id, {change_type: IcecastSourceChange::CHANGE_TYPE_MOUNT_DOWN_REQUEST}.to_json) end def self.jam_track_signing_job_change(jam_track_right) - Notification.send_subscription_message('jam_track_right', jam_track_right.id.to_s, {signing_state: jam_track_right.signing_state, current_packaging_step: jam_track_right.current_packaging_step, packaging_steps: jam_track_right.packaging_steps}.to_json ) + Notification.send_subscription_message('jam_track_right', jam_track_right.id.to_s, + {signing_state: jam_track_right.signing_state, + current_packaging_step: jam_track_right.current_packaging_step, + packaging_steps: jam_track_right.packaging_steps}.to_json) end def self.mixdown_signing_job_change(jam_track_mixdown_package) - Notification.send_subscription_message('mixdown', jam_track_mixdown_package.id.to_s, {signing_state: jam_track_mixdown_package.signing_state, current_packaging_step: jam_track_mixdown_package.current_packaging_step, packaging_steps: jam_track_right.packaging_steps}.to_json ) + Notification.send_subscription_message('mixdown', jam_track_mixdown_package.id.to_s, + {signing_state: jam_track_mixdown_package.signing_state, + current_packaging_step: jam_track_mixdown_package.current_packaging_step, + packaging_steps: jam_track_mixdown_package.packaging_steps}.to_json) end def self.test diff --git a/ruby/lib/jam_ruby/models/jam_track_mixdown.rb b/ruby/lib/jam_ruby/models/jam_track_mixdown.rb index 62947f0db..13af25332 100644 --- a/ruby/lib/jam_ruby/models/jam_track_mixdown.rb +++ b/ruby/lib/jam_ruby/models/jam_track_mixdown.rb @@ -16,7 +16,7 @@ module JamRuby validates :jam_track, presence: true validates :settings, presence: true - validates_uniqueness_of :user_id, scope: :jam_track_id + validates_uniqueness_of :name, scope: :user_id validate :verify_settings diff --git a/ruby/lib/jam_ruby/models/notification.rb b/ruby/lib/jam_ruby/models/notification.rb index 0bfc4da4b..d86d73d12 100644 --- a/ruby/lib/jam_ruby/models/notification.rb +++ b/ruby/lib/jam_ruby/models/notification.rb @@ -14,6 +14,7 @@ module JamRuby belongs_to :music_session, :class_name => "JamRuby::MusicSession", :foreign_key => "music_session_id" belongs_to :recording, :class_name => "JamRuby::Recording", :foreign_key => "recording_id" belongs_to :jam_track_right, :class_name => "JamRuby::JamTrackRight", :foreign_key => "jam_track_right_id" + belongs_to :jam_track_mixdown_package, :class_name => "JamRuby::JamTrackMixdownPackage", :foreign_key => "jam_track_mixdown_package_id" validates :target_user, :presence => true validates :message, length: {minimum: 1, maximum: 400}, no_profanity: true, if: :text_message? @@ -1255,7 +1256,7 @@ module JamRuby def send_jam_track_sign_complete(jam_track_right) notification = Notification.new - notification.jam_track_right_id = jam_track_right.id + notification.jam_track_mixdown_package = jam_track_right.id notification.description = NotificationTypes::JAM_TRACK_SIGN_COMPLETE notification.target_user_id = jam_track_right.user_id notification.save! @@ -1268,7 +1269,7 @@ module JamRuby def send_mixdown_sign_failed(jam_track_mixdown_package) notification = Notification.new - notification.jam_track_right_id = jam_track_mixdown_package.id + notification.jam_track_mixdown_package_id = jam_track_mixdown_package.id notification.description = NotificationTypes::MIXDOWN_SIGN_FAILED notification.target_user_id = jam_track_mixdown_package.jam_track_mixdown.user_id notification.save! @@ -1280,7 +1281,7 @@ module JamRuby def send_mixdown_sign_complete(jam_track_mixdown_package) notification = Notification.new - notification.mixdown_package_id = jam_track_mixdown_package.id + notification.jam_track_mixdown_package_id = jam_track_mixdown_package.id notification.description = NotificationTypes::MIXDOWN_SIGN_COMPLETE notification.target_user_id = jam_track_mixdown_package.jam_track_mixdown.user_id notification.save! diff --git a/ruby/lib/jam_ruby/resque/jam_track_mixdown_packager.rb b/ruby/lib/jam_ruby/resque/jam_track_mixdown_packager.rb index 3afe04816..097c3f32a 100644 --- a/ruby/lib/jam_ruby/resque/jam_track_mixdown_packager.rb +++ b/ruby/lib/jam_ruby/resque/jam_track_mixdown_packager.rb @@ -5,7 +5,7 @@ require 'net/http' require 'digest/md5' module JamRuby - class JamTracksMixdownPackager + class JamTrackMixdownPackager extend JamRuby::ResqueStats include JamRuby::S3ManagerMixin @@ -14,26 +14,26 @@ module JamRuby MAX_PAN = 90 MIN_PAN = -90 - attr_accessor :mixdown_package_id, :settings, :mixdown_package, :mixdown, :steps + attr_accessor :mixdown_package_id, :settings, :mixdown_package, :mixdown, :step @queue = :jam_track_mixdown_packager def log - @log || Logging.logger[JamTracksMixdownPackager] + @log || Logging.logger[JamTrackMixdownPackager] end def self.perform(mixdown_package_id, bitrate=48) - jam_track_builder = JamTracksMixdownPackager.new() + jam_track_builder = JamTrackMixdownPackager.new() jam_track_builder.mixdown_package_id = mixdown_package_id jam_track_builder.run end def compute_steps - @steps = 0 + @step = 0 number_downloads = @track_settings.length - number_volume_adjustments = @track_settings.select { |track| should_alter_volume? track } + number_volume_adjustments = (@track_settings.select { |track| should_alter_volume? track }).length pitch_shift_steps = @mixdown.will_pitch_shift? ? 1 : 0 - mix_step = 1 + mix_steps = 1 package_steps = 1 number_downloads + number_volume_adjustments + pitch_shift_steps + mix_steps + package_steps @@ -379,7 +379,7 @@ module JamRuby # set @error_reason before you raise an exception, and it will be sent back as the error reason # otherwise, the error_reason will be unhandled-job-exception def post_error(e) - begin + #begin # if error_reason is null, assume this is an unhandled error unless @error_reason @error_reason = "unhandled-job-exception" @@ -387,9 +387,9 @@ module JamRuby end @mixdown_package.finish_errored(@error_reason, @error_detail) - rescue Exception => e - log.error "unable to post back to the database the error #{e}" - end + #rescue Exception => e + # log.error "unable to post back to the database the error #{e}" + #end end end end diff --git a/web/app/assets/javascripts/dialog/openJamTrackDialog.js b/web/app/assets/javascripts/dialog/openJamTrackDialog.js index 8f58b0728..ed400d8c1 100644 --- a/web/app/assets/javascripts/dialog/openJamTrackDialog.js +++ b/web/app/assets/javascripts/dialog/openJamTrackDialog.js @@ -103,9 +103,8 @@ sampleRate = context.jamClient.GetSampleRate() sampleRateForFilename = sampleRate == 48 ? '48' : '44'; doSearch(); - - } + function afterHide() { showing = false; } diff --git a/web/app/assets/javascripts/fakeJamClient.js b/web/app/assets/javascripts/fakeJamClient.js index 464f992b8..53faafc14 100644 --- a/web/app/assets/javascripts/fakeJamClient.js +++ b/web/app/assets/javascripts/fakeJamClient.js @@ -117,6 +117,10 @@ return 30; } + function GetSampleRate() { + return 48; + } + function isSessVideoShared() { return videoShared; } @@ -1262,6 +1266,7 @@ this.FTUESetSendFrameRates = FTUESetSendFrameRates; this.GetCurrentVideoResolution = GetCurrentVideoResolution; this.GetCurrentVideoFrameRate = GetCurrentVideoFrameRate; + this.GetSampleRate = GetSampleRate; this.isSessVideoShared = isSessVideoShared; this.SessStopVideoSharing = SessStopVideoSharing; diff --git a/web/app/assets/javascripts/react-components/PopupMediaControls.js.jsx.coffee b/web/app/assets/javascripts/react-components/PopupMediaControls.js.jsx.coffee index f2e0a127a..0887a8143 100644 --- a/web/app/assets/javascripts/react-components/PopupMediaControls.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/PopupMediaControls.js.jsx.coffee @@ -18,6 +18,7 @@ if accessOpener SessionActions = window.opener.SessionActions MediaPlaybackStore = window.opener.MediaPlaybackStore MixerActions = window.opener.MixerActions + JamTrackMixdownActions = window.opener.JamTrackMixdownActions JamTrackMixdownStore = window.opener.JamTrackMixdownStore JamTrackMixdown = window.opener.JamTrackMixdown MixerStore = window.opener.MixerStore @@ -66,7 +67,7 @@ mixins.push(Reflux.listenTo(JamTrackStore, 'onJamTrackChanged')) SessionActions.showNativeMetronomeGui() getInitialState: () -> - {media: @props.media, time: '0:00', mixdown: @props.mixdown, jamTrack: @props.jamTrack} + {media: @props.media, time: '0:00', mixdown: @props.mixdown, jamTrack: @props.jamTrack, creatingMixdown: false, createMixdownErrors: null} close: () -> window.close() @@ -107,20 +108,120 @@ mixins.push(Reflux.listenTo(JamTrackStore, 'onJamTrackChanged')) {customMixName} ` - myMixes = [] + myMixes = null if @state.showMyMixes - logger.debug("show my mixes") + myMixdowns = [] + for mixdown in jamTrack.mixdowns + myMixdowns.push << ` +
Use the JamTrack controls on the session screen to set levels, mute/unmute, or pan any of the parts of the JamTrack as you like. You can also use the controls below to adjust the tempo or pitch of the JamTrack. Then give your custom mix a name, and click the Create Mix button. Please note that changing the tempo or pitch of the JamTrack may take a long time, and won't be ready right away.
+