no youtube integration :(
This commit is contained in:
parent
4c0a0e73e2
commit
4e9ac27510
7 changed files with 196 additions and 275 deletions
|
|
@ -17,8 +17,8 @@
|
|||
<link rel="stylesheet" href="assets/vendor.css">
|
||||
<link rel="stylesheet" href="assets/huegasm.css">
|
||||
|
||||
<script src="http://apis.google.com/js/client.js"></script>
|
||||
<script src="http://www.youtube.com/iframe_api"></script>
|
||||
<!--<script src="//apis.google.com/js/client.js"></script>-->
|
||||
<!--<script src="//www.youtube.com/iframe_api"></script>-->
|
||||
|
||||
{{content-for 'head-footer'}}
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -16,62 +16,17 @@ export default Em.Component.extend(musicControlMixin, visualizerMixin, {
|
|||
}.observes('active'),
|
||||
|
||||
actions: {
|
||||
search: function(){
|
||||
var q = $('#query').val(), doSearch = function(){
|
||||
var request = gapi.client.youtube.search.list({
|
||||
q: q,
|
||||
part: 'snippet',
|
||||
key: 'AIzaSyAkwv6RD184j6o5wRfblYWNlV_njt6RXIc'
|
||||
});
|
||||
|
||||
request.execute(function(response) {
|
||||
var str = JSON.stringify(response.result);
|
||||
$('#search-container').html('<pre>' + str + '</pre>');
|
||||
});
|
||||
};
|
||||
if(!gapi.client.youtube){
|
||||
gapi.client.load('youtube', 'v3', doSearch);
|
||||
} else {
|
||||
doSearch();
|
||||
}
|
||||
},
|
||||
useYoutubeAudio: function(){
|
||||
var audioStream = this.get('audioStream');
|
||||
|
||||
this.changePlayerControl('audioMode', 2);
|
||||
|
||||
if(!Em.isNone(audioStream)){
|
||||
audioStream.stop();
|
||||
this.set('audioStream', null);
|
||||
}
|
||||
|
||||
var onPlayerReady = function(){
|
||||
console.log('ready');
|
||||
}, onPlayerStateChange = function(){
|
||||
console.log('onPlayerStateChange');
|
||||
}, onError = function(err){
|
||||
console.log('onError' + err.data);
|
||||
};
|
||||
|
||||
var youtubePlayer = new YT.Player('playerArea', {
|
||||
videoId: 'Mc8LjwZvxHw'
|
||||
});
|
||||
|
||||
var audio = new Audio(), dancer = this.get('dancer');
|
||||
audio.src = "https://www.youtube.com/embed/Mc8LjwZvxHw?enablejsapi=1&origin=http%3A%2F%2Flocalhost%3A4200";
|
||||
dancer.load(audio);
|
||||
dancer.play();
|
||||
|
||||
this.set('youtubePlayer', youtubePlayer);
|
||||
document.title = 'Youtube - Huegasm';
|
||||
},
|
||||
useLocalAudio: function(){
|
||||
var audioStream = this.get('audioStream');
|
||||
this.changePlayerControl('audioMode', 0);
|
||||
|
||||
if(!Em.isNone(audioStream)){
|
||||
audioStream.stop();
|
||||
this.set('audioStream', null);
|
||||
|
||||
this.setProperties({
|
||||
audioStream: null,
|
||||
playing: false
|
||||
});
|
||||
}
|
||||
|
||||
if(this.get('playQueuePointer') !== -1) {
|
||||
|
|
@ -82,7 +37,11 @@ export default Em.Component.extend(musicControlMixin, visualizerMixin, {
|
|||
document.title = 'Huegasm';
|
||||
},
|
||||
useMicAudio() {
|
||||
this.startUsingMic();
|
||||
if(this.get('usingMicAudio')) {
|
||||
this.send('useLocalAudio');
|
||||
} else {
|
||||
this.startUsingMic();
|
||||
}
|
||||
},
|
||||
slideTogglePlayerBottom(){
|
||||
this.changePlayerControl('playerBottomDisplayed', !this.get('playerBottomDisplayed'));
|
||||
|
|
@ -337,7 +296,7 @@ export default Em.Component.extend(musicControlMixin, visualizerMixin, {
|
|||
dancer.setVolume(0);
|
||||
},
|
||||
(err) => {
|
||||
if(err.name == 'DevicesNotFoundError'){
|
||||
if(err.name === 'DevicesNotFoundError'){
|
||||
this.get('notify').alert({html: this.get('notFoundHtml')});
|
||||
}
|
||||
|
||||
|
|
@ -559,9 +518,5 @@ export default Em.Component.extend(musicControlMixin, visualizerMixin, {
|
|||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
|
||||
if(this.get('audioMode') === 2){
|
||||
this.send('useYoutubeAudio');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -78,11 +78,10 @@ export default Em.Mixin.create({
|
|||
lastLightBopIndex: 0,
|
||||
|
||||
usingMicSupported: true,
|
||||
// 0 - local, 1 - mic, 2 - youtube
|
||||
// 0 - local, 1 - mic, possibly more to come
|
||||
audioMode: 0,
|
||||
usingLocalAudio: Em.computed.equal('audioMode', 0),
|
||||
usingMicAudio: Em.computed.equal('audioMode', 1),
|
||||
usingYoutubeAudio: Em.computed.equal('audioMode', 2),
|
||||
|
||||
playerBottomDisplayed: false,
|
||||
dragging: false,
|
||||
|
|
@ -118,7 +117,6 @@ export default Em.Mixin.create({
|
|||
paused: false,
|
||||
// audio: playing or paused
|
||||
playing: false,
|
||||
youtubePlayer: null,
|
||||
fadeOutNotification: false,
|
||||
|
||||
speakerViewed: true,
|
||||
|
|
@ -167,6 +165,14 @@ export default Em.Mixin.create({
|
|||
}
|
||||
},
|
||||
|
||||
micIcon: function () {
|
||||
if (this.get('usingMicAudio')) {
|
||||
return 'mic';
|
||||
}
|
||||
|
||||
return 'mic-off';
|
||||
}.property('usingMicAudio'),
|
||||
|
||||
repeatIcon: function () {
|
||||
if (this.get('repeat') === 2) {
|
||||
return 'repeat-one';
|
||||
|
|
@ -207,10 +213,6 @@ export default Em.Mixin.create({
|
|||
return this.get('usingMicAudio') ? 'playerControllIcon active' : 'playerControllIcon';
|
||||
}.property('usingMicAudio'),
|
||||
|
||||
usingYoutubeAudioClass: function() {
|
||||
return this.get('usingYoutubeAudio') ? 'playerControllIcon active' : 'playerControllIcon';
|
||||
}.property('usingYoutubeAudio'),
|
||||
|
||||
repeatClass: function () {
|
||||
return this.get('repeat') !== 0 ? 'playerControllIcon active' : 'playerControllIcon';
|
||||
}.property('repeat'),
|
||||
|
|
@ -320,9 +322,9 @@ export default Em.Mixin.create({
|
|||
|
||||
beatDetectionArrowIcon: function(){
|
||||
if(!this.get('playerBottomDisplayed')){
|
||||
return 'angle-double-down';
|
||||
return 'keyboard-arrow-down';
|
||||
} else {
|
||||
return 'angle-double-up';
|
||||
return 'keyboard-arrow-up';
|
||||
}
|
||||
}.property('playerBottomDisplayed'),
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +1,14 @@
|
|||
<div class="row">
|
||||
{{#if (or usingLocalAudio usingMicAudio)}}
|
||||
<div id="playerArea" class="col-sm-8 col-xs-12" {{action "playerAreaPlay"}}>
|
||||
<div id="playNotification"
|
||||
class="material-icons {{if fadeOutNotification "fadeOut"}} {{if playing "play-arrow" "pause"}}"></div>
|
||||
<div id="playerControls">
|
||||
{{#if usingLocalAudio}}
|
||||
{{range-slider start=seekPosition min=0 max=100 id="seekSlider" slide="seekChanged"}}
|
||||
<div id="playerArea" class="col-sm-8 col-xs-12" {{action "playerAreaPlay"}}>
|
||||
<div id="playNotification"
|
||||
class="material-icons {{if fadeOutNotification "fadeOut"}} {{if playing "play-arrow" "pause"}}"></div>
|
||||
<div id="playerControls">
|
||||
{{#if usingLocalAudio}}
|
||||
{{range-slider start=seekPosition min=0 max=100 id="seekSlider" slide="seekChanged"}}
|
||||
|
||||
{{#if playQueueMultiple}}
|
||||
<span data-toggle="tooltip" data-placement="top" class="bootstrapTooltip" id="prevTooltip"
|
||||
data-title={{prevTooltipTxt}} {{action "previous"}}>{{paper-icon icon="skip-previous" class="playerControllIcon"}}</span><!--
|
||||
{{#if playQueueMultiple}}
|
||||
<span data-toggle="tooltip" data-placement="top" class="bootstrapTooltip" id="prevTooltip"
|
||||
data-title={{prevTooltipTxt}} {{action "previous"}}>{{paper-icon icon="skip-previous" class="playerControllIcon"}}</span><!--
|
||||
-->{{/if}}<!--
|
||||
--><span data-toggle="tooltip" data-placement="top" id="playingTooltip" class="bootstrapTooltip"
|
||||
data-title={{playingTooltipTxt}} {{action "play"}}>{{paper-icon icon=playingIcon class="playerControllIcon"}}</span><!--
|
||||
|
|
@ -21,10 +20,10 @@
|
|||
data-title={{volumeMutedTooltipTxt}} {{action "volumeMutedChanged"}}>{{paper-icon icon=volumeClass class="playerControllIcon volumeButton"}}</span><!--
|
||||
-->{{range-slider start=volume min=0 max=100 slide="volumeChanged" id="volumeBar"}}
|
||||
|
||||
<div id="playerTimeControls">{{timeElapsedTxt}} / {{timeTotalTxt}}</div>
|
||||
{{/if}}
|
||||
<div id="playerTimeControls">{{timeElapsedTxt}} / {{timeTotalTxt}}</div>
|
||||
{{/if}}
|
||||
|
||||
<span class="pull-right">
|
||||
<span class="pull-right">
|
||||
<span data-toggle="tooltip" data-placement="top" class="bootstrapTooltip"
|
||||
data-title="Visualizations" {{action "toggleVisualizations"}}>{{paper-icon icon="remove-red-eye" class="playerControllIcon"}}
|
||||
</span>
|
||||
|
|
@ -32,185 +31,165 @@
|
|||
data-title="Full screen" {{action "fullscreen"}}>{{paper-icon icon="fullscreen" class="playerControllIcon"}}
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<div id="playerArea" class="col-sm-8 col-xs-12">
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
<div id="playlist" class="col-sm-4 col-xs-12">
|
||||
<input id="fileInput" type="file" accept="audio/*" multiple="true"/>
|
||||
<div id="playlist" class="col-sm-4 col-xs-12">
|
||||
<input id="fileInput" type="file" accept="audio/*" multiple="true"/>
|
||||
|
||||
<div id="playListControls">
|
||||
<div id="playListControls">
|
||||
{{#if usingLocalAudio}}
|
||||
<span data-toggle="tooltip" data-placement="bottom auto" data-title="Add new music"
|
||||
class="pull-right bootstrapTooltip" {{action "addAudio"}}>{{paper-icon icon="add" class="playerControllIcon"}}</span>
|
||||
<span data-toggle="tooltip" data-placement="bottom auto" class="bootstrapTooltip"
|
||||
id="shuffleTooltip"
|
||||
data-title={{shuffleTooltipTxt}} {{action "shuffleChanged"}}>{{paper-icon icon="shuffle" class=shuffleClass}}</span>
|
||||
<span data-toggle="tooltip" data-placement="bottom auto" class="bootstrapTooltip"
|
||||
id="repeatTooltip"
|
||||
data-title={{repeatTooltipTxt}} {{action "repeatChanged"}}>{{paper-icon icon=repeatIcon class=repeatClass}}</span>
|
||||
{{/if}}
|
||||
|
||||
<span data-toggle="tooltip" data-placement="bottom auto" class="bootstrapTooltip"
|
||||
data-title="Play local audio files" {{action "useLocalAudio"}}>{{fa-icon "music" classNames=usingLocalAudioClass}}</span>
|
||||
<span data-toggle="tooltip" data-placement="bottom auto" class="bootstrapTooltip"
|
||||
data-title="Play Youtube" {{action "useYoutubeAudio"}}>{{fa-icon 'youtubeWorkaround' classNames=usingYoutubeAudioClass}}</span>
|
||||
{{#if usingMicSupported}}
|
||||
<span data-toggle="tooltip" data-placement="bottom auto" class="bootstrapTooltip"
|
||||
data-title="Listen to audio through mic" {{action "useMicAudio"}}>{{fa-icon "microphone" classNames=usingMicAudioClass}}</span>
|
||||
{{/if}}
|
||||
|
||||
{{#if usingLocalAudio}}
|
||||
<span data-toggle="tooltip" data-placement="bottom auto" data-title="Add new music"
|
||||
class="pull-right bootstrapTooltip" {{action "addAudio"}}>{{paper-icon icon="add" class="playerControllIcon"}}</span>
|
||||
<span data-toggle="tooltip" data-placement="bottom auto" class="pull-right bootstrapTooltip"
|
||||
id="shuffleTooltip"
|
||||
data-title={{shuffleTooltipTxt}} {{action "shuffleChanged"}}>{{paper-icon icon="shuffle" class=shuffleClass}}</span>
|
||||
<span data-toggle="tooltip" data-placement="bottom auto" class="pull-right bootstrapTooltip"
|
||||
id="repeatTooltip"
|
||||
data-title={{repeatTooltipTxt}} {{action "repeatChanged"}}>{{paper-icon icon=repeatIcon class=repeatClass}}</span>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
{{#if usingMicAudio}}
|
||||
<div id="playAreaMic">
|
||||
{{paper-icon icon="mic"}}
|
||||
</div>
|
||||
{{else}}
|
||||
{{#if usingLocalAudio}}
|
||||
<div id="playListArea"
|
||||
class={{playListAreaClass}} {{action "playListAreaAddAudio"}} {{action "playListAreaDragOver" on="dragOver"}} {{action "playListAreaDragLeave" on="dragLeave"}} {{action "dropFiles" on="drop"}}>
|
||||
{{#if (or playQueueEmpty dragging)}}
|
||||
<div id="dragHere">
|
||||
{{#if dragging}}
|
||||
Drag your music files here
|
||||
{{else}}
|
||||
Add your music files here
|
||||
{{/if}}
|
||||
</div>
|
||||
{{paper-icon icon="library-music"}}
|
||||
{{/if}}
|
||||
|
||||
{{#each playQueue as |item index|}}
|
||||
<div class="playlistItem cursorPointer {{if (eq index playQueuePointer) "active"}} {{if dragging "hidden"}}" {{action "goToSong" index true bubbles=false}}>
|
||||
{{#if item.title}}
|
||||
{{item.title}}
|
||||
<div class="songArtist">{{item.artist}}</div>
|
||||
{{else}}
|
||||
{{item.filename}}
|
||||
{{/if}}
|
||||
<div data-toggle="tooltip" data-placement="bottom auto" data-title="Remove from playlist"
|
||||
class="audioRemoveButton cursorPointer bootstrapTooltip" {{action "removeAudio" index bubbles=false}}>{{paper-icon icon="close"}}</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
{{else}}
|
||||
<div id="playAreaYoutube">
|
||||
<div id="buttons">
|
||||
<label> <input id="query" value='cats' type="text"/><button id="search-button" {{action "search"}}>Search</button></label>
|
||||
</div>
|
||||
<div id="search-container">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#if usingMicSupported}}
|
||||
<span data-toggle="tooltip" data-placement="bottom auto" class="bootstrapTooltip"
|
||||
data-title="Listen to audio through mic" {{action "useMicAudio"}}>{{paper-icon icon=micIcon class=usingMicAudioClass}}</span>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
{{#if usingMicAudio}}
|
||||
<div id="playAreaMic">
|
||||
{{paper-icon icon="mic"}}
|
||||
</div>
|
||||
{{else}}
|
||||
{{#if usingLocalAudio}}
|
||||
<div id="playListArea"
|
||||
class={{playListAreaClass}} {{action "playListAreaAddAudio"}} {{action "playListAreaDragOver" on="dragOver"}} {{action "playListAreaDragLeave" on="dragLeave"}} {{action "dropFiles" on="drop"}}>
|
||||
{{#if (or playQueueEmpty dragging)}}
|
||||
<div id="dragHere">
|
||||
{{#if dragging}}
|
||||
Drag your music files here
|
||||
{{else}}
|
||||
Add your music files here
|
||||
{{/if}}
|
||||
</div>
|
||||
{{paper-icon icon="library-music"}}
|
||||
{{/if}}
|
||||
|
||||
{{#each playQueue as |item index|}}
|
||||
<div
|
||||
class="playlistItem cursorPointer {{if (eq index playQueuePointer) "active"}} {{if dragging "hidden"}}" {{action "goToSong" index true bubbles=false}}>
|
||||
{{#if item.title}}
|
||||
{{item.title}}
|
||||
<div class="songArtist">{{item.artist}}</div>
|
||||
{{else}}
|
||||
{{item.filename}}
|
||||
{{/if}}
|
||||
<div data-toggle="tooltip" data-placement="bottom auto" data-title="Remove from playlist"
|
||||
class="audioRemoveButton cursorPointer bootstrapTooltip" {{action "removeAudio" index bubbles=false}}>{{paper-icon icon="close"}}</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="slideToggle" class="text-center cursorPointer row" {{action "slideTogglePlayerBottom"}}>
|
||||
<div class="col-xs-offset-3 col-xs-3 zIndexTwo">
|
||||
{{fa-icon beatDetectionArrowIcon}}
|
||||
</div>
|
||||
<div class="col-xs-3 zIndexTwo">
|
||||
{{fa-icon beatDetectionArrowIcon}}
|
||||
</div>
|
||||
<div class="col-xs-offset-5 col-xs-2">
|
||||
{{paper-icon icon=beatDetectionArrowIcon}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{#if playerBottomDisplayed}}
|
||||
<div id="playerBottom" class="row">
|
||||
<div id="beatArea" class="col-lg-8 col-xs-12">
|
||||
<div class="row">
|
||||
<div class="beatOption col-xs-3">
|
||||
<div class="text-center">{{threshold}}</div>
|
||||
{{range-slider start=threshold orientation="vertical" step=beatOptions.threshold.step range=beatOptions.threshold.range slide="thresholdChanged" pips=beatOptions.threshold.pips}}
|
||||
<span data-toggle="tooltip" data-placement="bottom auto"
|
||||
data-title="Maximum intensity of the sound that may be registered as a beat"
|
||||
class="optionDescription bootstrapTooltip">Max. Intensity</span>
|
||||
</div>
|
||||
|
||||
<div class="beatOption col-xs-3">
|
||||
<div class="text-center">{{decay}}</div>
|
||||
{{range-slider start=decay orientation="vertical" step=beatOptions.decay.step range=beatOptions.decay.range slide="decayChanged" pips=beatOptions.decay.pips}}
|
||||
<span data-toggle="tooltip" data-placement="bottom auto"
|
||||
data-title="The rate at which the previously registered beat's intensity is reduced to find the next beat"
|
||||
class="optionDescription bootstrapTooltip">Decay Rate</span>
|
||||
</div>
|
||||
|
||||
<div class="beatOption col-xs-3">
|
||||
<div class="text-center">[{{#each frequency as |item index|}}{{item}}{{#unless index}}
|
||||
,{{/unless}}{{/each}}
|
||||
]
|
||||
</div>
|
||||
{{range-slider start=frequency orientation="vertical" step=beatOptions.frequency.step range=beatOptions.frequency.range connect=true slide="frequencyChanged" pips=beatOptions.frequency.pips}}
|
||||
<span data-toggle="tooltip" data-placement="bottom auto"
|
||||
data-title="The frequency range of sound to listen on for the beat"
|
||||
class="optionDescription bootstrapTooltip">Frequency Range</span>
|
||||
</div>
|
||||
|
||||
<div class="beatOption col-xs-3">
|
||||
<div class="text-center">{{transitionTime}} sec</div>
|
||||
{{range-slider start=transitionTime orientation="vertical" step=beatOptions.transitionTime.step range=beatOptions.transitionTime.range slide="transitionTimeChanged" pips=beatOptions.transitionTime.pips}}
|
||||
<span data-toggle="tooltip" data-placement="bottom auto"
|
||||
data-title="The time it takes for a light to change color or brightness"
|
||||
class="optionDescription bootstrapTooltip">Transition Time</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="beatOptionButtonGroup" class="row">
|
||||
<div class="beatOption col-xs-6">
|
||||
{{#paper-switch checked=randomTransition disabled=trial}}<span data-toggle="tooltip"
|
||||
data-placement="bottom auto"
|
||||
data-title="The transition order of lights on beat"
|
||||
class="optionDescription bootstrapTooltip">{{randomTransitionLabel}}</span>{{/paper-switch}}
|
||||
</div>
|
||||
<div class="beatOption col-xs-6">
|
||||
{{#paper-switch checked=onBeatBriAndColor disabled=trial}}<span data-toggle="tooltip"
|
||||
data-placement="bottom auto"
|
||||
data-title="The properties of the lights to change on beat"
|
||||
class="optionDescription bootstrapTooltip"> {{onBeatBriAndColorLabel}}</span>{{/paper-switch}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="playerButtonGroup" class="row">
|
||||
{{#paper-button raised=true warn=true action="defaultControls"}}Default{{/paper-button}}
|
||||
{{#if usingLocalAudio}}
|
||||
{{#paper-button raised=true action="saveSongSettings"}}Save Song Settings{{/paper-button}}
|
||||
{{/if}}
|
||||
</div>
|
||||
<div id="playerBottom" class="row">
|
||||
<div id="beatArea" class="col-lg-8 col-xs-12">
|
||||
<div class="row">
|
||||
<div class="beatOption col-xs-3">
|
||||
<div class="text-center">{{threshold}}</div>
|
||||
{{range-slider start=threshold orientation="vertical" step=beatOptions.threshold.step range=beatOptions.threshold.range slide="thresholdChanged" pips=beatOptions.threshold.pips}}
|
||||
<span data-toggle="tooltip" data-placement="bottom auto"
|
||||
data-title="Maximum intensity of the sound that may be registered as a beat"
|
||||
class="optionDescription bootstrapTooltip">Max. Intensity</span>
|
||||
</div>
|
||||
|
||||
<div id="beatContainer" class="col-lg-4 col-xs-12">
|
||||
{{#if speakerViewed}}
|
||||
<div class="bezel">
|
||||
<div class="rivet2"></div>
|
||||
<div class="rivet3"></div>
|
||||
<div class="rivet4"></div>
|
||||
<div class="rivet5"></div>
|
||||
<div class="rivet6"></div>
|
||||
<div class="rivet7"></div>
|
||||
<div class="rivet8"></div>
|
||||
|
||||
<div id="beatSpeakerCenterOuter">
|
||||
<div id="beatSpeakerCenterInner" class="cursorPointer" {{action "clickSpeaker"}}>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<div id="beatHistory">
|
||||
{{#each beatHistory as |item|}}
|
||||
<p>{{{item}}}</p>
|
||||
{{/each}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#paper-switch checked=speakerViewed}} {{speakerLabel}} {{/paper-switch}}
|
||||
<div class="beatOption col-xs-3">
|
||||
<div class="text-center">{{decay}}</div>
|
||||
{{range-slider start=decay orientation="vertical" step=beatOptions.decay.step range=beatOptions.decay.range slide="decayChanged" pips=beatOptions.decay.pips}}
|
||||
<span data-toggle="tooltip" data-placement="bottom auto"
|
||||
data-title="The rate at which the previously registered beat's intensity is reduced to find the next beat"
|
||||
class="optionDescription bootstrapTooltip">Decay Rate</span>
|
||||
</div>
|
||||
|
||||
<div class="beatOption col-xs-3">
|
||||
<div class="text-center">[{{#each frequency as |item index|}}{{item}}{{#unless index}}
|
||||
,{{/unless}}{{/each}}
|
||||
]
|
||||
</div>
|
||||
{{range-slider start=frequency orientation="vertical" step=beatOptions.frequency.step range=beatOptions.frequency.range connect=true slide="frequencyChanged" pips=beatOptions.frequency.pips}}
|
||||
<span data-toggle="tooltip" data-placement="bottom auto"
|
||||
data-title="The frequency range of sound to listen on for the beat"
|
||||
class="optionDescription bootstrapTooltip">Frequency Range</span>
|
||||
</div>
|
||||
|
||||
<div class="beatOption col-xs-3">
|
||||
<div class="text-center">{{transitionTime}} sec</div>
|
||||
{{range-slider start=transitionTime orientation="vertical" step=beatOptions.transitionTime.step range=beatOptions.transitionTime.range slide="transitionTimeChanged" pips=beatOptions.transitionTime.pips}}
|
||||
<span data-toggle="tooltip" data-placement="bottom auto"
|
||||
data-title="The time it takes for a light to change color or brightness"
|
||||
class="optionDescription bootstrapTooltip">Transition Time</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="beatOptionButtonGroup" class="row">
|
||||
<div class="beatOption col-xs-6">
|
||||
{{#paper-switch checked=randomTransition disabled=trial}}<span data-toggle="tooltip"
|
||||
data-placement="bottom auto"
|
||||
data-title="The transition order of lights on beat"
|
||||
class="optionDescription bootstrapTooltip">{{randomTransitionLabel}}</span>{{/paper-switch}}
|
||||
</div>
|
||||
<div class="beatOption col-xs-6">
|
||||
{{#paper-switch checked=onBeatBriAndColor disabled=trial}}<span data-toggle="tooltip"
|
||||
data-placement="bottom auto"
|
||||
data-title="The properties of the lights to change on beat"
|
||||
class="optionDescription bootstrapTooltip"> {{onBeatBriAndColorLabel}}</span>{{/paper-switch}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="playerButtonGroup" class="row">
|
||||
{{#paper-button raised=true warn=true action="defaultControls"}}Default{{/paper-button}}
|
||||
{{#if usingLocalAudio}}
|
||||
{{#paper-button raised=true action="saveSongSettings"}}Save Song Settings{{/paper-button}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="beatContainer" class="col-lg-4 col-xs-12">
|
||||
{{#if speakerViewed}}
|
||||
<div class="bezel">
|
||||
<div class="rivet2"></div>
|
||||
<div class="rivet3"></div>
|
||||
<div class="rivet4"></div>
|
||||
<div class="rivet5"></div>
|
||||
<div class="rivet6"></div>
|
||||
<div class="rivet7"></div>
|
||||
<div class="rivet8"></div>
|
||||
|
||||
<div id="beatSpeakerCenterOuter">
|
||||
<div id="beatSpeakerCenterInner" class="cursorPointer" {{action "clickSpeaker"}}>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<div id="beatHistory">
|
||||
{{#each beatHistory as |item|}}
|
||||
<p>{{{item}}}</p>
|
||||
{{/each}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#paper-switch checked=speakerViewed}} {{speakerLabel}} {{/paper-switch}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{ember-notify closeAfter=5000}}
|
||||
<div id="dimmer" class="{{if playing "show"}}"></div>
|
||||
<!--<div id="dimmer" class="{{if playing "show"}}"></div>-->
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
@import 'ember-paper';
|
||||
@import 'bower_components/bootstrap-sass/assets/stylesheets/_bootstrap';
|
||||
@import "bower_components/font-awesome/scss/font-awesome";
|
||||
@import 'ember-modal-dialog/ember-modal-structure';
|
||||
@import 'ember-modal-dialog/ember-modal-appearance';
|
||||
|
||||
|
|
@ -147,6 +146,7 @@ md-progress-linear {
|
|||
}
|
||||
|
||||
.bootstrapTooltip md-icon {
|
||||
font-size: 22px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
|
@ -401,21 +401,11 @@ md-toolbar {
|
|||
padding: 0;
|
||||
}
|
||||
|
||||
.zIndexTwo {
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.#{$fa-css-prefix}-youtubeWorkaround:before {
|
||||
content: $fa-var-youtube-play;
|
||||
font-size: 22px;
|
||||
}
|
||||
|
||||
#slideToggle {
|
||||
color: $playerDefaultIconColor;
|
||||
background: #8C3E3E;
|
||||
z-index: 2;
|
||||
div i {
|
||||
font-size: 25px;
|
||||
div md-icon {
|
||||
color: inherit !important;
|
||||
}
|
||||
}
|
||||
|
|
@ -451,6 +441,12 @@ md-switch.md-default-theme.md-checked .md-thumb {
|
|||
}
|
||||
}
|
||||
|
||||
.pull-right.bootstrapTooltip {
|
||||
.playerControllIcon {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
#playerTimeControls {
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
font-size: 14px;
|
||||
|
|
@ -461,15 +457,9 @@ md-switch.md-default-theme.md-checked .md-thumb {
|
|||
}
|
||||
|
||||
.playerControllIcon {
|
||||
cursor: pointer;
|
||||
color: $playerDefaultIconColor !important;
|
||||
transition-duration: 0.1s;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
i.playerControllIcon {
|
||||
font-size: 20px;
|
||||
margin-right: 12px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.playerControllIcon.active {
|
||||
|
|
@ -520,8 +510,7 @@ i.playerControllIcon {
|
|||
#playlist {
|
||||
height: $playerHeight;
|
||||
background-color: $playListBackgroundColor;
|
||||
padding-left: 0.625em;
|
||||
padding-right: 0.625em;
|
||||
padding: 0 5px 0 5px;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
|
|
@ -596,16 +585,15 @@ i.playerControllIcon {
|
|||
}
|
||||
|
||||
#playListControls {
|
||||
min-height: 35px;
|
||||
margin-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
min-height: 30px;
|
||||
margin-top: 5px;
|
||||
border-bottom: 1px solid #3a3a3a;
|
||||
}
|
||||
|
||||
#playListArea, #playAreaMic, #playAreaYoutube {
|
||||
background-color: white;
|
||||
width: 100%;
|
||||
height: 333px;
|
||||
height: 350px;
|
||||
margin: 10px auto 0 auto;
|
||||
border-radius: 5px;
|
||||
transition: 0.1s all ease-in-out;
|
||||
|
|
@ -752,11 +740,12 @@ i.playerControllIcon {
|
|||
}
|
||||
|
||||
#beatHistory {
|
||||
border: 1px solid #C5C5C5;
|
||||
color: black;
|
||||
height: 300px;
|
||||
background-color: white;
|
||||
border-radius: 10px;
|
||||
width: 90%;
|
||||
width: 285px;
|
||||
margin: 0 auto 20px auto;
|
||||
overflow: auto;
|
||||
padding: 10px;
|
||||
|
|
|
|||
|
|
@ -18,13 +18,10 @@
|
|||
"matchMedia": "~0.2.0",
|
||||
"nouislider": "^8.0.1",
|
||||
"qunit": "~1.18.0",
|
||||
"three.js": "~0.71.0",
|
||||
"font-awesome": "~4.4.0"
|
||||
"three.js": "~0.71.0"
|
||||
},
|
||||
"resolutions": {
|
||||
"ember": "~2.0.2",
|
||||
"jquery": "~2.1.4",
|
||||
"ember-qunit": "0.4.9",
|
||||
"qunit": "~1.18.0"
|
||||
"jquery": "~2.1.4"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@
|
|||
"ember-cli-babel": "^5.0.0",
|
||||
"ember-cli-content-security-policy": "0.4.0",
|
||||
"ember-cli-dependency-checker": "^1.0.0",
|
||||
"ember-cli-font-awesome": "0.1.1",
|
||||
"ember-cli-htmlbars": "1.0.0",
|
||||
"ember-cli-htmlbars-inline-precompile": "^0.3.0",
|
||||
"ember-cli-ic-ajax": "0.2.1",
|
||||
|
|
|
|||
Reference in a new issue