Html程序  |  185行  |  6.63 KB

<!-- Copyright (c) 2014 The Chromium OS Authors. All rights reserved. -->
<!-- Use of this source code is governed by a BSD-style license that can be -->
<!-- found in the LICENSE file. -->

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Audio Quality Test</title>
    <script type="text/javascript" src="audio.js"></script>
    <script type="text/javascript" src="source.js"></script>
    <script type="text/javascript" src="recorder.js"></script>
    <script type="text/javascript" src="analysis.js"></script>
    <link rel="stylesheet" type="text/css" href="audio.css">
  </head>
  <body>
    <ul class="tab-page">
      <li id="play_tab" onclick="switchTab('play_tab')" class="selected"><a>Play</a></li>
      <li id="record_tab" onclick="switchTab('record_tab')"><a>Record</a></li>
    </ul>
    <div id="play_div">
      <h1>Audio Source</h1>
      <input type="radio" name="audio_source" value="sine"
          onclick="setupSourceLayer('sine')"> Sine Tone
      <input type="radio" name="audio_source" value="sweep"
          onclick="setupSourceLayer('sweep')" checked> Sweep Tone
      <input type="radio" name="audio_source" value="file"
          onclick="setupSourceLayer('file')"> Load from file
      <br>
      <br>
      <div id="source_layer" align="center">
        <div id="source_tone">
          <table style="width: 50%;">
            <tr>
              <td class="tonegen-main-cell">
                <table style="width: 100%;">
                  <tr>
                    <td width="50%">Frequency: (20 Hz ~ SampleRate / 2)</td>
                    <td width="30%">Duration</td>
                    <td class="sweep_tone">Log</td>
                  </tr>
                  <tr>
                    <td>
                      <input type="text" id="freq_start" size=5 maxlength=5 value=1000> Hz
                      <div class="sweep_tone">
                        <input type="text" id="freq_end" size=5 maxlength=5 value=1000> Hz
                      </div>
                    </td>
                    <td>
                      <input type="text" id="tone_sec" size=5 maxlength=5 value=3> Seconds
                    </td>
                    <td class="sweep_tone">
                      <input type="checkbox" id="sweep_log">
                    </td>
                  </tr>
                </table>
              </td>
              <td class="tonegen-vol-cell">
                <input type="range" min="0" max="20" value="20" id="left_gain"
                    onchange="gainChanged();"/>
                <input type="range" min="0" max="20" value="20" id="right_gain"
                    onchange="gainChanged();"/>
                <br>
                <div id="gain_label">
                  L(20) / R(20)
                </div>
              </td>
            </tr>
          </table>
        </div>
        <div id="source_file">
          <input type="button" value="Local Audio File" onclick="loadAudioFile()"
              style="font-size: large;">
          <br><br>
          <div style="display:none">
            <input type=file id=audio_file onchange="changeAudioFile()">
          </div>
        </div>
      </div>
      <hr>
      <input type="checkbox" id="append_tone" checked> Append 1K Hz start tone and end tone
      <br><br>
      <button id="play_audio" class="btn-off" onclick="playAudioFile()">
        <div>
          <span class="btn-off-text">Play</span>
          <span class="btn-on-text">Stop Play</span>
        </div>
      </button>
    </div>
    <div id="record_div" style="display: none;">
      <h1> Record Samples </h1>
      <input type="radio" name="record_source" value="audio_source"
          onclick="setupRecordSource('audio')">
      Play Audio Source
      <input type="radio" name="record_source" value="microphone" checked
          onclick="setupRecordSource('microphone')">
      Microphone
      <br><br>
      <input type="checkbox" id="detect_tone" checked> Detect 1K Hz start tone and end tone
      <input type="checkbox" id="auto_stop" checked> Auto stop when detected 1K Hz end tone
      <br><br>
      <button id="record_btn" class="btn-off" onclick="recordButtonClicked()">
        <div>
          <span class="btn-off-text">Start Record</span>
          <span class="btn-on-text">Stop Record</span>
        </div>
      </button>
      <br><hr>
      <table align="center">
        <tr>
          <td>
            <div style="overflow:auto; max-height: 250px;">
              <table id="record_list" align="center">
              </table>
            </div>
          </td>
        </tr>
      </table>

    </div>

    <h1> Frequency Response </h1>
    <table align="center">
      <tr>
        <td width=800>
          <div id="curve_section">
            <canvas id='fr_canvas' width=800 height=300>
          </div>
        </td>
        <td width=400 height=300 class="canvas_detail">
          <div id="curve_list" style="overflow:auto; max-height:300px;">
            <table id="curve_table" width=100% height=100%>
              <tr>
                <td colspan=1>
                  <input type="button" value="Load File" onClick="loadButtonClicked();">
                  <div style="display:none">
                    <input type=file id=sample_file onchange="loadSampleFile()">
                  </div>
                </td>
                <td colspan=4>
                  <select id="noctaves">
                    <option value="3">1/3</option>
                    <option value="4">1/4</option>
                    <option value="5" selected>1/5</option>
                    <option value="6">1/6</option>
                    <option value="7">1/7</option>
                    <option value="8">1/8</option>
                    <option value="9">1/9</option>
                    <option value="10">1/10</option>
                  </select> Octaves
                  <a id='export_csv'>
                    <input type="button" value="Export CSV" onClick="exportCSV();">
                  </a>
                </td>
              </tr>
              <tr>
                <td>Show</td>
                <td>File name</td>
                <td width=50>Left</td>
                <td width=50>Right</td>
                <td>Remove</td>
              </tr>
            </table>
          </div>
        </td>
      </tr>
    </table>

    <div id="debug" style="display:none;">
      <h1>Debug</h1>
      <a id='export_freq'>
        <input type="button" value="Export Freq" onClick="exportFreq();">
      </a>
      <a id='export_buffer'>
        <input type="button" value="Export Buffer">
      </a>
    </div>

    <div id="log" style="display:none;">
      <h1>Log</h1>
      <pre id="log"></pre>
    </div>

  </body>
</html>