diff --git a/web/app/assets/javascripts/react-components/SessionOtherTracks.js.jsx.coffee b/web/app/assets/javascripts/react-components/SessionOtherTracks.js.jsx.coffee
index 311f0402a..c78245c1a 100644
--- a/web/app/assets/javascripts/react-components/SessionOtherTracks.js.jsx.coffee
+++ b/web/app/assets/javascripts/react-components/SessionOtherTracks.js.jsx.coffee
@@ -17,6 +17,11 @@ ReactCSSTransitionGroup = React.addons.CSSTransitionGroup
for participant in session.otherParticipants()
+ if participant.user.id == context.JK.currentUserId
+ participant.user.possessive = "Your"
+ else
+ participant.user.possessive = participant.user.name + "'s"
+
name = participant.user.name
tracks = []
firstTrack = participant.tracks[0]
diff --git a/web/app/assets/javascripts/react-components/SessionStatsHover.js.jsx.coffee b/web/app/assets/javascripts/react-components/SessionStatsHover.js.jsx.coffee
index e2d6ee021..a25ada81c 100644
--- a/web/app/assets/javascripts/react-components/SessionStatsHover.js.jsx.coffee
+++ b/web/app/assets/javascripts/react-components/SessionStatsHover.js.jsx.coffee
@@ -6,14 +6,58 @@ ptrCount = 0
StatsInfo = {
system: {
cpu: {
- good: "Your computer's processor is not overworked by JamKazam or the your system.",
- warn: "Your computer's processor is being heavily used. There is little spare capacity, and this means your processor may not be able to handle all of it's tasks, causing audio quality, latency, and other issues.",
- poor: "Your computer's processor is being very heavily used. There is little spare capacity, and this means your processor may not be able to handle all of it's tasks, causing audio quality, latency, and other issues."
+ good: (user, stats) -> "#{user.possessive} computer processor is not overworked by JamKazam or the your system.",
+ warn: (user, stats) -> "#{user.possessive} computer processor is being heavily used. There is little spare capacity, and this means your processor may not be able to handle all of it's tasks, causing audio quality, latency, and other issues.",
+ poor: (user, stats) -> "#{user.possessive} computer processor is being very heavily used. There is little spare capacity, and this means your processor may not be able to handle all of it's tasks, causing audio quality, latency, and other issues."
+ }
+ },
+ network: {
+ wifi: {
+ good: (user, stats) -> "#{user.name} is using wired ethernet.",
+ warn: (user, stats) -> "#{user.name} is using Wi-Fi, which will create audio quality issues and additional latency.",
+ poor: (user, stats) -> "#{user.name} is using Wi-Fi, which will create audio quality issues and additional latency.",
},
- network: {
-
+ net_bitrate: {
+ good: (user, stats) -> "#{user.name} has enough bandwidth to send you a high quality audio stream.",
+ warn: (user, stats) -> "#{user.name} has bandwidth to send you a degraded, but sufficient, audio stream.",
+ poor: (user, stats) -> "#{user.name} has not enough bandwidth to send you a decent quality audio stream.",
},
- audio: {
+ ping: {
+ good: (user, stats) -> "The internet connection between you and #{user.name} has very low latency.",
+ warn: (user, stats) -> "The internet connection between you and #{user.name} has average latency, which may affect staying in sync.",
+ poor: (user, stats) -> "The internet connection between you and #{user.name} has high latency, making it very difficult to stay in sync.",
+ },
+ pkt_loss: {
+ good: (user, stats) -> "The internet connection between you and #{user.name} loses a small % of packets. It should not affect your audio quality.",
+ warn: (user, stats) -> "The internet connection between you and #{user.name} loses a significant % of packets. This may result in periodical audio artifacts.",
+ poor: (user, stats) -> "The internet connection between you and #{user.name} loses a high % of packets. This will result in frequent audio artifacts.",
+ },
+ audiojq_median: {
+ good: (user, stats) -> "JamKazam has to maintain a only a small buffer of audio to preserve audio quality, resulting in minimal added latency.",
+ warn: (user, stats) -> "JamKazam has to maintain a significant buffer of audio to preserve audio quality, resulting in potentially noticeable additional latency.",
+ poor: (user, stats) -> "JamKazam has to maintain a large buffer of audio to preserve audio quality, resulting in noticeabley added latency.",
+ }
+ },
+ audio: {
+ framesize: {
+ good: (user, stats) -> "#{user.possessive} gear is reading and writing audio data at a very high rate, keeping gear-added latency low.",
+ warn: (user, stats) -> "#{user.possessive} gear is reading and writing audio at a average rate, causing a few milliseconds extra latency compared to a 2.5 Frame Size.",
+ poor: (user, stats) -> "#{user.possessive} gear is reading and writing audio at a slow rate, causing a decent amount of latency before the internet is involved.",
+ },
+ latency: {
+ good: (user, stats) -> "#{user.possessive} gear has a small amount of latency.",
+ warn: (user, stats) -> "#{user.possessive} gear has a significant amount of latency.",
+ poor: (user, stats) -> "#{user.possessive} gear has a large amount of latency, making it difficult to play in time."
+ },
+ input_jitter: {
+ good: (user, stats) -> "#{user.possessive} gear has a small amount of input jitter, meaning it is keeping good time with JamKazam as it reads in your input signal.",
+ warn: (user, stats) -> "#{user.possessive} gear has a significant amount of input jitter, meaning it might be periodically adding delay or audio artifacts to your inputs.",
+ poor: (user, stats) -> "#{user.possessive} gear has a large amount of input jitter, meaning it likely adding delay and audio artifacts to your inputs.",
+ },
+ output_jitter: {
+ good: (user, stats) -> "#{user.possessive} gear has a smal amount of output jitter, meaning it is keeping good time with your JamKazam as writes out your audio output.",
+ warn: (user, stats) -> "#{user.possessive} gear has a large amount of output jitter, meaning it might be periodically adding delay and audio artifacts to your output.",
+ poor: (user, stats) -> "#{user.possessive} gear has a large amount of output jitter, meaning it likely adding delay and audio artifacts to your output.",
}
}
}
@@ -39,7 +83,7 @@ StatsInfo = {
classes = {'status-icon': true}
classifier = properties[field + '_level']
classes[classifier] = true
- `
`
+ `
`
render: () ->
extraInfo = 'Hover over a stat to learn more.'
@@ -53,7 +97,7 @@ StatsInfo = {
classifier = @state.stats?[type]?[field + '_level']
if classifier?
- info = StatsInfo[type]?[field]?[classifier]
+ info = StatsInfo[type]?[field]?[classifier](@props.participant.user, @state.stats)
if info?
extraInfo = info
@@ -72,6 +116,17 @@ StatsInfo = {
computerStats.push(@stat(system, 'system', 'Processor', 'cpu', Math.round(system.cpu) + ' %'))
if audio?
+ if audio.framesize? && audio.audio_in_type?
+ audio_type = '?'
+ audio_long = audio.audio_in_type.toLowerCase()
+ if audio_long.indexOf('asio') > -1
+ audio_type = 'ASIO'
+ else if audio_long.indexOf('wdm') > -1
+ audio_type = 'WDM'
+ else if audio_long.indexOf('core') > -1
+ audio_type = 'Core Audio'
+ audioStats.push(@stat(audio, 'audio', 'Gear Driver', 'framesize', audio_type + ' @ ' + audio.framesize.toFixed(1)))
+
if audio.latency?
audioStats.push(@stat(audio, 'audio', 'Latency', 'latency', audio.latency.toFixed(1) + ' ms'))
if audio.input_jitter?
@@ -87,6 +142,8 @@ StatsInfo = {
if network.ping?
networkStats.push(@stat(network, 'network', 'Latency', 'ping', (network.ping / 2).toFixed(1) + ' ms'))
#if network.jitter?
+ if network.audiojq_median?
+ networkStats.push(@stat(network, 'network', 'Jitter Queue', 'audiojq_median', network.audiojq_median.toFixed(1)))
# networkStats.
if network.pkt_loss?
networkStats.push(@stat(network, 'network', 'Packet Loss', 'pkt_loss', network.pkt_loss.toFixed(1) + ' %'))
diff --git a/web/app/assets/javascripts/react-components/stores/SessionStatsStore.js.coffee b/web/app/assets/javascripts/react-components/stores/SessionStatsStore.js.coffee
index 88fb06be8..f6afe837a 100644
--- a/web/app/assets/javascripts/react-components/stores/SessionStatsStore.js.coffee
+++ b/web/app/assets/javascripts/react-components/stores/SessionStatsStore.js.coffee
@@ -82,6 +82,7 @@ AudioThresholds = SessionStatThresholds.audio
# pkt_loss: 100
# wifi: false
+ @classify(network, 'audiojq_median', NetworkThresholds)
@classify(network, 'net_bitrate', NetworkThresholds)
@classify(network, 'ping', NetworkThresholds)
@classify(network, 'pkt_loss', NetworkThresholds)
diff --git a/web/app/assets/stylesheets/client/react-components/SessionScreen.css.scss b/web/app/assets/stylesheets/client/react-components/SessionScreen.css.scss
index 61640625c..64413bfbc 100644
--- a/web/app/assets/stylesheets/client/react-components/SessionScreen.css.scss
+++ b/web/app/assets/stylesheets/client/react-components/SessionScreen.css.scss
@@ -112,12 +112,12 @@ $session-screen-divider: 1190px;
border-width: 1px;
border-style: solid;
padding:10px;
- height: 313px;
+ height: 341px;
margin-top: 20px;
}
.stats-area {
float: left;
- padding: 20px;
+ padding: 0 20px 20px 20px;
color: #cccccc;
h3 {
diff --git a/web/app/assets/stylesheets/client/react-components/SessionTrack.css.scss b/web/app/assets/stylesheets/client/react-components/SessionTrack.css.scss
index 30cc9f430..1a2e424b4 100644
--- a/web/app/assets/stylesheets/client/react-components/SessionTrack.css.scss
+++ b/web/app/assets/stylesheets/client/react-components/SessionTrack.css.scss
@@ -157,6 +157,11 @@
}
}
+ &.my-track {
+ width:235px;
+ max-width:235px;
+ }
+
// media overrides
&.backing-track, &.recorded-track, &.jam-track, &.metronome, &.recorded-category, &.jam-track-category {
@@ -394,7 +399,7 @@
&.SessionStatsHover {
width:380px;
- height:400px;
+ height:450px;
@include border_box_sizing;
h3 {
diff --git a/web/config/application.rb b/web/config/application.rb
index e36417da7..05814067b 100644
--- a/web/config/application.rb
+++ b/web/config/application.rb
@@ -382,17 +382,17 @@ if defined?(Bundler)
wifi: {warn: true, poor: true, eql: true},
net_bitrate: {warn: 210, poor: 155, inverse:true},
ping: {warn: 40, poor: 70},
- pkt_loss: {warn: 3, poor: 10}
+ pkt_loss: {warn: 3, poor: 10},
+ audiojq_median: {warn: 2.1, poor: 5.1}
},
system: {
- cpu: {warn: 70, poor:85}
+ cpu: {warn: 70, poor:85}
},
audio: {
-
framesize: {warn: 2.6, poor: 2.6},
- latency: {warn: 10, poor: 20},
+ latency: {warn: 10, poor: 20},
input_jitter: {warn: 0.5, poor: 1},
- output_jitter: {warn: 0.5, poor: 1},
+ output_jitter: {warn: 0.5, poor: 1},
}
}
end