import%20marimo%0A%0A__generated_with%20%3D%20%220.19.11%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%202026%E5%B9%B4%EF%BC%8C%E7%94%A8%20Claude%20Code%20%E5%B0%B1%E5%8F%AF%E4%BB%A5%E6%97%A0%E7%97%9B%E5%85%A5%E9%97%A8%E9%9F%B3%E4%B9%90%E7%A7%91%E6%8A%80%0A%0A%20%20%20%20%E6%83%B3%E8%B1%A1%E4%B8%80%E4%B8%8B%EF%BC%9A%E4%BD%A0%E5%9C%A8%E7%BB%88%E7%AB%AF%E8%BE%93%E5%85%A5%E4%B8%80%E5%8F%A5%E8%AF%9D%EF%BC%8CAI%20%E5%B0%B1%E5%B8%AE%E4%BD%A0%E5%86%99%E5%A5%BD%E4%BB%A3%E7%A0%81%E3%80%81%E7%94%BB%E5%A5%BD%E5%9B%BE%E3%80%81%E8%BF%98%E8%83%BD%E4%BA%A4%E4%BA%92%E5%BC%8F%E8%B0%83%E5%8F%82%E2%80%94%E2%80%94%E8%BF%99%E5%B0%B1%E6%98%AF2026%E5%B9%B4%E7%94%A8%20**Claude%20Code**%20%E5%AD%A6%E9%9F%B3%E4%B9%90%E7%A7%91%E6%8A%80%E7%9A%84%E4%BD%93%E9%AA%8C%E3%80%82%0A%0A%20%20%20%20%E6%9C%AC%E6%96%87%E7%94%A8%20**marimo**%20%E4%BA%A4%E4%BA%92%E5%BC%8F%E7%AC%94%E8%AE%B0%E6%9C%AC%E6%9D%A5%E6%A8%A1%E6%8B%9F%E4%B8%80%E5%9C%BA%E4%B8%8E%20Claude%20Code%20%E7%9A%84%E3%80%8C%E7%BB%93%E5%AF%B9%E7%BC%96%E7%A8%8B%E3%80%8D%E3%80%82%E6%AF%8F%E4%B8%80%E8%8A%82%E9%83%BD%E4%BB%A5%E4%BD%A0%E5%8F%AF%E8%83%BD%E4%BC%9A%E9%97%AE%20Claude%20Code%20%E7%9A%84%E9%97%AE%E9%A2%98%E5%BC%80%E5%A4%B4%EF%BC%8C%E7%84%B6%E5%90%8E%E7%BB%99%E5%87%BA%E5%8F%AF%E7%9B%B4%E6%8E%A5%E8%BF%90%E8%A1%8C%E7%9A%84%E4%BB%A3%E7%A0%81%E5%92%8C%E4%BA%A4%E4%BA%92%E5%BC%8F%E6%8E%A7%E4%BB%B6%E3%80%82%0A%0A%20%20%20%20%3E%20**%E5%A6%82%E4%BD%95%E8%BF%90%E8%A1%8C%E6%9C%AC%E7%AC%94%E8%AE%B0%E6%9C%AC%EF%BC%9F**%0A%20%20%20%20%3E%0A%20%20%20%20%3E%20%60%60%60bash%0A%20%20%20%20%3E%20uv%20sync%0A%20%20%20%20%3E%20uv%20run%20marimo%20edit%20MIR-CC.py%0A%20%20%20%20%3E%20%60%60%60%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.callout(%0A%20%20%20%20%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20**%E4%BB%80%E4%B9%88%E6%98%AF%20Claude%20Code%EF%BC%9F**%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%5BClaude%20Code%5D(https%3A%2F%2Fdocs.anthropic.com%2Fen%2Fdocs%2Fclaude-code)%20%E6%98%AF%20Anthropic%20%E6%8E%A8%E5%87%BA%E7%9A%84%E5%91%BD%E4%BB%A4%E8%A1%8C%20AI%20%E7%BC%96%E7%A8%8B%E5%8A%A9%E6%89%8B%E3%80%82%0A%20%20%20%20%20%20%20%20%20%20%20%20%E4%BD%A0%E5%8F%AA%E9%9C%80%E8%A6%81%E5%9C%A8%E7%BB%88%E7%AB%AF%E7%94%A8%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E6%8F%8F%E8%BF%B0%E9%9C%80%E6%B1%82%EF%BC%8C%E5%AE%83%E5%B0%B1%E8%83%BD%E5%B8%AE%E4%BD%A0%E7%BC%96%E5%86%99%E3%80%81%E8%B0%83%E8%AF%95%E5%92%8C%E8%BF%90%E8%A1%8C%E4%BB%A3%E7%A0%81%E2%80%94%E2%80%94%E9%9D%9E%E5%B8%B8%E9%80%82%E5%90%88%E9%9B%B6%E5%9F%BA%E7%A1%80%E5%AD%A6%E4%B9%A0%E8%80%85%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B%E7%BC%96%E7%A8%8B%E3%80%82%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20kind%3D%22info%22%2C%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20from%20pathlib%20import%20Path%0A%0A%20%20%20%20import%20librosa%0A%20%20%20%20import%20librosa.display%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%20%20%20%20import%20numpy%20as%20np%0A%0A%20%20%20%20ATTACHMENT%20%3D%20Path(__file__).parent%20%2F%20%22attachment%22%0A%20%20%20%20return%20ATTACHMENT%2C%20librosa%2C%20mo%2C%20np%2C%20plt%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20---%0A%0A%20%20%20%20%23%23%20Part%201%3A%20%E5%8A%A0%E8%BD%BD%E9%9F%B3%E9%A2%91%E5%B9%B6%E8%AF%95%E5%90%AC%0A%0A%20%20%20%20%3E%20**%F0%9F%A7%91%20%E4%BD%A0%E5%AF%B9%20Claude%20Code%20%E8%AF%B4%EF%BC%9A**%20%22%E5%B8%AE%E6%88%91%E5%8A%A0%E8%BD%BD%E7%8C%AB%E5%8F%AB%E9%9F%B3%E9%A2%91%EF%BC%8C%E8%AE%A9%E6%88%91%E5%90%AC%E4%B8%80%E4%B8%8B%22%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(ATTACHMENT%2C%20librosa%2C%20mo)%3A%0A%20%20%20%20cat_audio_path%20%3D%20ATTACHMENT%20%2F%20%22cat-meow.mp3%22%0A%20%20%20%20y_cat%2C%20sr_cat%20%3D%20librosa.load(cat_audio_path%2C%20sr%3DNone)%0A%20%20%20%20duration_cat%20%3D%20librosa.get_duration(y%3Dy_cat%2C%20sr%3Dsr_cat)%0A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20f%22%22%22%0A%20%20%20%20%20%20%20%20**%E9%9F%B3%E9%A2%91%E4%BF%A1%E6%81%AF%EF%BC%9A**%0A%20%20%20%20%20%20%20%20-%20%E6%96%87%E4%BB%B6%EF%BC%9A%60cat-meow.mp3%60%0A%20%20%20%20%20%20%20%20-%20%E9%87%87%E6%A0%B7%E7%8E%87%EF%BC%9A%7Bsr_cat%7D%20Hz%0A%20%20%20%20%20%20%20%20-%20%E6%97%B6%E9%95%BF%EF%BC%9A%7Bduration_cat%3A.2f%7D%20%E7%A7%92%0A%20%20%20%20%20%20%20%20-%20%E9%87%87%E6%A0%B7%E7%82%B9%E6%95%B0%EF%BC%9A%7Blen(y_cat)%3A%2C%7D%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%20sr_cat%2C%20y_cat%0A%0A%0A%40app.cell%0Adef%20_(ATTACHMENT%2C%20mo)%3A%0A%20%20%20%20mo.audio(src%3DATTACHMENT%20%2F%20%22cat-meow.mp3%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(librosa%2C%20plt%2C%20sr_cat%2C%20y_cat)%3A%0A%20%20%20%20fig_wave%2C%20ax_wave%20%3D%20plt.subplots(figsize%3D(10%2C%203))%0A%20%20%20%20librosa.display.waveshow(y_cat%2C%20sr%3Dsr_cat%2C%20ax%3Dax_wave%2C%20color%3D%22%234a90d9%22)%0A%20%20%20%20ax_wave.set_title(%22Cat%20Meow%20%E2%80%94%20Waveform%22%2C%20fontsize%3D14)%0A%20%20%20%20ax_wave.set_xlabel(%22Time%20(s)%22)%0A%20%20%20%20ax_wave.set_ylabel(%22Amplitude%22)%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20fig_wave%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20---%0A%0A%20%20%20%20%23%23%20Part%202%3A%20%E4%BA%A4%E4%BA%92%E5%BC%8F%E7%9F%AD%E6%97%B6%E5%82%85%E9%87%8C%E5%8F%B6%E5%8F%98%E6%8D%A2%20(STFT)%0A%0A%20%20%20%20%3E%20**%F0%9F%A7%91%20%E4%BD%A0%E5%AF%B9%20Claude%20Code%20%E8%AF%B4%EF%BC%9A**%20%22%E6%88%91%E6%83%B3%E7%9C%8B%E9%A2%91%E5%9F%9F%E8%A1%A8%E7%A4%BA%EF%BC%8C%E8%80%8C%E4%B8%94%E6%83%B3%E8%87%AA%E5%B7%B1%E8%B0%83%E5%8F%82%E6%95%B0%22%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20audio_files%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%22%F0%9F%90%B1%20%E7%8C%AB%E5%8F%AB%20cat-meow.mp3%22%3A%20%22cat-meow.mp3%22%2C%0A%20%20%20%20%20%20%20%20%22%F0%9F%8E%B5%20%E9%9F%B3%E4%B9%90%20mir01-music-example.wav%22%3A%20%22mir01-music-example.wav%22%2C%0A%20%20%20%20%20%20%20%20%22%F0%9F%A5%81%20%E5%92%9A%E5%93%92%20mir02-dongda.wav%22%3A%20%22mir02-dongda.wav%22%2C%0A%20%20%20%20%20%20%20%20%22%F0%9F%8E%BB%20%E9%A2%91%E8%B0%B1%E8%B4%A8%E5%BF%83%20mir02-centroidaudio.wav%22%3A%20%22mir02-centroidaudio.wav%22%2C%0A%20%20%20%20%20%20%20%20%22%F0%9F%8E%BC%20%E5%8F%8C%E7%B0%A7%E7%AE%A1C6%20mir02-oboe_C6_1046Hz.wav%22%3A%20%22mir02-oboe_C6_1046Hz.wav%22%2C%0A%20%20%20%20%7D%0A%20%20%20%20file_dropdown%20%3D%20mo.ui.dropdown(%0A%20%20%20%20%20%20%20%20options%3Daudio_files%2C%0A%20%20%20%20%20%20%20%20value%3D%22%F0%9F%90%B1%20%E7%8C%AB%E5%8F%AB%20cat-meow.mp3%22%2C%0A%20%20%20%20%20%20%20%20label%3D%22%E9%80%89%E6%8B%A9%E9%9F%B3%E9%A2%91%E6%96%87%E4%BB%B6%22%2C%0A%20%20%20%20)%0A%20%20%20%20file_dropdown%0A%20%20%20%20return%20(file_dropdown%2C)%0A%0A%0A%40app.cell%0Adef%20_(ATTACHMENT%2C%20file_dropdown%2C%20librosa%2C%20mo)%3A%0A%20%20%20%20selected_path%20%3D%20ATTACHMENT%20%2F%20file_dropdown.value%0A%20%20%20%20y_sel%2C%20sr_sel%20%3D%20librosa.load(selected_path%2C%20sr%3D22050)%0A%20%20%20%20dur_sel%20%3D%20librosa.get_duration(y%3Dy_sel%2C%20sr%3Dsr_sel)%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20f%22%E5%B7%B2%E5%8A%A0%E8%BD%BD%20**%7Bfile_dropdown.value%7D**%20%E2%80%94%20%E9%87%87%E6%A0%B7%E7%8E%87%20%7Bsr_sel%7D%20Hz%EF%BC%8C%E6%97%B6%E9%95%BF%20%7Bdur_sel%3A.2f%7D%20%E7%A7%92%22%0A%20%20%20%20)%0A%20%20%20%20return%20sr_sel%2C%20y_sel%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20nfft_slider%20%3D%20mo.ui.slider(%0A%20%20%20%20%20%20%20%20start%3D256%2C%0A%20%20%20%20%20%20%20%20stop%3D4096%2C%0A%20%20%20%20%20%20%20%20step%3D256%2C%0A%20%20%20%20%20%20%20%20value%3D2048%2C%0A%20%20%20%20%20%20%20%20label%3D%22n_fft%EF%BC%88%E7%AA%97%E5%8F%A3%E9%95%BF%E5%BA%A6%EF%BC%89%22%2C%0A%20%20%20%20%20%20%20%20show_value%3DTrue%2C%0A%20%20%20%20)%0A%20%20%20%20hop_slider%20%3D%20mo.ui.slider(%0A%20%20%20%20%20%20%20%20start%3D64%2C%0A%20%20%20%20%20%20%20%20stop%3D2048%2C%0A%20%20%20%20%20%20%20%20step%3D64%2C%0A%20%20%20%20%20%20%20%20value%3D512%2C%0A%20%20%20%20%20%20%20%20label%3D%22hop_length%EF%BC%88%E6%AD%A5%E9%95%BF%EF%BC%89%22%2C%0A%20%20%20%20%20%20%20%20show_value%3DTrue%2C%0A%20%20%20%20)%0A%20%20%20%20mo.vstack(%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20nfft_slider%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20hop_slider%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.callout(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20**Claude%20Code%20%E5%B0%8F%E8%B4%B4%E5%A3%AB%20%E2%80%94%20%E6%97%B6%E9%A2%91%E5%88%86%E8%BE%A8%E7%8E%87%E6%9D%83%E8%A1%A1%EF%BC%9A**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%60n_fft%60%20%E8%B6%8A%E5%A4%A7%EF%BC%8C%E9%A2%91%E7%8E%87%E5%88%86%E8%BE%A8%E7%8E%87%E8%B6%8A%E9%AB%98%EF%BC%8C%E4%BD%86%E6%97%B6%E9%97%B4%E5%88%86%E8%BE%A8%E7%8E%87%E8%B6%8A%E4%BD%8E%EF%BC%9B%60hop_length%60%20%E8%B6%8A%E5%B0%8F%EF%BC%8C%E6%97%B6%E9%97%B4%E5%88%86%E8%BE%A8%E7%8E%87%E8%B6%8A%E9%AB%98%EF%BC%8C%E4%BD%86%E8%AE%A1%E7%AE%97%E9%87%8F%E8%B6%8A%E5%A4%A7%E3%80%82%E8%AF%95%E7%9D%80%E6%8B%96%E5%8A%A8%E6%BB%91%E5%9D%97%E6%84%9F%E5%8F%97%E8%BF%99%E4%B8%AA%20trade-off%EF%BC%81%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kind%3D%22warn%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20)%0A%20%20%20%20return%20hop_slider%2C%20nfft_slider%0A%0A%0A%40app.cell%0Adef%20_(hop_slider%2C%20librosa%2C%20nfft_slider%2C%20np%2C%20plt%2C%20sr_sel%2C%20y_sel)%3A%0A%20%20%20%20n_fft_val%20%3D%20nfft_slider.value%0A%20%20%20%20hop_val%20%3D%20hop_slider.value%0A%0A%20%20%20%20fig_stft%2C%20axes_stft%20%3D%20plt.subplots(2%2C%201%2C%20figsize%3D(10%2C%206)%2C%20sharex%3DTrue)%0A%0A%20%20%20%20%23%20Waveform%0A%20%20%20%20librosa.display.waveshow(y_sel%2C%20sr%3Dsr_sel%2C%20ax%3Daxes_stft%5B0%5D%2C%20color%3D%22%234a90d9%22)%0A%20%20%20%20axes_stft%5B0%5D.set_title(%22Waveform%22%2C%20fontsize%3D12)%0A%20%20%20%20axes_stft%5B0%5D.set_ylabel(%22Amplitude%22)%0A%0A%20%20%20%20%23%20STFT%20spectrogram%0A%20%20%20%20S%20%3D%20np.abs(librosa.stft(y_sel%2C%20n_fft%3Dn_fft_val%2C%20hop_length%3Dhop_val))%0A%20%20%20%20S_db%20%3D%20librosa.amplitude_to_db(S%2C%20ref%3Dnp.max)%0A%20%20%20%20img%20%3D%20librosa.display.specshow(%0A%20%20%20%20%20%20%20%20S_db%2C%0A%20%20%20%20%20%20%20%20sr%3Dsr_sel%2C%0A%20%20%20%20%20%20%20%20hop_length%3Dhop_val%2C%0A%20%20%20%20%20%20%20%20x_axis%3D%22time%22%2C%0A%20%20%20%20%20%20%20%20y_axis%3D%22hz%22%2C%0A%20%20%20%20%20%20%20%20ax%3Daxes_stft%5B1%5D%2C%0A%20%20%20%20%20%20%20%20cmap%3D%22magma%22%2C%0A%20%20%20%20)%0A%20%20%20%20axes_stft%5B1%5D.set_title(%0A%20%20%20%20%20%20%20%20f%22STFT%20Spectrogram%20(n_fft%3D%7Bn_fft_val%7D%2C%20hop_length%3D%7Bhop_val%7D)%22%2C%20fontsize%3D12%0A%20%20%20%20)%0A%20%20%20%20axes_stft%5B1%5D.set_ylabel(%22Frequency%20(Hz)%22)%0A%20%20%20%20axes_stft%5B1%5D.set_xlabel(%22Time%20(s)%22)%0A%20%20%20%20fig_stft.colorbar(img%2C%20ax%3Daxes_stft%5B1%5D%2C%20format%3D%22%25%2B2.0f%20dB%22)%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20fig_stft%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20---%0A%0A%20%20%20%20%23%23%20Part%203%3A%20Mel%20%E9%A2%91%E8%B0%B1%E5%9B%BE%0A%0A%20%20%20%20%3E%20**%F0%9F%A7%91%20%E4%BD%A0%E5%AF%B9%20Claude%20Code%20%E8%AF%B4%EF%BC%9A**%20%22%E4%BA%BA%E8%80%B3%E5%AF%B9%E9%A2%91%E7%8E%87%E7%9A%84%E6%84%9F%E7%9F%A5%E4%B8%8D%E6%98%AF%E7%BA%BF%E6%80%A7%E7%9A%84%EF%BC%8C%E6%9C%89%E6%9B%B4%E9%80%82%E5%90%88%E7%9A%84%E9%A2%91%E8%B0%B1%E5%9B%BE%E5%90%97%EF%BC%9F%22%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20n_mels_slider%20%3D%20mo.ui.slider(%0A%20%20%20%20%20%20%20%20start%3D16%2C%0A%20%20%20%20%20%20%20%20stop%3D256%2C%0A%20%20%20%20%20%20%20%20step%3D16%2C%0A%20%20%20%20%20%20%20%20value%3D128%2C%0A%20%20%20%20%20%20%20%20label%3D%22n_mels%EF%BC%88Mel%20%E6%BB%A4%E6%B3%A2%E5%99%A8%E7%BB%84%E6%95%B0%E9%87%8F%EF%BC%89%22%2C%0A%20%20%20%20%20%20%20%20show_value%3DTrue%2C%0A%20%20%20%20)%0A%20%20%20%20n_mels_slider%0A%20%20%20%20return%20(n_mels_slider%2C)%0A%0A%0A%40app.cell%0Adef%20_(hop_slider%2C%20librosa%2C%20n_mels_slider%2C%20nfft_slider%2C%20np%2C%20plt%2C%20sr_sel%2C%20y_sel)%3A%0A%20%20%20%20n_fft_mel%20%3D%20nfft_slider.value%0A%20%20%20%20hop_mel%20%3D%20hop_slider.value%0A%20%20%20%20n_mels_val%20%3D%20n_mels_slider.value%0A%0A%20%20%20%20fig_mel%2C%20axes_mel%20%3D%20plt.subplots(1%2C%202%2C%20figsize%3D(14%2C%204))%0A%0A%20%20%20%20%23%20Linear%20spectrogram%20(left)%0A%20%20%20%20S_lin%20%3D%20np.abs(librosa.stft(y_sel%2C%20n_fft%3Dn_fft_mel%2C%20hop_length%3Dhop_mel))%0A%20%20%20%20S_lin_db%20%3D%20librosa.amplitude_to_db(S_lin%2C%20ref%3Dnp.max)%0A%20%20%20%20img_lin%20%3D%20librosa.display.specshow(%0A%20%20%20%20%20%20%20%20S_lin_db%2C%0A%20%20%20%20%20%20%20%20sr%3Dsr_sel%2C%0A%20%20%20%20%20%20%20%20hop_length%3Dhop_mel%2C%0A%20%20%20%20%20%20%20%20x_axis%3D%22time%22%2C%0A%20%20%20%20%20%20%20%20y_axis%3D%22hz%22%2C%0A%20%20%20%20%20%20%20%20ax%3Daxes_mel%5B0%5D%2C%0A%20%20%20%20%20%20%20%20cmap%3D%22magma%22%2C%0A%20%20%20%20)%0A%20%20%20%20axes_mel%5B0%5D.set_title(%22Linear%20Spectrogram%22%2C%20fontsize%3D12)%0A%20%20%20%20fig_mel.colorbar(img_lin%2C%20ax%3Daxes_mel%5B0%5D%2C%20format%3D%22%25%2B2.0f%20dB%22)%0A%0A%20%20%20%20%23%20Mel%20spectrogram%20(right)%0A%20%20%20%20M%20%3D%20librosa.feature.melspectrogram(%0A%20%20%20%20%20%20%20%20y%3Dy_sel%2C%20sr%3Dsr_sel%2C%20n_fft%3Dn_fft_mel%2C%20hop_length%3Dhop_mel%2C%20n_mels%3Dn_mels_val%0A%20%20%20%20)%0A%20%20%20%20M_db%20%3D%20librosa.power_to_db(M%2C%20ref%3Dnp.max)%0A%20%20%20%20img_mel%20%3D%20librosa.display.specshow(%0A%20%20%20%20%20%20%20%20M_db%2C%0A%20%20%20%20%20%20%20%20sr%3Dsr_sel%2C%0A%20%20%20%20%20%20%20%20hop_length%3Dhop_mel%2C%0A%20%20%20%20%20%20%20%20x_axis%3D%22time%22%2C%0A%20%20%20%20%20%20%20%20y_axis%3D%22mel%22%2C%0A%20%20%20%20%20%20%20%20ax%3Daxes_mel%5B1%5D%2C%0A%20%20%20%20%20%20%20%20cmap%3D%22magma%22%2C%0A%20%20%20%20)%0A%20%20%20%20axes_mel%5B1%5D.set_title(f%22Mel%20Spectrogram%20(n_mels%3D%7Bn_mels_val%7D)%22%2C%20fontsize%3D12)%0A%20%20%20%20fig_mel.colorbar(img_mel%2C%20ax%3Daxes_mel%5B1%5D%2C%20format%3D%22%25%2B2.0f%20dB%22)%0A%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20fig_mel%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20---%0A%0A%20%20%20%20%23%23%20Part%204%3A%20%E5%AE%9E%E7%94%A8%20MIR%20%E4%BB%BB%E5%8A%A1%0A%0A%20%20%20%20%3E%20**%F0%9F%A7%91%20%E4%BD%A0%E5%AF%B9%20Claude%20Code%20%E8%AF%B4%EF%BC%9A**%20%22%E8%83%BD%E8%87%AA%E5%8A%A8%E6%89%BE%E5%88%B0%E9%BC%93%E7%82%B9%E4%BD%8D%E7%BD%AE%E5%90%97%EF%BC%9F%22%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(ATTACHMENT%2C%20librosa%2C%20np%2C%20plt)%3A%0A%20%20%20%20y_drum%2C%20sr_drum%20%3D%20librosa.load(ATTACHMENT%20%2F%20%22mir02-dongda.wav%22%2C%20sr%3D22050)%0A%20%20%20%20onset_frames%20%3D%20librosa.onset.onset_detect(y%3Dy_drum%2C%20sr%3Dsr_drum)%0A%20%20%20%20onset_times%20%3D%20librosa.frames_to_time(onset_frames%2C%20sr%3Dsr_drum)%0A%0A%20%20%20%20fig_onset%2C%20ax_onset%20%3D%20plt.subplots(figsize%3D(10%2C%203))%0A%20%20%20%20librosa.display.waveshow(y_drum%2C%20sr%3Dsr_drum%2C%20ax%3Dax_onset%2C%20color%3D%22%234a90d9%22%2C%20alpha%3D0.6)%0A%20%20%20%20ax_onset.vlines(%0A%20%20%20%20%20%20%20%20onset_times%2C%20-1%2C%201%2C%20color%3D%22red%22%2C%20linewidth%3D1.5%2C%20alpha%3D0.8%2C%20label%3D%22Detected%20onsets%22%0A%20%20%20%20)%0A%20%20%20%20ax_onset.legend(fontsize%3D10)%0A%20%20%20%20ax_onset.set_title(%0A%20%20%20%20%20%20%20%20f%22Onset%20Detection%20%E2%80%94%20%7Blen(onset_times)%7D%20onsets%20found%22%2C%20fontsize%3D12%0A%20%20%20%20)%0A%20%20%20%20ax_onset.set_xlabel(%22Time%20(s)%22)%0A%20%20%20%20ax_onset.set_ylabel(%22Amplitude%22)%0A%20%20%20%20ymin%20%3D%20float(np.min(y_drum))%20*%201.1%0A%20%20%20%20ymax%20%3D%20float(np.max(y_drum))%20*%201.1%0A%20%20%20%20ax_onset.set_ylim(ymin%2C%20ymax)%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20fig_onset%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%3E%20**%F0%9F%A7%91%20%E4%BD%A0%E5%AF%B9%20Claude%20Code%20%E8%AF%B4%EF%BC%9A**%20%22%E8%83%BD%E6%98%BE%E7%A4%BA%E9%9F%B3%E4%B9%90%E7%9A%84%E8%89%B2%E5%BA%A6%E5%9B%BE%E5%90%97%EF%BC%9F%E6%88%91%E6%83%B3%E6%AF%94%E8%BE%83%E4%B8%8D%E5%90%8C%E7%AE%97%E6%B3%95%22%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(ATTACHMENT%2C%20librosa%2C%20mo)%3A%0A%20%20%20%20y_music%2C%20sr_music%20%3D%20librosa.load(%0A%20%20%20%20%20%20%20%20ATTACHMENT%20%2F%20%22mir01-music-example.wav%22%2C%20sr%3D22050%0A%20%20%20%20)%0A%0A%20%20%20%20chroma_type_dropdown%20%3D%20mo.ui.dropdown(%0A%20%20%20%20%20%20%20%20options%3D%5B%22stft%22%2C%20%22cqt%22%2C%20%22cens%22%5D%2C%0A%20%20%20%20%20%20%20%20value%3D%22stft%22%2C%0A%20%20%20%20%20%20%20%20label%3D%22Chroma%20%E7%AE%97%E6%B3%95%22%2C%0A%20%20%20%20)%0A%20%20%20%20chroma_type_dropdown%0A%20%20%20%20return%20chroma_type_dropdown%2C%20sr_music%2C%20y_music%0A%0A%0A%40app.cell%0Adef%20_(chroma_type_dropdown%2C%20librosa%2C%20plt%2C%20sr_music%2C%20y_music)%3A%0A%20%20%20%20chroma_funcs%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%22stft%22%3A%20lambda%3A%20librosa.feature.chroma_stft(y%3Dy_music%2C%20sr%3Dsr_music)%2C%0A%20%20%20%20%20%20%20%20%22cqt%22%3A%20lambda%3A%20librosa.feature.chroma_cqt(y%3Dy_music%2C%20sr%3Dsr_music)%2C%0A%20%20%20%20%20%20%20%20%22cens%22%3A%20lambda%3A%20librosa.feature.chroma_cens(y%3Dy_music%2C%20sr%3Dsr_music)%2C%0A%20%20%20%20%7D%0A%20%20%20%20chroma_data%20%3D%20chroma_funcs%5Bchroma_type_dropdown.value%5D()%0A%0A%20%20%20%20fig_chroma%2C%20ax_chroma%20%3D%20plt.subplots(figsize%3D(10%2C%204))%0A%20%20%20%20img_chroma%20%3D%20librosa.display.specshow(%0A%20%20%20%20%20%20%20%20chroma_data%2C%0A%20%20%20%20%20%20%20%20y_axis%3D%22chroma%22%2C%0A%20%20%20%20%20%20%20%20x_axis%3D%22time%22%2C%0A%20%20%20%20%20%20%20%20sr%3Dsr_music%2C%0A%20%20%20%20%20%20%20%20ax%3Dax_chroma%2C%0A%20%20%20%20%20%20%20%20cmap%3D%22coolwarm%22%2C%0A%20%20%20%20)%0A%20%20%20%20ax_chroma.set_title(%0A%20%20%20%20%20%20%20%20f%22Chromagram%20(%7Bchroma_type_dropdown.value%7D)%22%2C%20fontsize%3D12%0A%20%20%20%20)%0A%20%20%20%20fig_chroma.colorbar(img_chroma%2C%20ax%3Dax_chroma)%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20fig_chroma%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%3E%20**%F0%9F%A7%91%20%E4%BD%A0%E5%AF%B9%20Claude%20Code%20%E8%AF%B4%EF%BC%9A**%20%22%E8%83%BD%E5%9C%A8%E9%A2%91%E8%B0%B1%E5%9B%BE%E4%B8%8A%E5%8F%A0%E5%8A%A0%E9%A2%91%E8%B0%B1%E8%B4%A8%E5%BF%83%E6%9B%B2%E7%BA%BF%E5%90%97%EF%BC%9F%22%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(hop_slider%2C%20librosa%2C%20nfft_slider%2C%20np%2C%20plt%2C%20sr_sel%2C%20y_sel)%3A%0A%20%20%20%20n_fft_sc%20%3D%20nfft_slider.value%0A%20%20%20%20hop_sc%20%3D%20hop_slider.value%0A%0A%20%20%20%20S_sc%20%3D%20np.abs(librosa.stft(y_sel%2C%20n_fft%3Dn_fft_sc%2C%20hop_length%3Dhop_sc))%0A%20%20%20%20S_sc_db%20%3D%20librosa.amplitude_to_db(S_sc%2C%20ref%3Dnp.max)%0A%20%20%20%20centroid%20%3D%20librosa.feature.spectral_centroid(%0A%20%20%20%20%20%20%20%20y%3Dy_sel%2C%20sr%3Dsr_sel%2C%20n_fft%3Dn_fft_sc%2C%20hop_length%3Dhop_sc%0A%20%20%20%20)%0A%20%20%20%20times_sc%20%3D%20librosa.times_like(centroid%2C%20sr%3Dsr_sel%2C%20hop_length%3Dhop_sc)%0A%0A%20%20%20%20fig_sc%2C%20ax_sc%20%3D%20plt.subplots(figsize%3D(10%2C%204))%0A%20%20%20%20librosa.display.specshow(%0A%20%20%20%20%20%20%20%20S_sc_db%2C%0A%20%20%20%20%20%20%20%20sr%3Dsr_sel%2C%0A%20%20%20%20%20%20%20%20hop_length%3Dhop_sc%2C%0A%20%20%20%20%20%20%20%20x_axis%3D%22time%22%2C%0A%20%20%20%20%20%20%20%20y_axis%3D%22hz%22%2C%0A%20%20%20%20%20%20%20%20ax%3Dax_sc%2C%0A%20%20%20%20%20%20%20%20cmap%3D%22magma%22%2C%0A%20%20%20%20)%0A%20%20%20%20ax_sc.plot(times_sc%2C%20centroid%5B0%5D%2C%20color%3D%22cyan%22%2C%20linewidth%3D2%2C%20label%3D%22Spectral%20Centroid%22)%0A%20%20%20%20ax_sc.legend(loc%3D%22upper%20right%22%2C%20fontsize%3D10)%0A%20%20%20%20ax_sc.set_title(%22Spectral%20Centroid%20Overlay%22%2C%20fontsize%3D12)%0A%20%20%20%20ax_sc.set_ylabel(%22Frequency%20(Hz)%22)%0A%20%20%20%20ax_sc.set_xlabel(%22Time%20(s)%22)%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20fig_sc%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20---%0A%0A%20%20%20%20%23%23%20Part%205%3A%20%E7%89%B9%E5%BE%81%E4%BB%AA%E8%A1%A8%E7%9B%98%0A%0A%20%20%20%20%3E%20**%F0%9F%A7%91%20%E4%BD%A0%E5%AF%B9%20Claude%20Code%20%E8%AF%B4%EF%BC%9A**%20%22%E8%83%BD%E5%81%9A%E4%B8%80%E4%B8%AA%E4%BB%AA%E8%A1%A8%E7%9B%98%E4%B8%80%E6%AC%A1%E7%9C%8B%E6%89%80%E6%9C%89%E7%89%B9%E5%BE%81%E5%90%97%EF%BC%9F%22%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(hop_slider%2C%20librosa%2C%20mo%2C%20nfft_slider%2C%20np%2C%20plt%2C%20sr_sel%2C%20y_sel)%3A%0A%20%20%20%20_n_fft%20%3D%20nfft_slider.value%0A%20%20%20%20_hop%20%3D%20hop_slider.value%0A%0A%20%20%20%20def%20_make_tab_figure(title%2C%20plot_fn)%3A%0A%20%20%20%20%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots(figsize%3D(10%2C%204))%0A%20%20%20%20%20%20%20%20plot_fn(fig%2C%20ax)%0A%20%20%20%20%20%20%20%20ax.set_title(title%2C%20fontsize%3D12)%0A%20%20%20%20%20%20%20%20ax.set_xlabel(%22Time%20(s)%22)%0A%20%20%20%20%20%20%20%20plt.tight_layout()%0A%20%20%20%20%20%20%20%20return%20fig%0A%0A%20%20%20%20def%20_plot_waveform(fig%2C%20ax)%3A%0A%20%20%20%20%20%20%20%20librosa.display.waveshow(y_sel%2C%20sr%3Dsr_sel%2C%20ax%3Dax%2C%20color%3D%22%234a90d9%22)%0A%20%20%20%20%20%20%20%20ax.set_ylabel(%22Amplitude%22)%0A%0A%20%20%20%20def%20_plot_spectrogram(fig%2C%20ax)%3A%0A%20%20%20%20%20%20%20%20S%20%3D%20np.abs(librosa.stft(y_sel%2C%20n_fft%3D_n_fft%2C%20hop_length%3D_hop))%0A%20%20%20%20%20%20%20%20S_db%20%3D%20librosa.amplitude_to_db(S%2C%20ref%3Dnp.max)%0A%20%20%20%20%20%20%20%20img%20%3D%20librosa.display.specshow(%0A%20%20%20%20%20%20%20%20%20%20%20%20S_db%2C%20sr%3Dsr_sel%2C%20hop_length%3D_hop%2C%20x_axis%3D%22time%22%2C%20y_axis%3D%22hz%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20ax%3Dax%2C%20cmap%3D%22magma%22%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20ax.set_ylabel(%22Frequency%20(Hz)%22)%0A%20%20%20%20%20%20%20%20fig.colorbar(img%2C%20ax%3Dax%2C%20format%3D%22%25%2B2.0f%20dB%22)%0A%0A%20%20%20%20def%20_plot_mel(fig%2C%20ax)%3A%0A%20%20%20%20%20%20%20%20M%20%3D%20librosa.feature.melspectrogram(%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dy_sel%2C%20sr%3Dsr_sel%2C%20n_fft%3D_n_fft%2C%20hop_length%3D_hop%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20M_db%20%3D%20librosa.power_to_db(M%2C%20ref%3Dnp.max)%0A%20%20%20%20%20%20%20%20img%20%3D%20librosa.display.specshow(%0A%20%20%20%20%20%20%20%20%20%20%20%20M_db%2C%20sr%3Dsr_sel%2C%20hop_length%3D_hop%2C%20x_axis%3D%22time%22%2C%20y_axis%3D%22mel%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20ax%3Dax%2C%20cmap%3D%22magma%22%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20ax.set_ylabel(%22Mel%20Frequency%22)%0A%20%20%20%20%20%20%20%20fig.colorbar(img%2C%20ax%3Dax%2C%20format%3D%22%25%2B2.0f%20dB%22)%0A%0A%20%20%20%20def%20_plot_chroma(fig%2C%20ax)%3A%0A%20%20%20%20%20%20%20%20C%20%3D%20librosa.feature.chroma_stft(y%3Dy_sel%2C%20sr%3Dsr_sel%2C%20n_fft%3D_n_fft%2C%20hop_length%3D_hop)%0A%20%20%20%20%20%20%20%20img%20%3D%20librosa.display.specshow(%0A%20%20%20%20%20%20%20%20%20%20%20%20C%2C%20y_axis%3D%22chroma%22%2C%20x_axis%3D%22time%22%2C%20sr%3Dsr_sel%2C%20hop_length%3D_hop%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20ax%3Dax%2C%20cmap%3D%22coolwarm%22%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20fig.colorbar(img%2C%20ax%3Dax)%0A%0A%20%20%20%20def%20_plot_mfcc(fig%2C%20ax)%3A%0A%20%20%20%20%20%20%20%20mfccs%20%3D%20librosa.feature.mfcc(%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dy_sel%2C%20sr%3Dsr_sel%2C%20n_mfcc%3D13%2C%20n_fft%3D_n_fft%2C%20hop_length%3D_hop%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20img%20%3D%20librosa.display.specshow(%0A%20%20%20%20%20%20%20%20%20%20%20%20mfccs%2C%20x_axis%3D%22time%22%2C%20sr%3Dsr_sel%2C%20hop_length%3D_hop%2C%20ax%3Dax%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20ax.set_ylabel(%22MFCC%20Coefficients%22)%0A%20%20%20%20%20%20%20%20fig.colorbar(img%2C%20ax%3Dax)%0A%0A%20%20%20%20def%20_plot_centroid_zcr(fig%2C%20ax)%3A%0A%20%20%20%20%20%20%20%20cent%20%3D%20librosa.feature.spectral_centroid(%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dy_sel%2C%20sr%3Dsr_sel%2C%20n_fft%3D_n_fft%2C%20hop_length%3D_hop%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20zcr%20%3D%20librosa.feature.zero_crossing_rate(y_sel%2C%20frame_length%3D_n_fft%2C%20hop_length%3D_hop)%0A%20%20%20%20%20%20%20%20t%20%3D%20librosa.times_like(cent%2C%20sr%3Dsr_sel%2C%20hop_length%3D_hop)%0A%20%20%20%20%20%20%20%20ax.plot(t%2C%20cent%5B0%5D%2C%20color%3D%22%23e74c3c%22%2C%20label%3D%22Spectral%20Centroid%20(Hz)%22%2C%20linewidth%3D1.5)%0A%20%20%20%20%20%20%20%20ax.set_ylabel(%22Spectral%20Centroid%20(Hz)%22%2C%20color%3D%22%23e74c3c%22)%0A%20%20%20%20%20%20%20%20ax.tick_params(axis%3D%22y%22%2C%20labelcolor%3D%22%23e74c3c%22)%0A%20%20%20%20%20%20%20%20ax2%20%3D%20ax.twinx()%0A%20%20%20%20%20%20%20%20ax2.plot(t%2C%20zcr%5B0%5D%2C%20color%3D%22%232ecc71%22%2C%20label%3D%22Zero%20Crossing%20Rate%22%2C%20linewidth%3D1.5)%0A%20%20%20%20%20%20%20%20ax2.set_ylabel(%22Zero%20Crossing%20Rate%22%2C%20color%3D%22%232ecc71%22)%0A%20%20%20%20%20%20%20%20ax2.tick_params(axis%3D%22y%22%2C%20labelcolor%3D%22%232ecc71%22)%0A%20%20%20%20%20%20%20%20lines1%2C%20labels1%20%3D%20ax.get_legend_handles_labels()%0A%20%20%20%20%20%20%20%20lines2%2C%20labels2%20%3D%20ax2.get_legend_handles_labels()%0A%20%20%20%20%20%20%20%20ax.legend(lines1%20%2B%20lines2%2C%20labels1%20%2B%20labels2%2C%20loc%3D%22upper%20right%22)%0A%0A%20%20%20%20dashboard_tabs%20%3D%20mo.ui.tabs(%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22Waveform%22%3A%20_make_tab_figure(%22Waveform%22%2C%20_plot_waveform)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22Spectrogram%22%3A%20_make_tab_figure(%22Spectrogram%22%2C%20_plot_spectrogram)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22Mel%20Spectrogram%22%3A%20_make_tab_figure(%22Mel%20Spectrogram%22%2C%20_plot_mel)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22Chromagram%22%3A%20_make_tab_figure(%22Chromagram%22%2C%20_plot_chroma)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22MFCC%22%3A%20_make_tab_figure(%22MFCC%22%2C%20_plot_mfcc)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22Centroid%20%2B%20ZCR%22%3A%20_make_tab_figure(%22Spectral%20Centroid%20%26%20ZCR%22%2C%20_plot_centroid_zcr)%2C%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20)%0A%20%20%20%20dashboard_tabs%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20---%0A%0A%20%20%20%20%23%23%20%E5%9B%9E%E9%A1%BE%E4%B8%8E%E4%B8%8B%E4%B8%80%E6%AD%A5%0A%0A%20%20%20%20%E5%9C%A8%E8%BF%99%E7%AF%87%E6%96%87%E7%AB%A0%E4%B8%AD%EF%BC%8C%E6%88%91%E4%BB%AC%E7%94%A8%20Claude%20Code%20%2B%20marimo%20%E4%BA%A4%E4%BA%92%E5%BC%8F%E7%AC%94%E8%AE%B0%E6%9C%AC%E5%AE%8C%E6%88%90%E4%BA%86%E4%BB%A5%E4%B8%8B%20MIR%20%E4%BB%BB%E5%8A%A1%EF%BC%9A%0A%0A%20%20%20%201.%20**%E5%8A%A0%E8%BD%BD%E5%92%8C%E8%AF%95%E5%90%AC**%E9%9F%B3%E9%A2%91%E6%96%87%E4%BB%B6%0A%20%20%20%202.%20%E7%94%A8%E4%BA%A4%E4%BA%92%E5%BC%8F%E6%BB%91%E5%9D%97%E6%8E%A2%E7%B4%A2%20**STFT%20%E6%97%B6%E9%A2%91%E5%88%86%E6%9E%90**%E7%9A%84%E5%8F%82%E6%95%B0%E5%BD%B1%E5%93%8D%0A%20%20%20%203.%20%E5%AF%B9%E6%AF%94**%E7%BA%BF%E6%80%A7%E9%A2%91%E8%B0%B1%E5%9B%BE%20vs%20Mel%20%E9%A2%91%E8%B0%B1%E5%9B%BE**%0A%20%20%20%204.%20%E8%87%AA%E5%8A%A8%E6%A3%80%E6%B5%8B**%E9%BC%93%E7%82%B9%E4%BD%8D%E7%BD%AE**%EF%BC%88Onset%20Detection%EF%BC%89%0A%20%20%20%205.%20%E6%AF%94%E8%BE%83%E4%B8%8D%E5%90%8C%20**Chromagram**%20%E7%AE%97%E6%B3%95%0A%20%20%20%206.%20%E5%8F%A0%E5%8A%A0**%E9%A2%91%E8%B0%B1%E8%B4%A8%E5%BF%83**%E6%9B%B2%E7%BA%BF%0A%20%20%20%207.%20%E4%B8%80%E9%94%AE%E6%9F%A5%E7%9C%8B**%E7%89%B9%E5%BE%81%E4%BB%AA%E8%A1%A8%E7%9B%98**%0A%0A%20%20%20%20%23%23%23%20%E8%AF%95%E7%9D%80%E9%97%AE%20Claude%20Code%20%E6%9B%B4%E5%A4%9A%E9%97%AE%E9%A2%98%EF%BC%9A%0A%0A%20%20%20%20-%20%22%E5%B8%AE%E6%88%91%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84%E8%8A%82%E6%8B%8D%E8%BF%BD%E8%B8%AA%E5%99%A8%22%0A%20%20%20%20-%20%22%E7%94%A8%20MFCC%20%E7%89%B9%E5%BE%81%E5%81%9A%E4%B8%80%E4%B8%AA%E9%9F%B3%E9%A2%91%E5%88%86%E7%B1%BB%E5%99%A8%22%0A%20%20%20%20-%20%22%E5%B8%AE%E6%88%91%E6%8A%8A%E4%B8%A4%E6%AE%B5%E9%9F%B3%E9%A2%91%E7%9A%84%E9%A2%91%E8%B0%B1%E5%9B%BE%E6%94%BE%E5%9C%A8%E4%B8%80%E8%B5%B7%E5%AF%B9%E6%AF%94%22%0A%20%20%20%20-%20%22%E4%BB%80%E4%B9%88%E6%98%AF%E8%B0%90%E6%B3%A2%E6%89%93%E5%87%BB%E4%B9%90%E5%88%86%E7%A6%BB%EF%BC%9F%E5%B8%AE%E6%88%91%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%8B%22%0A%20%20%20%20-%20%22%E5%B8%AE%E6%88%91%E7%94%A8%20librosa%20%E6%8F%90%E5%8F%96%E9%9F%B3%E9%A2%91%E7%9A%84%E8%B0%83%E6%80%A7%22%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20---%0A%0A%20%20%20%20%23%23%23%20%E7%9B%B8%E5%85%B3%E9%93%BE%E6%8E%A5%0A%0A%20%20%20%20%7C%20%E8%B5%84%E6%BA%90%20%7C%20%E9%93%BE%E6%8E%A5%20%7C%0A%20%20%20%20%7C------%7C------%7C%0A%20%20%20%20%7C%20%E5%BE%80%E6%9C%9F%E6%96%87%E7%AB%A0%20%7C%20%5B%E6%97%A0%E7%97%9B%E5%85%A5%E9%97%A8%E9%9F%B3%E4%B9%90%E7%A7%91%E6%8A%80%5D(https%3A%2F%2Fgithub.com%2Fbeiciliang%2Fintro2musictech)%20%7C%0A%20%20%20%20%7C%20marimo%20%E6%96%87%E6%A1%A3%20%7C%20%5Bdocs.marimo.io%5D(https%3A%2F%2Fdocs.marimo.io)%20%7C%0A%20%20%20%20%7C%20Claude%20Code%20%7C%20%5Bdocs.anthropic.com%2Fen%2Fdocs%2Fclaude-code%5D(https%3A%2F%2Fdocs.anthropic.com%2Fen%2Fdocs%2Fclaude-code)%20%7C%0A%20%20%20%20%7C%20librosa%20%E6%96%87%E6%A1%A3%20%7C%20%5Blibrosa.org%5D(https%3A%2F%2Flibrosa.org)%20%7C%0A%0A%20%20%20%20%E6%AC%A2%E8%BF%8E%E5%BE%AE%E4%BF%A1%E5%85%B3%E6%B3%A8%E5%85%AC%E4%BC%97%E5%8F%B7%20**%E3%80%8C%E6%97%A0%E7%97%9B%E5%85%A5%E9%97%A8%E9%9F%B3%E4%B9%90%E7%A7%91%E6%8A%80%E3%80%8D**%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
695ecb9b6b7d9ebac9ba887911e30046