Guest User

Untitled

a guest
Dec 18th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.13 KB | None | 0 0
  1. <!doctype html>
  2.  
  3. <html lang="en">
  4. <head>
  5. <meta charset="utf-8">
  6.  
  7. <title>Fretboard App</title>
  8. <meta name="description" content="Fretboard App">
  9. <meta name="author" content="Frank Ford">
  10.  
  11. <link rel="stylesheet" type="text/css" href="css/styles.css">
  12.  
  13. <!-- Import jQuery -->
  14. <script src="js/jquery-3.3.1.min.js"></script>
  15. <!-- Import Tonal Library -->
  16. <script src="js/tonal.min.js"></script>
  17. <!-- Import d3 -->
  18. <script src="js/d3.min.js"></script>
  19.  
  20. <link rel="stylesheet" type="text/css" href="css/fretboard.css"/>
  21. <script src="js/fretboard.js"></script>
  22.  
  23. </head>
  24.  
  25. <body>
  26.  
  27. <script>
  28. /*console.log(Tunings);*/
  29. // Fretboard.drawAll('.fb-container');
  30. </script>
  31. <!-- Selector Interface -->
  32. <div class="control-panel">
  33. <label for="selectRoot">Root Note:</label>
  34. <select id="selectRoot">
  35. <option>Choose a Root Note</option>
  36. </select>
  37.  
  38. <label for="selectChord">Chord:</label>
  39. <select id="selectChord" disabled>
  40. <option>Choose a Chord Type</option>
  41. </select>
  42.  
  43. <label for="selectScale">Scale:</label>
  44. <select id="selectScale" disabled>
  45. <option>Choose a Scale Type</option>
  46. </select>
  47.  
  48. <label for="selectTuning">Tuning:</label>
  49. <select id="selectTuning">
  50. <option>Choose a Instrument Type</option>
  51. </select>
  52. </div>
  53.  
  54.  
  55.  
  56. <script>
  57.  
  58. /*var roots = ["A", "A#", "B", "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#"];*/
  59. var roots = allNotes; // From fretboard.js
  60. var fb = Fretboard();
  61. // Get Selected Chord/Scale info from API
  62. function getMusicData(mysel){
  63.  
  64. var iroot = $("#selectRoot option:selected").val();
  65. var ichord = $("#selectChord option:selected").val();
  66. var iscale = $("#selectScale option:selected").val();
  67. var myout = [];
  68. switch(mysel){
  69. case 'r':
  70. myout = iroot.split(' ');
  71. break;
  72. case 'c':
  73. myout = Tonal.Chord.notes(iroot, ichord);
  74. break;
  75. case 's':
  76. myout = Tonal.Scale.notes(iroot, iscale);
  77. }
  78. var finseq = myout.join(' ');
  79. fb.clearNotes();
  80. fb.clearNoteText();
  81. fb.draw(finseq);
  82. /*console.log('output: '+finseq);*/
  83. }
  84.  
  85. // Get Selected Tuning info from fretboard.js
  86. function retuneFretboard(){
  87. var itune = $("#selectTuning option:selected");
  88. var item = itune.text();
  89. var group = itune.parent().attr('label');
  90. var mytune = 'Tunings.' + group + '.' + item;
  91. fb.delete();
  92.  
  93. // for enumerable properties
  94. var props = Object.keys(fb);
  95. for (var i = 0; i < props.length; i++) {
  96. delete fb[props[i]];
  97. };
  98. console.log("cleared values");
  99. console.log(fb);
  100. retuneFretBoard(mytune);
  101. //var fb = Fretboard({tuning: Tunings.Guitar.Drop_D});
  102. //fb.draw('');
  103. //console.log('Selected: ' + mytune);
  104. }
  105.  
  106. // Setup Root Note Dropdown
  107. $.each(roots, function(i, p) {
  108. $('#selectRoot').append($('<option></option>').val(p).html(p));
  109. });
  110.  
  111. // Setup Chord Dropdown
  112. var chords = Tonal.Chord.names();
  113. $.each(chords, function(i, p) {
  114. $('#selectChord').append($('<option></option>').val(p).html(p));
  115. });
  116.  
  117. // Setup Scale Dropdown
  118. var scales = Tonal.Scale.names();
  119. $.each(scales, function(i, p) {
  120. $('#selectScale').append($('<option></option>').val(p).html(p));
  121. });
  122.  
  123. // Setup Tuning Dropdown
  124. var tunings = Tunings;
  125. var tuningselect = $('#selectTuning');
  126.  
  127. $.each(tunings, function(key, value){
  128. var group = $('<optgroup label="' + key + '" />');
  129. $.each(value, function(i,p){
  130. $('<option />').html(i).appendTo(group);
  131. });
  132. group.appendTo(tuningselect);
  133. });
  134.  
  135. // Enable Chord & Scale Dropdowns when a root is selected
  136. $("#selectRoot").change(function() {
  137. $("#selectChord").prop('disabled', false).prop('selectedIndex',0);
  138. $("#selectScale").prop('disabled', false).prop('selectedIndex',0);
  139. getMusicData('r');
  140. });
  141.  
  142. // Disable Chord or Scale Dropdown when one is selected
  143. $("#selectChord").change(function() {
  144. $('#selectScale').prop('selectedIndex',0);
  145. getMusicData('c');
  146. });
  147.  
  148. $("#selectScale").change(function() {
  149. $('#selectChord').prop('selectedIndex',0);
  150. getMusicData('s');
  151. });
  152.  
  153. // Change the Instrument Tuning
  154. $("#selectTuning").change(function() {
  155. $("#selectRoot").prop('selectedIndex',0);
  156. $("#selectChord").prop('disabled', true).prop('selectedIndex',0);
  157. $("#selectScale").prop('disabled', true).prop('selectedIndex',0);
  158. retuneFretboard();
  159. });
  160.  
  161. </script>
  162. </body>
  163. </html>
Add Comment
Please, Sign In to add comment