index.html 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393
  1. <!DOCTYPE html>
  2. <head>
  3. <meta charset="utf-8">
  4. <meta http-equiv="x-ua-compatible" content="ie=edge">
  5. <meta name="viewport" content="width=device-width, initial-scale=1">
  6. <title>Daveo Radio</title>
  7. <meta name="description" content="">
  8. <link rel="stylesheet" href="css/style.min.css">
  9. </head>
  10. <body>
  11. <header>
  12. <div class="container">
  13. <div class="intro-text">
  14. </div>
  15. </div>
  16. </header>
  17. <div class="outer-container">
  18. <div class="container">
  19. <div class="row">
  20. <div class="col-sm-6">
  21. <section id="audio" class="bg-light-gray">
  22. <!-- START Player -->
  23. <div id="audio_player" class="panel panel-default">
  24. <div class="panel-body">
  25. <div id="player">
  26. <div id="song-information">
  27. <div class="row">
  28. <div class="col-xs-8">
  29. <img id="radio" src="" title="radio" width="25px" style="float:left;margin-right:15px;">
  30. <span id="amplitude-now-playing-listeners">Listeners: <span id="listeners">00</span> - Peak: <span id="peak-listeners">00</span></span><br>
  31. <span id="amplitude-now-playing-bitrate">Bitrate: <span id="bitrate">00</span> Kbps 44.100 Khz</span>
  32. </div>
  33. <div class="col-xs-4">
  34. </div>
  35. </div>
  36. </div>
  37. <div id="controls">
  38. <div id="amplitude-play-pause" class="amplitude-paused"></div>
  39. <br />
  40. <div class="row">
  41. <!--<meter name="volume" value="9" min="0" max="10" low="0" high="10"></meter>-->
  42. <span class="glyphicon glyphicon-volume-off" aria-hidden="true" style="float:left;margin: -6px 0 0 20px;font-size:20px"></span>
  43. <input type="range" class="bar" name="volume" id="amplitude-volume-slider" min=1 max=100 value=80>
  44. <span class="glyphicon glyphicon-volume-up" aria-hidden="true" style="float:right;margin:-15px 20px 0 0;font-size:20px"></span>
  45. </div>
  46. </div>
  47. </div>
  48. <div class="well current-track">
  49. <h6 style="margin:0;"><img id="eq" src="" title="eq" style="float:left;margin:3px 10px 0 7px;"> <span id="amplitude-now-playing-name">Current track: <span id="track">* Off Air *</span></span><span id="amplitude-current-time">0:00</span></h6>
  50. </div>
  51. </div>
  52. <!-- END Player -->
  53. <!-- START Playlist -->
  54. <div class="tabs-below">
  55. <div class="tab-content scrollable-list">
  56. <div class="tab-pane active" id="one">
  57. <ul class="list-group">
  58. <div class="recent"></div>
  59. </ul>
  60. </div>
  61. <div class="tab-pane" id="two">
  62. <ul class="list-group">
  63. <div class="tracks"></div>
  64. </ul>
  65. </div>
  66. <div class="tab-pane" id="three">
  67. <ul class="list-group">
  68. <div class="artists"></div>
  69. </ul>
  70. </div>
  71. <div class="tab-pane" id="four">
  72. <ul class="list-group">
  73. <li class="list-group-item list-group-item-info"><b>Dec 12th 2-4pm</b>: Example Show</li>
  74. <li class="list-group-item"><b>Dec 13th 2-4pm</b>: Guest Show</li>
  75. <li class="list-group-item list-group-item-success"><b>Dec 14th 8-10am</b>: Daveo Radio</li>
  76. <li class="list-group-item list-group-item-success"><b>2-4pm</b>: Daveo Radio</li>
  77. <li class="list-group-item"><b>Dec 22th 2-4pm</b>: Daveo Radio</li>
  78. <li class="list-group-item list-group-item-warning"><b>Dec 23th 2-4pm</b>: Something Else</li>
  79. <li class="list-group-item list-group-item-danger"><b>Dec 24-28th</b>: Example</li>
  80. <li class="list-group-item"><b>Dec 31st 8-12pm</b>: Guest Person</li>
  81. <li class="list-group-item list-group-item-info"><b>Jan 4th 10am</b>: Example Show</li>
  82. <li class="list-group-item list-group-item-info"><b>2-4pm</b>: Something Show</li>
  83. </ul>
  84. </div>
  85. </div>
  86. <ul class="nav nav-tabs scrollable-list-footer">
  87. <li class="active"><a href="#one" data-toggle="tab" data-original-title="Recent" data-placement="top"><span class="glyphicon glyphicon-headphones" aria-hidden="true"></span></a></li>
  88. <li><a href="#two" data-toggle="tab" data-original-title="Tracks" data-placement="top"><span class="glyphicon glyphicon-fire" aria-hidden="true"></span></a></li>
  89. <li><a href="#three" data-toggle="tab" data-original-title="Artist" data-placement="top"><span class="glyphicon glyphicon-user" aria-hidden="true"></span></a></li>
  90. <li><a href="#four" data-toggle="tab" data-original-title="Calendar" data-placement="top"><span class="glyphicon glyphicon-time" aria-hidden="true"></span></a></li>
  91. </ul>
  92. </div>
  93. <!-- END Playlist -->
  94. </div>
  95. </section>
  96. </div>
  97. <!-- START Connect -->
  98. <div class="col-sm-6">
  99. <section id="request-line" class="bg-light-gray">
  100. <div class="panel panel-default">
  101. <!-- START Room Tabs -->
  102. <div class="row-fluid">
  103. <ul id="rooms_tabs" class="nav nav-tabs">
  104. <li class="dropdown">
  105. <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-original-title="Options" data-placement="bottom"><span class="glyphicon glyphicon-th" aria-hidden="true"></span>&nbsp;<b class="caret"></b></a>
  106. <ul class="dropdown-menu">
  107. <li><a href="#modal_joinroom" data-toggle="modal"><span class="glyphicon glyphicon-plus-sign" aria-hidden="true"></span>&nbsp;Join room</a></li>
  108. <li><a id="b_leave_room" href="#"><span class="glyphicon glyphicon-minus-sign" aria-hidden="true"></span>&nbsp;Leave room</a></li>
  109. <li class="divider"></li>
  110. <li><a href="#modal_setnick" data-toggle="modal"><span class="glyphicon glyphicon-user" aria-hidden="true"></span>&nbsp;Set nickname</a></li>
  111. </ul>
  112. </li>
  113. <li id="Lobby_tab" class="active"><a href="#Lobby" data-toggle="tab" data-original-title="Chat" data-placement="bottom"><span class="glyphicon glyphicon-comment" aria-hidden="true"></span><span class="hidden-tab">Lobby</span></a></li>
  114. <li><a href="#call" data-toggle="tab" data-original-title="Phone" data-placement="bottom"><span class="glyphicon glyphicon-phone-alt" aria-hidden="true"></span></a></li>
  115. <li><a href="#video" data-toggle="tab" data-original-title="Video" data-placement="bottom"><span class="glyphicon glyphicon-facetime-video" aria-hidden="true"></span></a></li>
  116. </ul>
  117. </div>
  118. <!-- END Room Tabs -->
  119. <!-- START Rooms -->
  120. <div id="rooms" class="tab-content">
  121. <div class="tab-pane active" id="Lobby">
  122. <div class="well">
  123. <div class="row-fluid">
  124. <div id="room_messages" style="min-height:220px; max-height:220px; overflow:auto;">
  125. <span class="label label-danger">Radio-bot</span>&nbsp;&nbsp;Welcome to the Daveo Radio!<br/>
  126. </div>
  127. </div>
  128. <div class="row-fluid">
  129. <div id="room_users">
  130. <span class="label label-success">online:</span> <span class="label label-danger">Radio-bot</span>
  131. </div>
  132. </div>
  133. </div>
  134. <!-- START message -->
  135. <div class="panel-footer">
  136. <div class="row-fluid">
  137. <form class="form">
  138. <div class="input-group">
  139. <input id="message_text" class="form-control" type="text" placeholder="What say you?" >
  140. <span class="input-group-btn">
  141. <button id="b_send_message" class="btn btn-primary"><span class="glyphicon glyphicon-bullhorn" aria-hidden="true"></span> Post</button>
  142. </span>
  143. </div>
  144. </form>
  145. <!--<button id="set_nick" class="btn btn-success" data-toggle="modal" data-target="#modal_setnick"><span class="glyphicon glyphicon-user" aria-hidden="true"></span> Set Nick</button>-->
  146. </div>
  147. </div>
  148. <!-- END message -->
  149. </div>
  150. <!-- START Call -->
  151. <div class="tab-pane" id="call">
  152. <div id="audio">
  153. <div class="well">
  154. <p><span class="label label-primary">Local audio:</span></p>
  155. <audio id="audio1" autoplay controls muted></audio>
  156. <p><span class="label label-primary">Remote audio:</span></p>
  157. <audio id="audio2" autoplay controls></audio>
  158. </div>
  159. <div class="panel-footer">
  160. <div id="buttons">
  161. <button id="callButton" class="btn btn-success">Call</button>
  162. <button id="hangupButton" class="btn btn-danger">Hang Up</button>
  163. <select id="codec" class="selectpicker" data-style="btn-primary">
  164. <!-- Codec values are matched with how they appear in the SDP.
  165. For instance, opus matches opus/48000/2 in Chrome, and ISAC/16000
  166. matches 16K iSAC (but not 32K iSAC). -->
  167. <option value="opus">Opus</option>
  168. <option value="ISAC">iSAC 16K</option>
  169. <option value="G722">G722</option>
  170. <option value="PCMU">PCMU</option>
  171. </select>
  172. </div>
  173. </div>
  174. </div>
  175. </div>
  176. <!-- END Call -->
  177. <!-- START Video -->
  178. <div class="tab-pane" id="video">
  179. <div id="video">
  180. <div class="well">
  181. <video id="localVideo" autoplay muted></video>
  182. <video id="remoteVideo" autoplay></video>
  183. </div>
  184. <div class="panel-footer">
  185. <button id="startButton" class="btn btn-success">Start</button>
  186. <button id="callButton" class="btn btn-primary">Call</button>
  187. <button id="hangupButton" class="btn btn-danger">Hang Up</button>
  188. </div>
  189. <div>
  190. </div>
  191. <!-- END Video -->
  192. </div>
  193. <!-- END Rooms -->
  194. </div>
  195. <!-- START Modal -->
  196. <div id="modal_joinroom" class="modal fade">
  197. <div class="vertical-alignment-helper">
  198. <div class="modal-dialog modal-sm vertical-align-center">
  199. <div class="modal-content">
  200. <div class="modal-header">
  201. <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  202. <h3>Join Room</h3>
  203. </div>
  204. <div class="modal-body">
  205. <input id="room_name" type="text" class="form-control" placeholder="Room Name">
  206. <p><small>&nbsp;Room will be created if it doesn't exist</small></p>
  207. </div>
  208. <div class="modal-footer">
  209. <a id="b_join_room" href="#" class="btn btn-success">Join Room</a>
  210. </div>
  211. </div>
  212. </div>
  213. </div>
  214. </div>
  215. <div id="modal_setnick" class="modal fade">
  216. <div class="vertical-alignment-helper">
  217. <div class="modal-dialog modal-sm vertical-align-center">
  218. <div class="modal-content">
  219. <div class="modal-header">
  220. <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  221. <h3>Set a Nickname</h3>
  222. </div>
  223. <div class="modal-body">
  224. <input id="nickname" type="text" class="form-control" placeholder="Type your nickname here">
  225. </div>
  226. <div class="modal-footer">
  227. <a id="b_set_nickname" href="#" class="btn btn-success">Set a Nickname</a>
  228. </div>
  229. </div>
  230. </div>
  231. </div>
  232. </div>
  233. <!-- End Modal -->
  234. </section>
  235. </div>
  236. <!-- End Connect -->
  237. </div>
  238. </div>
  239. </div>
  240. <!-- START Footer NAV -->
  241. <div class="container">
  242. <div class="col-sm-12">
  243. <div class="row">
  244. <div class="panel panel-bottom">
  245. <ul class="nav navbar-nav">
  246. <li><a href="#connected" data-toggle="modal" data-target="#connected"><span class="glyphicon glyphicon-globe" aria-hidden="true"></span>&nbsp;Listeners</a></li>
  247. <li><a href="#charts" data-toggle="modal" data-target="#charts"><span class="glyphicon glyphicon-stats" aria-hidden="true"></span>&nbsp;Charts</a></li>
  248. </ul>
  249. <ul class="nav navbar-nav navbar-right">
  250. <li><a href="#about" data-toggle="modal" data-target="#about"><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>&nbsp;About</a></li>
  251. <li><a href="#help" data-toggle="modal" data-target="#help"><span class="glyphicon glyphicon-question-sign" aria-hidden="true"></span>&nbsp;Help</a></li>
  252. <li><a href="#support" data-toggle="modal" data-target="#support"><span class="glyphicon glyphicon-heart-empty" aria-hidden="true"></span>&nbsp;Support</a></li>
  253. </ul>
  254. </div>
  255. </div>
  256. </div>
  257. </div>
  258. <!-- END Footer NAV -->
  259. <!-- START Listeners Modal -->
  260. <div class="modal fade" id="connected" tabindex="-1" role="dialog" aria-labelledby="connected" aria-hidden="true">
  261. <div class="modal-dialog modal-lg" role="document">
  262. <div class="modal-content">
  263. <div class="modal-body">
  264. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  265. <div class="listeners">
  266. </div>
  267. </div>
  268. </div>
  269. </div>
  270. </div>
  271. <!-- END Listerners Modal -->
  272. <!-- START Charts Modal -->
  273. <div class="modal fade" id="charts" tabindex="-1" role="dialog" aria-labelledby="charts" aria-hidden="true">
  274. <div class="modal-dialog modal-lg" role="document">
  275. <div class="modal-content">
  276. <div class="modal-body">
  277. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  278. <div class="chart">
  279. </div>
  280. </div>
  281. </div>
  282. </div>
  283. </div>
  284. <!-- END Charts Modal -->
  285. <!-- START Info Modal -->
  286. <div class="modal fade" id="about" tabindex="-1" role="dialog" aria-labelledby="about" aria-hidden="true">
  287. <div class="modal-dialog" role="document">
  288. <div class="modal-content">
  289. <div class="modal-header">
  290. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  291. <h4 class="modal-title" id="about">About</h4>
  292. </div>
  293. <div class="modal-body">
  294. <p><b>Daveo Radio</b> is just a little place I can share and talk about some music with friends. I started toying around with different streaming servers and I am using an Icecast streaming media server I’ve set up. This page is powered by Linode, Node.js, Express, Socket.io, and Icecast-kh.</p> <p>I enjoy listening to music and I spent quite a bit of time doing so. I’ve gone entirely digital in recent years. I sold my collection of albums years ago and I donated my CD collection to a music student at Vanderbilt. I now have a collection of about 100,000 files that I keep on a networked hard drive. I do pay for ad-free streaming services, but I agree with artists who want a better revenue model from streaming. The analog/digital debate is null in my opinion. I use Polk in my living room and Klipsch in my office. In the car, I most often use playlists I’ve created and I rarely tune into a radio or satellite stations even though I have service. On occasion, at home I like to tune into terrestrial stations that stream to help find new music, but I’ve found almost all of the robot mixes from the big streaming providers unsatisfying.</p>
  295. </div>
  296. <div class="modal-footer">
  297. <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
  298. </div>
  299. </div>
  300. </div>
  301. </div>
  302. <!-- END Info Modal -->
  303. <!-- START Help Modal -->
  304. <div class="modal fade" id="help" tabindex="-1" role="dialog" aria-labelledby="help" aria-hidden="true">
  305. <div class="modal-dialog" role="document">
  306. <div class="modal-content">
  307. <div class="modal-header">
  308. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  309. <h4 class="modal-title" id="about">Help</h4>
  310. </div>
  311. <div class="modal-body">
  312. <p><b>Audio Streaming</b>: There are a number of ways you can listen to the audio stream. This page uses the HTML5 audio element to stream it to your computer or phone. You can also point your favorite media player to the stream at <a href="http://stream.davidawindham.com/stream">http://stream.davidawindham.com/</a>.</p>
  313. <p><b>Video Stream</b>: Older web browers will not support all of the features here. In order to use the video and call capabilities of this page, you'll need to use a modern web browser </p>
  314. </div>
  315. <div class="modal-footer">
  316. <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
  317. </div>
  318. </div>
  319. </div>
  320. </div>
  321. <!-- END Help Modal -->
  322. <!-- START Support Modal -->
  323. <div class="modal fade" id="support" tabindex="-1" role="dialog" aria-labelledby="support" aria-hidden="true">
  324. <div class="modal-dialog" role="document">
  325. <div class="modal-content">
  326. <div class="modal-header">
  327. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  328. <h4 class="modal-title" id="about">Support</h4>
  329. </div>
  330. <div class="modal-body">
  331. <p></p>
  332. </div>
  333. <div class="modal-footer">
  334. <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
  335. </div>
  336. </div>
  337. </div>
  338. </div>
  339. <!-- END Support Modal -->
  340. <footer class="site-footer">
  341. </footer>
  342. <script src="js/vendor.min.js"></script>
  343. <script src="/socket.io/socket.io.js"></script>
  344. <script src="js/radio.min.js"></script>
  345. <script src="js/webrtc-adapter.js"></script>
  346. <script src="js/webrtc-video.js"></script>
  347. <script>
  348. var _paq = _paq || [];
  349. _paq.push(['trackPageView']);
  350. _paq.push(['enableLinkTracking']);
  351. (function() {
  352. var u="//davidawindham.com/wik/";
  353. _paq.push(['setTrackerUrl', u+'piwik.php']);
  354. _paq.push(['setSiteId', 1]);
  355. var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
  356. g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
  357. })();
  358. </script>
  359. <noscript><p><img src="//davidawindham.com/wik/piwik.php?idsite=1" style="border:0;" alt="" /></p></noscript>
  360. </body>
  361. </html>