We Have Fabulous Teachers, Check Them Out!
diff --git a/web/app/assets/javascripts/react-components/landing/JamClassTeacherLandingBottomPage.js.jsx.coffee b/web/app/assets/javascripts/react-components/landing/JamClassTeacherLandingBottomPage.js.jsx.coffee
index b9efbc93e..cdc4ff01a 100644
--- a/web/app/assets/javascripts/react-components/landing/JamClassTeacherLandingBottomPage.js.jsx.coffee
+++ b/web/app/assets/javascripts/react-components/landing/JamClassTeacherLandingBottomPage.js.jsx.coffee
@@ -256,8 +256,7 @@ rest = context.JK.Rest()
Windows 7 or a later version
Mac OS X 10.7 or a later version
- how do I know
- which version I'm running and if it's 64-bit on Mac?
+ how do I know which version I'm running?
@@ -273,7 +272,7 @@ rest = context.JK.Rest()
audio interface is a hardware product that connects to your computer and processes audio better than your
computer alone. If you already own/use an audio interface, you can use the one you have. And if you don't,
please
refer to this set of help articles that recommend the best gear based on your instruments and/or vocals. You can pick up a perfectly good interface very inexpensively, typically for less than $50. And you can
+ target="_blank">refer to this set of help articles that recommend the best gear based on your instruments and/or vocals. You can pick up a perfectly good interface very inexpensively, typically for less than $50. And you can
use your new interface not just for JamClass, but also to make home recordings of your performances, and also to play in online JamKazam sessions with other musicians. So
it's a great thing to have for any musician.
diff --git a/web/app/assets/javascripts/wizard/gear/step_configure_tracks.js b/web/app/assets/javascripts/wizard/gear/step_configure_tracks.js
index 07bda374b..51b8de28f 100644
--- a/web/app/assets/javascripts/wizard/gear/step_configure_tracks.js
+++ b/web/app/assets/javascripts/wizard/gear/step_configure_tracks.js
@@ -13,8 +13,12 @@
var configureTracksHelper = new context.JK.ConfigureTracksHelper(app);
var $step = null;
+ var $watchVideoBtn = null;
var successfullyAssignedOnce = false;
var wizard = null;
+ var firstTime = true;
+ var helpTimeout = null;
+
function handleHelp() {
return "https://jamkazam.desk.com/customer/en/portal/articles/2400702-using-the-setup-wizard-%E2%80%93-step-3-%E2%80%93-configure-tracks"
@@ -28,6 +32,9 @@
successfullyAssignedOnce = true;
}
*/
+ if (helpTimeout) {
+ clearTimeout(helpTimeout);
+ }
return context.ConfigureTracksStore.editingTrackValid()
}
@@ -40,11 +47,25 @@
window.ConfigureTracksActions.reset(false);
//configureTracksHelper.reset(forceInputsToUnassigned, wizard.getChosenInputs())
+
+ prodInstructions();
}
+ function prodInstructions() {
+ if (firstTime && !helpTimeout) {
+
+ helpTimeout = setTimeout(function() {
+ helpTimeout = null
+ firstTime = false;
+
+ context.JK.HelpBubbleHelper.ftueStep3ConfigTracks($watchVideoBtn)
+ }, 2000)
+ }
+ }
function initialize(_$step, _wizard) {
$step = _$step;
wizard = _wizard;
+ $watchVideoBtn = $step.find('.watch-video')
configureTracksHelper.initialize($step);
}
diff --git a/web/app/assets/javascripts/wizard/gear/step_configure_voice_chat.js b/web/app/assets/javascripts/wizard/gear/step_configure_voice_chat.js
index 00d00e484..837760b30 100644
--- a/web/app/assets/javascripts/wizard/gear/step_configure_voice_chat.js
+++ b/web/app/assets/javascripts/wizard/gear/step_configure_voice_chat.js
@@ -19,9 +19,12 @@
var voiceChatHelper = new context.JK.VoiceChatHelper(app);
var firstTimeShown = false;
+ var $watchVideoBtn = null;
+ var firstTime = true;
+ var helpTimeout = null;
function handleHelp() {
- return "https://jamkazam.desk.com/customer/portal/articles/1599963-first-time-setup---step-4---configure-voice-chat";
+ return "https://jamkazam.desk.com/customer/en/portal/articles/2400826-using-the-setup-wizard-%E2%80%93-step-4-%E2%80%93-configure-voice-chat";
}
function newSession() {
@@ -34,6 +37,8 @@
voiceChatHelper.reset(forceDisabledChat);
voiceChatHelper.beforeShow();
firstTimeShown = false;
+
+ prodInstructions()
}
function beforeHide() {
@@ -41,14 +46,32 @@
}
function handleNext() {
+
+ if (helpTimeout) {
+ clearTimeout(helpTimeout);
+ }
return true;
}
+
+ function prodInstructions() {
+ if (firstTime && !helpTimeout) {
+
+ helpTimeout = setTimeout(function() {
+ helpTimeout = null
+ firstTime = false;
+
+ context.JK.HelpBubbleHelper.ftueStep5Instructions($watchVideoBtn)
+ }, 2000)
+ }
+ }
+
function initialize(_$step) {
$step = _$step;
voiceChatHelper.initialize($step, 'configure_voice_gear_wizard', true, {vuType: "vertical", lightCount: 8, lightWidth: 3, lightHeight: 10}, 101);
+ $watchVideoBtn = $step.find('.watch-video')
}
this.handleHelp = handleHelp;
diff --git a/web/app/assets/javascripts/wizard/gear/step_direct_monitoring.js b/web/app/assets/javascripts/wizard/gear/step_direct_monitoring.js
index 3e6c87f3a..693199be6 100644
--- a/web/app/assets/javascripts/wizard/gear/step_direct_monitoring.js
+++ b/web/app/assets/javascripts/wizard/gear/step_direct_monitoring.js
@@ -13,6 +13,9 @@
var isPlaying = false;
var playCheckInterval = null;
var trackDurationMs = null;
+ var $watchVideoBtn = null;
+ var firstTime = true;
+ var helpTimeout = null;
function checkIfPlaying() {
var currentPositionMs = context.jamClient.SessionCurrrentPlayPosMs();
@@ -59,11 +62,13 @@
}
function handleHelp() {
- return "https://jamkazam.desk.com/customer/portal/articles/1599967-first-time-setup---step-5---turn-off-direct-monitoring";
+ return "https://jamkazam.desk.com/customer/en/portal/articles/2400827-using-the-setup-wizard-%E2%80%93-step-5-%E2%80%93-turn-off-direct-monitoring";
}
function handleNext() {
-
+ if (helpTimeout) {
+ clearTimeout(helpTimeout);
+ }
}
function newSession() {
@@ -76,6 +81,7 @@
if(!context.jamClient.SessionAddPlayTrack("skin:jktest-audio.wav")) {
context.JK.alertSupportedNeeded('Unable to open test sound');
}
+ prodInstructions()
}
function beforeHide() {
@@ -108,6 +114,18 @@
})
}
+ function prodInstructions() {
+ if (firstTime && !helpTimeout) {
+
+ helpTimeout = setTimeout(function() {
+ helpTimeout = null
+ firstTime = false;
+
+ context.JK.HelpBubbleHelper.ftueStep4Instructions($watchVideoBtn)
+ }, 2000)
+ }
+ }
+
function initialize(_$step) {
$step = _$step;
@@ -115,6 +133,7 @@
$directMonitoringBtn.on('click', togglePlay);
$adjustSettingsDirectMonitor = $step.find('.adjust-settings-direct-monitor');
$adjustSettingsDirectMonitor.on('click', onAdjustGearRequested)
+ $watchVideoBtn = $step.find('.watch-video')
}
this.handleHelp = handleHelp;
diff --git a/web/app/assets/javascripts/wizard/gear/step_select_gear.js b/web/app/assets/javascripts/wizard/gear/step_select_gear.js
index 88f07f295..0b41e3030 100644
--- a/web/app/assets/javascripts/wizard/gear/step_select_gear.js
+++ b/web/app/assets/javascripts/wizard/gear/step_select_gear.js
@@ -27,9 +27,11 @@
// the goal of lastFailureAnalytics and trackedPass are to send only a single AudioTest 'Pass' or 'Failed' event, per FTUE wizard open/close
var lastFailureAnalytics = {};
var trackedPass = false;
+ var firstTime = true;
+ var helpTimeout = null;
+ var passedOnce = false;
- var $watchVideoInput = null;
- var $watchVideoOutput = null;
+ var $watchVideoBtn = null;
var $audioInput = null;
var $audioOutput = null;
var $inputChannels = null;
@@ -185,6 +187,21 @@
// ensure 1, or preferably 2, input channels are selected
var $assignedInputs = $inputChannels.find('input[type="checkbox"]:checked');
var $unassignedInputs = $inputChannels.find('input[type="checkbox"]:not(:checked)');
+
+ logger.debug("marking all unassigned inputs length=(" + $allInputs.length + ")")
+
+ var maxTries = 20;
+
+ for(var i = 0; i < maxTries; i++) {
+ $unassignedInputs = $inputChannels.find('input[type="checkbox"]:not(:checked)');
+
+ if($unassignedInputs.length == 0) {
+ break;
+ }
+ $unassignedInputs.eq(0).iCheck('check').attr('checked', 'checked');
+ }
+
+ /**
if ($assignedInputs.length == 0) {
if ($allInputs.length >= 2) {
logger.debug("selecting 2 inputs")
@@ -197,7 +214,9 @@
logger.debug("selecting 1 inputs")
$unassignedInputs.eq(0).iCheck('check').attr('checked', 'checked');
}
- }
+ logger.debug("selecting 1 inputs")
+ $unassignedInputs.eq(0).iCheck('check').attr('checked', 'checked');
+ }*/
var $allOutputs = $outputChannels.find('input[type="checkbox"]');
@@ -248,6 +267,9 @@
return newAssignment;
}
+ function setUIToBackendState() {
+
+ }
function reassignInputChannels() {
assertFTUEProfile();
var $assignedInputs = $inputChannels.find('input[type="checkbox"]:checked');
@@ -309,6 +331,7 @@
}, 1);
}
+
function outputChannelChanged() {
if (iCheckIgnore) return;
var $checkbox = $(this);
@@ -342,8 +365,12 @@
var $inputChannel = $(context._.template($templateAudioPort.html(), inputChannel, { variable: 'data' }));
var $checkbox = $inputChannel.find('input');
if (gearUtils.isChannelAssigned(inputChannel)) {
+ logger.debug("channel is assigned", inputChannel)
$checkbox.attr('checked', 'checked');
}
+ else {
+ logger.debug("channel is not assigned", inputChannel)
+ }
context.JK.checkbox($checkbox);
$checkbox.on('ifChanged', inputChannelChanged);
$inputChannels.append($inputChannel);
@@ -487,49 +514,7 @@
iCheckIgnore = false;
}
- function initializeWatchVideo() {
- $watchVideoInput.unbind('click').click(function () {
- var audioDevice = findDevice(selectedAudioInput());
- if (!audioDevice) {
- context.JK.Banner.showAlert('You must first choose an Audio Input Device so that we can determine which video to show you.');
- }
- else {
- var videoURL = AUDIO_DEVICE_BEHAVIOR[audioDevice.type].videoURL;
-
- if (videoURL) {
- $(this).attr('href', videoURL);
- return true;
- }
- else {
- context.JK.Banner.showAlert('No help video for this type of device (' + audioDevice.displayType + ')');
- }
- }
-
- return false;
- });
-
- $watchVideoOutput.unbind('click').click(function () {
-
- var audioDevice = findDevice(selectedAudioOutput());
- if (!audioDevice) {
- throw "this button should be hidden";
- }
- else {
- var videoURL = AUDIO_DEVICE_BEHAVIOR[audioDevice.type].videoURL;
-
- if (videoURL) {
- $(this).attr('href', videoURL);
- return true;
- }
- else {
- context.JK.Banner.showAlert('No help video for this type of device (' + audioDevice.displayType + ')');
- }
- }
-
- return false;
- });
- }
function invalidateScore() {
gearTest.invalidateScore();
@@ -829,18 +814,6 @@
jamClient.FTUESetOutputLatency(frameBuffers.selectedBufferOut());
jamClient.FTUESetFrameSize(frameBuffers.selectedFramesize());
- // prod user to watch video if the previous type and new type changed
- if(!shownInputProdOnce && isInputAudioTypeDifferentFromLastTime()) {
- context.JK.prodBubble($watchVideoInput, 'ftue-watch-video', {}, {positions:['top', 'right']});
- shownInputProdOnce = true;
- }
-
- // prod user to watch video if the previous type and new type changed
- if(!shownOutputProdOnce && isOutputAudioTypeDifferentFromLastTime()) {
- context.JK.prodBubble($watchVideoOutput, 'ftue-watch-video', {}, {positions:['top', 'right']});
- shownOutputProdOnce = true;
- }
-
// further, check if we have both inputs and outputs defined; if so, show ? to allow launch of adjust gear settings dialog
if(modUtils.getGear('show_frame_options')) {
$adjustSettingsLink.show();
@@ -907,13 +880,8 @@
// deal with watch video
if(isInputOutputDifferentTypes()) {
- // if we have two types of devices, you need two different videos
- $watchVideoOutput.show().find('.video-type').show();
- $watchVideoInput.addClass('audio-output-showing').find('.video-type').show();
}
else {
- $watchVideoOutput.hide();
- $watchVideoInput.removeClass('audio-output-showing').find('.video-type').hide();
}
// handle framesize/buffers
@@ -1109,12 +1077,7 @@
}
function handleHelp() {
- if(operatingSystem == "Win32") {
- return "https://jamkazam.desk.com/customer/portal/articles/1599818-first-time-setup---step-2---select-and-test-audio-gear---windows-";
- }
- else {
- return "https://jamkazam.desk.com/customer/portal/articles/1599845-first-time-setup---step-2---select-and-test-audio-gear---mac";
- }
+ return "https://jamkazam.desk.com/customer/en/portal/articles/2400685-using-the-setup-wizard-%E2%80%93-step-2-%E2%80%93-select-and-test-audio-gear"
}
function handleNext() {
@@ -1158,11 +1121,59 @@
savedProfile = true;
}
}
+
+ if (!passedOnce) {
+ passedOnce = true;
+ autoAssignToSingleInput();
+ }
// keep the shared state between step 2 and step 3 up-to-date
wizard.setChosenInputs(context._.map($assignedInputs, function(input) { return $(input).attr('data-id') }));
+
+ if (helpTimeout) {
+ clearTimeout(helpTimeout);
+ }
+
+ $sampleRate.btOff()
+
+
return true;
}
+ function autoAssignToSingleInput() {
+ var $allInputs = $inputChannels.find('input[type="checkbox"]')
+ if ($allInputs.length == 0) {
+ logger.debug("no inputs; bailing autoAssignToSingleInput")
+ return;
+ }
+ var $unassignedInputs = $inputChannels.find('input[type="checkbox"]:not(:checked)')
+ $allInputs.eq(0).iCheck('check').attr('checked', 'checked')
+ var firstInputDomNode = $allInputs.get(0)
+
+ var maxTries = 20;
+ for(var i = 0; i < maxTries; i++) {
+ var $assignedInputs = $inputChannels.find('input[type="checkbox"]:checked')
+
+ if ($assignedInputs.length == 1) {
+ break;
+ }
+ else {
+ $assignedInputs.each(function(index, item) {
+ var $node = $(item)
+ if ($node.get(0) == firstInputDomNode) {
+ logger.debug("skipping firstInputDomNode")
+ }
+ else {
+ // the goal of this loop is to just uncheck one. once it's done that, it breaks the loop, so that assigned can be fetched again
+ $node.iCheck('uncheck').removeAttr('checked')
+ return false;
+ }
+ })
+ }
+
+ }
+
+ }
+
function onFocus() {
if(validDevice && !loopbackShowing && !adjustGearSettingsShowing && !gearTest.isScoring() && getSelectedInputs().length > 0 && getSelectedOutputs().length == 2 ) {
//scheduleRescanSystem(function() { attemptScore(true); }, 3000, false)
@@ -1178,7 +1189,6 @@
resetState();
initializeFormElements();
initializeNextButtonState();
- initializeWatchVideo();
initializeASIOButtons();
initializeResync();
}
@@ -1192,6 +1202,7 @@
$(window).on('focus', onFocus);
context.JK.onBackendEvent(ALERT_NAMES.USB_CONNECTED, 'select-gear', onUsbDeviceConnected);
context.JK.onBackendEvent(ALERT_NAMES.USB_DISCONNECTED, 'select-gear', onUsbDeviceDisconnected);
+ context.JK.onBackendEvent(ALERT_NAMES.SAMPLERATE_CONFIGURATION_BAD, 'select-gear', onSampleRateBad)
initializeNextButtonState();
context.JK.onBackendEvent(ALERT_NAMES.AUDIO_DEVICE_NOT_PRESENT, 'gear_test', gearTest.onInvalidAudioDevice);
@@ -1200,6 +1211,24 @@
scheduleRescanSystem(null, 3000, true);
initialScan = true;
}
+ else {
+ initializeChannels();
+ }
+ prodInstructions();
+
+
+ }
+
+ function prodInstructions() {
+ if (firstTime && !helpTimeout) {
+
+ helpTimeout = setTimeout(function() {
+ helpTimeout = null
+ firstTime = false;
+
+ context.JK.HelpBubbleHelper.ftueStep2Instructions($watchVideoBtn)
+ }, 2000)
+ }
}
function beforeHide() {
@@ -1207,6 +1236,7 @@
logger.debug("unregistering focus watch")
context.JK.offBackendEvent(ALERT_NAMES.USB_CONNECTED, 'select-gear', onUsbDeviceConnected);
context.JK.offBackendEvent(ALERT_NAMES.USB_DISCONNECTED, 'select-gear', onUsbDeviceDisconnected);
+ context.JK.offBackendEvent(ALERT_NAMES.SAMPLERATE_CONFIGURATION_BAD, 'select-gear', onSampleRateBad)
$(window).off('focus', onFocus);
context.JK.offBackendEvent(ALERT_NAMES.AUDIO_DEVICE_NOT_PRESENT, 'gear_test', gearTest.onInvalidAudioDevice);
}
@@ -1223,6 +1253,10 @@
updateDeviceList();
}
+ function onSampleRateBad() {
+ context.JK.HelpBubbleHelper.ftueStep2SampleRate($sampleRate, $sampleRate.closest('.dialog'))
+ }
+
function updateDeviceList() {
if(gearTest.isScoring()) {
queueUpdateDeviceList = true;
@@ -1254,8 +1288,7 @@
$step = _$step;
wizard = _wizard;
- $watchVideoInput = $step.find('.watch-video.audio-input');
- $watchVideoOutput = $step.find('.watch-video.audio-output');
+ $watchVideoBtn = $step.find('.watch-video');
$audioInput = $step.find('.select-audio-input-device');
$audioOutput = $step.find('.select-audio-output-device');
$templateDeviceNotValid = $('#device-not-valid');
diff --git a/web/app/assets/javascripts/wizard/gear/step_understand_gear.js b/web/app/assets/javascripts/wizard/gear/step_understand_gear.js
index 605089717..ce21e9b8e 100644
--- a/web/app/assets/javascripts/wizard/gear/step_understand_gear.js
+++ b/web/app/assets/javascripts/wizard/gear/step_understand_gear.js
@@ -9,7 +9,7 @@
var operatingSystem;
function handleHelp() {
- return "https://jamkazam.desk.com/customer/portal/articles/1599817-first-time-setup---step-1";
+ return "https://jamkazam.desk.com/customer/en/portal/articles/2400684-using-the-setup-wizard-%E2%80%93-step-1-%E2%80%93-understanding-your-gear";
}
function beforeShow() {
diff --git a/web/app/assets/stylesheets/client/help.css.scss b/web/app/assets/stylesheets/client/help.css.scss
index 02362ab94..13ebed700 100644
--- a/web/app/assets/stylesheets/client/help.css.scss
+++ b/web/app/assets/stylesheets/client/help.css.scss
@@ -68,7 +68,7 @@ html {
}
a {
- color:$latencyBadgeFair;
+ color:black !important;
}
}
@@ -146,6 +146,12 @@ html {
}
+ .ftue-step-2-instructions, .ftue-step-4-instructions, .ftue-step-5-instructions {
+ width:180px;
+ }
+ .ftue-step-2-sample-rate {
+ width:180px;
+ }
.help-hover-recorded-tracks, .help-hover-stream-mix, .help-hover-recorded-backing-tracks {
diff --git a/web/app/assets/stylesheets/client/wizard/gearWizard.css.scss b/web/app/assets/stylesheets/client/wizard/gearWizard.css.scss
index d7bbb1f80..870a6f544 100644
--- a/web/app/assets/stylesheets/client/wizard/gearWizard.css.scss
+++ b/web/app/assets/stylesheets/client/wizard/gearWizard.css.scss
@@ -110,7 +110,7 @@
width: 25%;
}
- .watch-video.audio-input {
+ .watch-video.audio-input, .watch-video {
margin-top: 29px;
&.audio-output-showing {
@@ -292,7 +292,7 @@
}
.watch-video {
- margin-top: 114px;
+ margin-top: 54px;
}
.ftue-box.chat-inputs {
@@ -658,11 +658,16 @@
.wizard-step.success {
.wizard-step-content .wizard-step-column {
&:nth-of-type(1) {
- width: 50%;
+ width: 100%;
+ padding:2% 20%;
height: 350px;
}
&:nth-of-type(2) {
- width: 50%;
+ width: 0%;
+ }
+
+ .congrats-sig {
+ text-align:right;
}
ul {
diff --git a/web/app/assets/stylesheets/dialogs/configureLiveTracksDialog.css.scss b/web/app/assets/stylesheets/dialogs/configureLiveTracksDialog.css.scss
index 86dd1879c..9e6383cfb 100644
--- a/web/app/assets/stylesheets/dialogs/configureLiveTracksDialog.css.scss
+++ b/web/app/assets/stylesheets/dialogs/configureLiveTracksDialog.css.scss
@@ -61,7 +61,7 @@
margin-bottom:40px;
padding:10px;
- select {
+ select, .easydropdown-wrapper {
width: 90%;
@include border_box_sizing;
margin-bottom:10px;
@@ -79,7 +79,7 @@
float:left;
margin-bottom:26px;
padding:10px;
- select {
+ select, .easydropdown-wrapper {
width:90%;
}
}
@@ -93,7 +93,7 @@
position:relative;
width:50%;
- select {
+ select, .easydropdown-wrapper {
width:80%;
margin-bottom:10px;
}
@@ -108,7 +108,7 @@
float:left;
margin-bottom:26px;
padding:10px;
- select {
+ select, .easydropdown-wrapper {
width:80%;
}
}
@@ -123,7 +123,7 @@
width:50%;
clear:both;
- select {
+ select, .easydropdown-wrapper {
width:80%;
margin-bottom:10px;
}
@@ -154,7 +154,7 @@
padding:10px;
position:relative;
- select {
+ select, .easydropdown-wrapper {
width:90%;
margin-bottom:20px;
}
diff --git a/web/app/assets/stylesheets/landings/individual_jamtrack.css.scss b/web/app/assets/stylesheets/landings/individual_jamtrack.css.scss
index 0c21fb02a..3c3c3b67b 100644
--- a/web/app/assets/stylesheets/landings/individual_jamtrack.css.scss
+++ b/web/app/assets/stylesheets/landings/individual_jamtrack.css.scss
@@ -717,6 +717,11 @@ body.web.individual_jamtrack {
&.student {
top:541px;
+
+ .cta-button {
+ width:70%;
+ margin-left:15%;
+ }
}
}
@@ -796,6 +801,7 @@ body.web.individual_jamtrack {
padding: 10px;
display: block;
width: 100%;
+ border-radius:8px;
border: 1px outset buttonface;
font-family: Raleway, Arial, Helvetica, sans-serif;
@@ -903,21 +909,7 @@ body.web.individual_jamtrack {
}
}
- .cta-button {
- font-size: 24px;
- color: white;
- background-color: $cta-color;
- text-align: center;
- padding: 10px;
- display: block;
- width: 100%;
- border: 1px outset buttonface;
- font-family: Raleway, Arial, Helvetica, sans-serif;
- @include layout-small {
- font-size:30pt;
- }
- }
.privacy-policy {
text-decoration: underline;
diff --git a/web/app/views/clients/_help.html.slim b/web/app/views/clients/_help.html.slim
index 138ba6a74..d2c9455d9 100644
--- a/web/app/views/clients/_help.html.slim
+++ b/web/app/views/clients/_help.html.slim
@@ -37,19 +37,19 @@ script type="text/template" id="template-help-high-latency-notice"
p
| If you are unable to get your audio gear latency below 20 milliseconds, you can click NEXT to proceed through setup with a high-latency audio profile. This will allow you to play with JamTracks and backing tracks, but not play with others.
p
- a href="https://jamkazam.desk.com/customer/portal/articles/1520627-my-audio-gear-won-t-pass-latency-or-i-o-tests" rel="external" Click here
+ a href="https://jamkazam.desk.com/customer/en/portal/articles/2400685-using-the-setup-wizard-%E2%80%93-step-2-%E2%80%93-select-and-test-audio-gear" rel="external" Click here
| for more troubleshooting tips to speed up your audio gear setup.
| {% } else if(data.additional == 'macosx-builtin') { %}
p.gear-specific-latency-notice Tip: Insert your headphones on a Mac to bring your latency down, and click the RESYNC button to try again.
p
| If you are unable to get your audio gear latency below 20 milliseconds, you can click NEXT to proceed through setup with a high-latency audio profile. This will allow you to play with JamTracks and backing tracks, but not play with others.
p
- a href="https://jamkazam.desk.com/customer/portal/articles/1520627-my-audio-gear-won-t-pass-latency-or-i-o-tests" rel="external" Click here
+ a href="https://jamkazam.desk.com/customer/en/portal/articles/2400685-using-the-setup-wizard-%E2%80%93-step-2-%E2%80%93-select-and-test-audio-gear" rel="external" Click here
| for more troubleshooting tips to speed up your audio gear setup.
| {% } else { %}
p.general-info
| Your computer and interface are processing audio too slowly to play online in real-time sessions with other musicians over the Internet. You may click NEXT to proceed through setup to play alone in sessions with JamTracks or backing tracks, or if you want to improve your speed score to play online,
- a href="https://jamkazam.desk.com/customer/portal/articles/1520627-my-audio-gear-won-t-pass-latency-or-i-o-tests" rel="external" click here
+ a href="https://jamkazam.desk.com/customer/en/portal/articles/2400685-using-the-setup-wizard-%E2%80%93-step-2-%E2%80%93-select-and-test-audio-gear" rel="external" click here
| for a troubleshooting article.
| {% } %}
@@ -440,4 +440,28 @@ script type="text/template" id="template-help-side-didnt-find-teacher"
input.phonenumber type="text" placeholder="Callback number"
.textarea-wrapper
textarea.note placeholder="Write a note here explaining what you need in your teacher..."
- a.post-help.button-orange SEND NOTE
\ No newline at end of file
+ a.post-help.button-orange SEND NOTE
+
+
+script type="text/template" id="template-help-ftue-step-3-config-tracks"
+ .ftue-step-3-config-tracks.big-dark-help
+ p Please click here for detailed instructions to successfully complete this setup step. These instructions will help you avoid wasted time and frustration.
+
+script type="text/template" id="template-help-ftue-step-2-instructions"
+ .ftue-step-2-instructions.big-dark-help
+ p Please click here for detailed instructions to successfully complete this setup step. These instructions will help you avoid wasted time and frustration.
+
+script type="text/template" id="template-help-ftue-step-2-sample-rate"
+ .ftue-step-2-sample-rate.big-dark-help
+ p
+ | Your sample rate settings are currently in conflict.
+ a href="https://jamkazam.desk.com/customer/en/portal/articles/2407165-i-need-to-make-sure-my-audio-sample-rates-match" rel="external" Click here
+ | for instructions to correct this.
+
+script type="text/template" id="template-help-ftue-step-4-instructions"
+ .ftue-step-4-instructions.big-dark-help
+ p Please click here for detailed instructions to successfully complete this setup step.
+
+script type="text/template" id="template-help-ftue-step-5-instructions"
+ .ftue-step-5-instructions.big-dark-help
+ p Please click here for detailed instructions to successfully complete this setup step.
\ No newline at end of file
diff --git a/web/app/views/clients/wizard/gear/_gear_wizard.html.haml b/web/app/views/clients/wizard/gear/_gear_wizard.html.haml
index 2f85b2d9e..609682e34 100644
--- a/web/app/views/clients/wizard/gear/_gear_wizard.html.haml
+++ b/web/app/views/clients/wizard/gear/_gear_wizard.html.haml
@@ -8,10 +8,7 @@
.clearall
.help-text
Please click the Watch Video button below to see a video explaining the different kinds of gear setups you can use with JamKazam.
- We strongly advise that you watch the instructional videos that are made available at each step of this first-time setup process.
- It will take a few minutes, but it will save you a
- %strong lot
- of time and trouble.
+ It will take a few minutes, but it will educate you and save you time and trouble.
.center.video-button-holder
%a.button-orange.watch-video{href:"#", rel:'external'} WATCH VIDEO
@@ -31,14 +28,8 @@
%li Configure interface settings.
%li View test results.
.center
- %a.button-orange.watch-video.audio-input{href:'#', rel:'external'}
- WATCH VIDEO
- %br
- %span.video-type (FOR INPUT DEVICE)
- %a.button-orange.watch-video.audio-output{href:'#', rel:'external'}
- WATCH VIDEO
- %br
- %span.video-type (FOR OUTPUT DEVICE)
+ %a.button-orange.watch-video{href:'https://jamkazam.desk.com/customer/en/portal/articles/2400685-using-the-setup-wizard-%E2%80%93-step-2-%E2%80%93-select-and-test-audio-gear', rel:'external'}
+ INSTRUCTIONS
.wizard-step-column
%h2 Audio Input Device
%select.w100.select-audio-input-device
@@ -85,15 +76,15 @@
.wizard-step{ 'layout-wizard-step' => "3", 'dialog-title' => "Configure Voice Chat", 'dialog-purpose' => "ConfigureVoiceChat" }
.ftuesteps
.clearall
- .help-text In this step, you may set up a microphone to use for voice chat. Please watch the video for best instructions.
+ .help-text In this step, you may set up a microphone to use for voice chat if needed.
.wizard-step-content
.wizard-step-column
%h2 Instructions
.ftue-box.instructions
- %p Determine if you need to set up a voice chat input.
- %p If you do, then assign the audio input to use to capture voice chat.
+ %p If you have set up a mic in step 2 for your instrument or voice, click Next to move forward.
+ %p Otherwise, follow the instructions to set up a voice chat mic.
.center
- %a.button-orange.watch-video{href:'https://www.youtube.com/watch?v=f7niycdWm7Y', rel:'external'} WATCH VIDEO
+ %a.button-orange.watch-video{href:'https://jamkazam.desk.com/customer/en/portal/articles/2400826-using-the-setup-wizard-%E2%80%93-step-4-%E2%80%93-configure-voice-chat', rel:'external'} INSTRUCTIONS
.wizard-step-column
%h2.sub-header Select Voice Chat Option
%form.voice
@@ -104,7 +95,7 @@
.voicechat-option.use-chat-input
%input{type:"radio", name: "voicechat"}
%h3 Use Chat Microphone
- %p I am not using a microphone for acoustic instruments or vocals, so use the input selected to the right for voice chat during my sessions
+ %p I am not using a microphone for acoustic instruments or vocals, so use the input selected below for voice chat during my sessions
.clearall
// .wizard-step-column
%h2.sub-header.voice-chat-header Voice Chat Input
@@ -120,20 +111,20 @@
.wizard-step{ 'layout-wizard-step' => "4", 'dialog-title' => "Turn Off Direct Monitoring", 'dialog-purpose' => "DirectMonitoring" }
.ftuesteps
.clearall
- .help-text In this step, you will ensure that any direct monitoring control on your audio interface is turned off. Please watch the video for best instructions.
+ .help-text In this step, you will ensure that any direct monitoring feature on your audio interface is turned off.
.wizard-step-content
.wizard-step-column
%h2 Instructions
.ftue-box.instructions
- %p Find the Direct Monitoring control on your audio interface.
%ul
- %li If a button, push it into its off position.
- %li If a knob, turn it so that 100% of audio is from your computer, and 0% is from the direct monitor.
+ %li Find the Direct Monitoring control on your audio interface.
+ %li If a button or switch, set it to off position.
+ %li If a knob, turn it so 100% of audio is from your computer, and 0% is from inputs.
%li
= "If audio is poor try "
%a.adjust-settings-direct-monitor{'href'=>'#'}tweaking your settings
.center
- %a.button-orange.watch-video{href:'https://www.youtube.com/watch?v=-nC-D3JBHnk', rel:'external'} WATCH VIDEO
+ %a.button-orange.watch-video{href:'https://jamkazam.desk.com/customer/en/portal/articles/2400827-using-the-setup-wizard-%E2%80%93-step-5-%E2%80%93-turn-off-direct-monitoring', rel:'external'} INSTRUCTIONS
.wizard-step-column
.help-content
When you have fully turned off the direct monitoring control (if any) on your audio interface,
@@ -151,7 +142,7 @@
%span.direct-monitoring-btn Play
-step=4
- -if (Rails.application.config.video_available && Rails.application.config.video_available!="none")
+ -if (false && Rails.application.config.video_available && Rails.application.config.video_available!="none")
.wizard-step.video-gear{ 'layout-wizard-step' => "#{step+=1}", 'dialog-title' => "Set Up Video Gear", 'dialog-purpose' => "SelectVideoGear" }
.ftuesteps
.clearall
@@ -167,31 +158,10 @@
.clearall
.wizard-step-content
.wizard-step-column
- %p Congratulations! You are now ready to create, join, and play in online sessions with other JamKazam musicians!
- %p Please feel free to watch any of the videos to the right for information on how to connect and play with other musicians, and how to get the most out of JamKazam. When you're ready to go, click the Close button.
- %p Have fun and thanks for joining us!
- %p — Team JamKazam
+ %p Congratulations! You are now ready to create, join, and play in online sessions with other JamKazam musicians. Have fun and thanks for joining us!
+ %p.congrats-sig — Team JamKazam
.wizard-step-column
- %h2 Tutorial Videos
- %ul
- %li
- %a{href: 'https://www.youtube.com/watch?v=EZZuGcDUoWk', rel: 'external'} Creating a Session
- %li
- %a{href: 'https://www.youtube.com/watch?v=xWponSJo-GU', rel: 'external'} Finding a Session
- %li
- %a{href: 'https://www.youtube.com/watch?v=zJ68hA8-fLA', rel: 'external'} Playing in a Session
- %li
- %a{href: '#'} Connecting with Other Musicians
- %li
- %a{href: '#'} Making and Sharing Recordings
- %li
- %a{href: '#'} Broadcasting Your Sessions
- %h2 Other Valuable Resource Links
- %ul
- %li
- %a{href: 'https://jamkazam.desk.com/', rel: 'external'} JamKazam Support Center
- %li
- %a{href: 'http://forums.jamkazam.com', rel: 'external'} JamKazam Community Forum
+
.wizard-buttons
%script{type: 'text/template', id: 'template-ftuesteps'}
@@ -207,7 +177,7 @@
%a.ftue-stepnumber{'data-step-number' => 4} 5
.ftue-step-title Turn Off Direct Monitoring
-step = 4
- -if (Rails.application.config.video_available && Rails.application.config.video_available!="none")
+ -if (false && Rails.application.config.video_available && Rails.application.config.video_available!="none")
%a.ftue-stepnumber{'data-step-number' => step+=1}=step+1
.ftue-step-title Select Video Gear
-if (Rails.application.config.network_test_required)
diff --git a/web/app/views/landings/jam_class_students.html.slim b/web/app/views/landings/jam_class_students.html.slim
index 33aaf6537..5dcc92928 100644
--- a/web/app/views/landings/jam_class_students.html.slim
+++ b/web/app/views/landings/jam_class_students.html.slim
@@ -16,8 +16,8 @@
br
| Our TestDrive program lets you:
ul
- li Take a full lesson from 4 different teachers for just $49.99 each, or
- li Take a full lesson from 2 different teachers for just $29.99 each, or
+ li Take a full lesson from 4 different teachers for just $12.49 each, or
+ li Take a full lesson from 2 different teachers for just $14.99 each, or
li Take a full lesson from 1 teacher for just $14.99
p.bump Then continue your lessons with the best teacher for you!
p.bump Join 40,000+ other musicians in the JamKazam community. Sign up for TestDrive today, and you'll be eligible for any of the three special offers above!