index.html 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Dawdlehorn - Gamepad DAW</title>
  7. <style>
  8. * {
  9. margin: 0;
  10. padding: 0;
  11. box-sizing: border-box;
  12. }
  13. body {
  14. font-family: 'Courier New', monospace;
  15. background: #1a1a1a;
  16. color: #00ff00;
  17. overflow: hidden;
  18. }
  19. .container {
  20. display: flex;
  21. flex-direction: column;
  22. height: 100vh;
  23. padding: 20px;
  24. }
  25. .header {
  26. text-align: center;
  27. margin-bottom: 20px;
  28. }
  29. .status {
  30. display: flex;
  31. justify-content: space-between;
  32. margin-bottom: 20px;
  33. padding: 10px;
  34. background: #2a2a2a;
  35. border-radius: 5px;
  36. }
  37. .gamepad-status {
  38. color: #ff6600;
  39. }
  40. .audio-status {
  41. color: #0066ff;
  42. }
  43. .controls {
  44. flex: 1;
  45. display: grid;
  46. grid-template-columns: 1fr 1fr;
  47. gap: 20px;
  48. }
  49. .synth-controls, .sequencer-controls {
  50. background: #2a2a2a;
  51. padding: 20px;
  52. border-radius: 10px;
  53. border: 2px solid #444;
  54. }
  55. .control-group {
  56. margin-bottom: 15px;
  57. }
  58. .control-label {
  59. display: block;
  60. margin-bottom: 5px;
  61. font-size: 12px;
  62. text-transform: uppercase;
  63. }
  64. .visualizer {
  65. height: 100px;
  66. background: #000;
  67. border: 1px solid #444;
  68. margin-top: 20px;
  69. }
  70. .instructions {
  71. position: absolute;
  72. bottom: 20px;
  73. left: 20px;
  74. font-size: 12px;
  75. color: #666;
  76. }
  77. </style>
  78. </head>
  79. <body>
  80. <div class="container">
  81. <div class="header">
  82. <h1>🎮 DAWDLEHORN 🎵</h1>
  83. <p>Gamepad-Controlled Digital Audio Workstation</p>
  84. </div>
  85. <div class="status">
  86. <div class="gamepad-status">
  87. Gamepad: <span id="gamepad-status">Not Connected</span>
  88. </div>
  89. <div class="audio-status">
  90. Audio: <span id="audio-status">Initializing...</span>
  91. </div>
  92. </div>
  93. <div class="controls">
  94. <div class="synth-controls">
  95. <h3>Synthesizer</h3>
  96. <div class="control-group">
  97. <label class="control-label">Frequency</label>
  98. <div id="freq-display">440 Hz</div>
  99. </div>
  100. <div class="control-group">
  101. <label class="control-label">Volume</label>
  102. <div id="volume-display">50%</div>
  103. </div>
  104. <div class="control-group">
  105. <label class="control-label">Filter</label>
  106. <div id="filter-display">1000 Hz</div>
  107. </div>
  108. </div>
  109. <div class="sequencer-controls">
  110. <h3>Gamepad Debug</h3>
  111. <div class="control-group">
  112. <label class="control-label">Left Stick</label>
  113. <div id="left-stick-display">0.00, 0.00</div>
  114. </div>
  115. <div class="control-group">
  116. <label class="control-label">Right Stick</label>
  117. <div id="right-stick-display">0.00, 0.00</div>
  118. </div>
  119. <div class="control-group">
  120. <label class="control-label">DPAD (Axis)</label>
  121. <div id="dpad-display">0.00</div>
  122. </div>
  123. <div class="control-group">
  124. <label class="control-label">Buttons</label>
  125. <div id="buttons-display">A B X Y</div>
  126. </div>
  127. <div class="control-group">
  128. <label class="control-label">Calibration (Raw Min/Max)</label>
  129. <div id="calibration-display" style="font-size: 10px; line-height: 1.2;">
  130. Move sticks to calibrate...
  131. </div>
  132. </div>
  133. </div>
  134. </div>
  135. <canvas id="visualizer" class="visualizer"></canvas>
  136. <div class="instructions">
  137. Connect a gamepad and press any button to start • Left stick: Frequency • Right stick: Filter • Face buttons: Notes
  138. </div>
  139. </div>
  140. <script type="module" src="src/index.js"></script>
  141. </body>
  142. </html>