欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

Python mido庫實戰(zhàn):從零解析與生成MIDI音樂文件

Python mido庫實戰(zhàn):從零解析與生成MIDI音樂文件 1. 項目概述從數(shù)字樂譜到可編程聲音如果你玩過音樂游戲或者用過電子琴的自動伴奏功能那你已經(jīng)接觸過MIDI了。它不像MP3或WAV那樣直接記錄聲音的波形而更像是一份極其詳盡的“數(shù)字樂譜”。這份樂譜里不包含任何實際的聲音只記錄了一系列指令什么時間、哪個音符被按下Note On、力度多大、什么時候松開Note Off以及音色、音量、彎音等控制信息。這種設(shè)計讓MIDI文件體積非常小一個幾分鐘的復(fù)雜樂章可能只有幾十KB并且修改起來異常靈活——你可以輕松地把鋼琴曲換成吉他音色或者改變整個曲子的速度而無需重新錄制。MIDI的全稱是Musical Instrument Digital Interface樂器數(shù)字接口它誕生于上世紀(jì)80年代初衷是為了讓不同廠家的電子樂器能夠互相“對話”。今天它的應(yīng)用早已超出專業(yè)音樂制作的范疇滲透到游戲音效、手機鈴聲、多媒體演示乃至嵌入式系統(tǒng)的提示音中。對于程序員和創(chuàng)作者來說MIDI的魅力在于它的“可編程性”。你可以用代碼來生成、解析、修改這些樂譜數(shù)據(jù)從而實現(xiàn)自動作曲、音樂可視化、算法生成背景音樂等創(chuàng)意項目。Python的mido庫就是我們操作這份“數(shù)字樂譜”的瑞士軍刀。它不像一些龐大的音頻處理庫那樣復(fù)雜而是專注于MIDI協(xié)議本身提供了清晰、Pythonic的API來讀寫.mid文件和處理MIDI消息。無論是想批量修改一批MIDI文件的音量還是從零生成一段旋律抑或是做一個根據(jù)你的鍵盤打字節(jié)奏來生成音樂的趣味程序mido都是一個絕佳的起點。接下來我會帶你深入MIDI的結(jié)構(gòu)并用mido庫進行實戰(zhàn)操作分享一些我處理音樂數(shù)據(jù)時踩過的坑和總結(jié)的技巧。2. MIDI文件結(jié)構(gòu)深度解析要熟練地用代碼操作MIDI不能只停留在“它是一組指令”的概念上必須理解其內(nèi)部是如何組織的。一個標(biāo)準(zhǔn)的MIDI文件SMF就像一部音樂劇的完整劇本它包含了所有演員音符的出場時間、臺詞音高、情緒力度以及舞臺燈光和布景的變換控制信息。2.1 核心構(gòu)成軌道與消息一個MIDI文件主要由兩部分構(gòu)成軌道Track和消息Message。你可以把整個MIDI文件想象成一個多軌錄音機。文件頭Header Chunk定義了全局信息比如格式是單軌、多軌同步還是多軌獨立、軌道數(shù)量以及時間基準(zhǔn)Ticks per quarter note 即一個四分音符包含多少個“時間滴答”這決定了時間的精度。緊接著的是一個個軌道塊Track Chunk。通常第一個軌道Track 0是特殊的它不包含音符只存放元消息Meta Message比如曲目標(biāo)題、版權(quán)信息、速度Tempo 單位是微秒每拍和拍號Time Signature等。從Track 1開始才是真正的音樂數(shù)據(jù)軌道比如鋼琴軌、鼓軌等。每個軌道由一系列按時間順序排列的消息組成。這是MIDI的精髓。消息分為幾大類通道消息Channel Messages這是最主要的部分需要指定一個通道0-15。最常見的就是note_on 音符開啟。參數(shù)包括channel通道note音高編號60代表中央Cvelocity觸鍵力度0-127。note_off 音符關(guān)閉。參數(shù)包括channelnotevelocity釋放力度通常也用來表現(xiàn)觸感。control_change 控制改變。用于調(diào)制輪、音量CC7、聲像CC10、延音踏板CC64等。參數(shù)是channelcontrol控制器編號value值0-127。program_change 音色改變。用來切換樂器音色例如從鋼琴program 0切換到弦樂program 48。系統(tǒng)消息System Messages與特定通道無關(guān)如系統(tǒng)專用信息SysEx常用于傳輸廠商特定的數(shù)據(jù)。元消息Meta Messages如前所述存放文本、速度、拍號、音軌結(jié)束等非演奏信息。這里有一個關(guān)鍵概念增量時間Delta Time。MIDI文件中的消息并不是存儲絕對時間而是存儲距離上一條消息過去了多少“滴答數(shù)”ticks。這種相對時間的存儲方式非常高效。例如一條消息的time為120意味著從上一條消息執(zhí)行后等待120個ticks再執(zhí)行本條消息。2.2 時間與節(jié)奏的量化Ticks與Tempo理解時間系統(tǒng)是避免音樂播放速度混亂的關(guān)鍵。文件頭中的ticks_per_beatPPQ是分辨率。假設(shè)ticks_per_beat 480那么一個四分音符就占據(jù)480個ticks。而實際播放速度由速度元消息set_tempo決定它的單位是微秒每四分音符microseconds per quarter note。一個常見的默認速度是tempo 500000即50萬微秒0.5秒一個四分音符換算過來就是每分鐘120拍BPM 60,000,000 / 500,000。所以一條time240的消息在ticks_per_beat480且tempo500000的情況下它的實際延遲時間是(240 / 480) * (500000 / 1,000,000) 0.5 * 0.5 0.25秒。注意很多新手會混淆time字段的含義。在從文件讀取時message.time是增量時間單位是ticks。但在構(gòu)建消息準(zhǔn)備寫入時mido允許你直接使用time作為增量時間或者使用MidiFile的tick相對時間。在實時播放或生成文件時必須確保時間系統(tǒng)的一致性。3. 使用mido庫進行MIDI文件操作安裝mido非常簡單pip install mido。它還有一個可選依賴python-rtmidi用于實時MIDI端口輸入輸出如果不需要實時功能僅讀寫文件則不需要安裝。3.1 讀取與解析窺探MIDI的細節(jié)讓我們從一個簡單的讀取例子開始看看如何獲取文件的全局信息和遍歷所有消息。import mido # 1. 讀取MIDI文件 midi_file mido.MidiFile(example.mid) # 2. 打印文件頭信息 print(f文件類型: {midi_file.type}) print(f軌道數(shù): {len(midi_file.tracks)}) print(f時間分辨率 (ticks per beat): {midi_file.ticks_per_beat}) # 3. 遍歷所有軌道和消息 for i, track in enumerate(midi_file.tracks): print(f\n--- 軌道 {i}: {track.name if hasattr(track, name) else 未命名} ---) # 累計絕對時間單位ticks用于分析 absolute_time 0 for msg in track: absolute_time msg.time # 格式化輸出顯示絕對時間和消息內(nèi)容 print(f[{absolute_time:6d} ticks] {msg})這段代碼會輸出類似這樣的內(nèi)容文件類型: 1 軌道數(shù): 3 時間分辨率 (ticks per beat): 480 --- 軌道 0 --- [ 0 ticks] meta message track_name namePiano time0 [ 0 ticks] meta message time_signature numerator4 denominator4 clocks_per_click24 notated_32nd_notes_per_beat8 time0 [ 0 ticks] meta message set_tempo tempo500000 time0 [ 0 ticks] meta message end_of_track time0 --- 軌道 1 --- [ 0 ticks] meta message track_name namePiano Right Hand time0 [ 0 ticks] meta message program_change channel0 program0 time0 [ 0 ticks] control_change channel0 control7 value100 time0 [ 120 ticks] note_on channel0 note60 velocity90 time120 [ 360 ticks] note_off channel0 note60 velocity64 time240 ...通過遍歷你可以清晰地看到音樂是如何被“搭建”起來的。track.name屬性通常由第一個track_name元消息設(shè)置。program_change消息將通道0的音色設(shè)置為0通常是原聲鋼琴。control_change消息將通道0的音量CC7設(shè)置為100。隨后在120 ticks后中央Cnote 60以90的力度被按下再經(jīng)過240 ticks后松開。3.2 創(chuàng)建與編輯從零構(gòu)建你的旋律創(chuàng)建新的MIDI文件給了你最大的自由度。下面我們創(chuàng)建一個簡單的C大調(diào)音階。import mido from mido import MidiFile, MidiTrack, Message, MetaMessage # 1. 創(chuàng)建MIDI文件和軌道 mid MidiFile() track MidiTrack() mid.tracks.append(track) # 2. 在軌道0第一個軌道設(shè)置元信息 # 設(shè)置軌道名稱 track.append(MetaMessage(track_name, nameMy Scale, time0)) # 設(shè)置速度120 BPM (500000 microseconds per beat) track.append(MetaMessage(set_tempo, tempo500000, time0)) # 設(shè)置拍號4/4拍 track.append(MetaMessage(time_signature, numerator4, denominator4, time0)) # 3. 選擇音色Program Change0是原聲鋼琴 track.append(Message(program_change, channel0, program0, time0)) # 4. 添加音符消息C大調(diào)音階C4, D4, E4, F4, G4, A4, B4, C5 notes [60, 62, 64, 65, 67, 69, 71, 72] ticks_per_note mid.ticks_per_beat # 一個四分音符的長度默認480 current_time 0 for i, note in enumerate(notes): # 音符開啟力度100 track.append(Message(note_on, channel0, notenote, velocity100, timecurrent_time)) # 音符持續(xù)一個四分音符480 ticks后關(guān)閉 track.append(Message(note_off, channel0, notenote, velocity64, timeticks_per_note)) # 重置當(dāng)前時間為0以便下個note_on緊接著上一個note_off發(fā)生 current_time 0 # 5. 必須添加軌道結(jié)束標(biāo)志 track.append(MetaMessage(end_of_track, time0)) # 6. 保存文件 mid.save(my_c_scale.mid)關(guān)鍵點解析time參數(shù)的理解在append消息時time參數(shù)表示距離上一條消息的延遲。在上面的循環(huán)中第一個note_on的time0表示立即觸發(fā)。note_off的time480表示在note_on之后480ticks觸發(fā)。下一個note_on的time0意味著它緊跟著上一個note_off發(fā)生從而形成連貫的音階。必須添加end_of_track沒有它一些播放器可能無法正確識別文件結(jié)束。通道選擇通道0-15通常通道9保留給打擊樂在GM標(biāo)準(zhǔn)下。其他通道可以自由分配不同音色。編輯現(xiàn)有文件是另一個常見需求。例如將所有音符的力度整體提高20%但不超過127def boost_velocity(midi_file_path, output_path, factor1.2): mid MidiFile(midi_file_path) for track in mid.tracks: for msg in track: if msg.type note_on and msg.velocity 0: # 注意velocity0的note_on有時用作note_off new_vel int(msg.velocity * factor) msg.velocity min(new_vel, 127) mid.save(output_path)實操心得在修改note_on消息時一定要小心處理velocity0的情況。在MIDI標(biāo)準(zhǔn)中一個力度為0的note_on事件等價于note_off事件。有些文件會用它來結(jié)束音符。如果你盲目地將所有note_on的力度都乘以系數(shù)會把原本為0的力度代表音符結(jié)束也改變導(dǎo)致音符無法正常結(jié)束產(chǎn)生持續(xù)的鳴響。一個健壯的修改器應(yīng)該判斷if msg.type note_on and msg.velocity 0。3.3 高級操作合并、切片與信息提取合并多個軌道如果你有兩個獨立的MIDI文件想把它們的鋼琴軌合并到一起你需要處理時間同步問題。更簡單的情況是在同一個文件內(nèi)合并兩個音樂軌道。def merge_tracks(source_midi, track_index1, track_index2, output_path): mid MidiFile(source_midi) track1 mid.tracks[track_index1] track2 mid.tracks[track_index2] # 創(chuàng)建一個新軌道將所有消息按時間順序合并是一項復(fù)雜任務(wù)。 # 更簡單直接的方法新建一個文件將兩個軌道作為獨立軌道加入類型需為1或2 new_mid MidiFile(type1, ticks_per_beatmid.ticks_per_beat) # 添加元信息軌道 meta_track MidiTrack() meta_track.extend([msg for msg in mid.tracks[0] if msg.is_meta]) # 復(fù)制原文件的元信息 meta_track.append(MetaMessage(end_of_track, time0)) new_mid.tracks.append(meta_track) # 添加第一個音樂軌道 new_mid.tracks.append(track1) # 添加第二個音樂軌道 new_mid.tracks.append(track2) new_mid.save(output_path)提取旋律輪廓音高序列這對于音樂分析或機器學(xué)習(xí)非常有用。def extract_note_sequence(midi_file_path, track_num1, channel0): 提取指定軌道和通道的音符序列音高 開始時間 持續(xù)時間 mid MidiFile(midi_file_path) track mid.tracks[track_num] notes [] # 存儲 (note, start_tick, duration_tick) active_notes {} # 記錄正在響應(yīng)的音符 {note_number: start_tick} current_tick 0 for msg in track: current_tick msg.time if msg.type note_on and msg.velocity 0 and msg.channel channel: # 記錄音符開始 active_notes[msg.note] current_tick elif (msg.type note_off or (msg.type note_on and msg.velocity 0)) and msg.channel channel: # 音符結(jié)束計算持續(xù)時間 if msg.note in active_notes: start_tick active_notes.pop(msg.note) duration current_tick - start_tick notes.append((msg.note, start_tick, duration)) return notes, mid.ticks_per_beat這個函數(shù)返回一個列表包含了每個音符的音高、開始的絕對時間ticks和持續(xù)的ticks數(shù)。結(jié)合ticks_per_beat和tempo信息你可以輕松地將它們轉(zhuǎn)換成秒。4. 實戰(zhàn)應(yīng)用場景與代碼示例掌握了基礎(chǔ)操作后我們可以看看mido能實現(xiàn)哪些有趣的應(yīng)用。4.1 場景一自動生成隨機旋律或伴奏利用隨機數(shù)生成符合音樂理論的簡單模式。例如生成一個在C大調(diào)內(nèi)隨機漫步的旋律import random import mido from mido import MidiFile, MidiTrack, Message, MetaMessage def generate_random_walk_melody(output_path, num_notes50, key_root60): 生成一個隨機漫步旋律限制在某個調(diào)式內(nèi) # C大調(diào)音階內(nèi)的音高相對于根音 scale_intervals [0, 2, 4, 5, 7, 9, 11] # C, D, E, F, G, A, B mid MidiFile() track MidiTrack() mid.tracks.append(track) track.append(MetaMessage(track_name, nameRandom Walk, time0)) track.append(MetaMessage(set_tempo, tempo500000, time0)) track.append(Message(program_change, channel0, program48, time0)) # 弦樂合奏 current_note key_root random.choice(scale_intervals) # 從調(diào)內(nèi)隨機一個音開始 for _ in range(num_notes): # 隨機決定下一步向上、向下或重復(fù)一個步進-1, 0, 1 step random.choice([-1, 0, 1]) current_index (scale_intervals.index((current_note - key_root) % 12) step) % len(scale_intervals) current_note key_root scale_intervals[current_index] # 隨機力度和時長 velocity random.randint(70, 110) duration random.choice([120, 240, 480]) # 八分、四分、二分音符 track.append(Message(note_on, channel0, notecurrent_note, velocityvelocity, time0)) track.append(Message(note_off, channel0, notecurrent_note, velocity64, timeduration)) track.append(MetaMessage(end_of_track, time0)) mid.save(output_path) generate_random_walk_melody(random_walk.mid)4.2 場景二音樂可視化數(shù)據(jù)預(yù)處理將MIDI文件轉(zhuǎn)換為按時間排列的事件列表供前端如p5.js或圖形庫如matplotlib繪制。def midi_to_timeline(midi_file_path, resolution_ms10): 將MIDI轉(zhuǎn)換為一個時間線列表每個時間單位包含當(dāng)前正在發(fā)聲的音符 mid MidiFile(midi_file_path) # 首先我們需要解析出所有音符的起止時間單位毫秒 # 這是一個簡化版本假設(shè)整個文件只有一個速度 tempo 500000 # 默認120 BPM for msg in mid.tracks[0]: if msg.type set_tempo: tempo msg.tempo break ticks_per_beat mid.ticks_per_beat ms_per_tick (tempo / 1000.0) / ticks_per_beat # 每tick的毫秒數(shù) notes [] # (start_ms, end_ms, note, velocity) active_notes {} current_tick 0 # 遍歷所有軌道跳過元信息軌道 for track in mid.tracks[1:]: current_tick 0 for msg in track: current_tick msg.time current_ms current_tick * ms_per_tick if msg.type note_on and msg.velocity 0: active_notes[msg.note] (current_ms, msg.velocity) elif (msg.type note_off or (msg.type note_on and msg.velocity 0)): if msg.note in active_notes: start_ms, velocity active_notes.pop(msg.note) notes.append((start_ms, current_ms, msg.note, velocity)) # 按開始時間排序 notes.sort(keylambda x: x[0]) # 生成時間線這里只是一個示例輸出每個時間片段內(nèi)的音符數(shù) if not notes: return [] end_time max(note[1] for note in notes) timeline [] t 0 while t end_time: active_count sum(1 for start, end, note, vel in notes if start t end) timeline.append((t, active_count)) t resolution_ms return timeline, notes # 使用matplotlib簡單繪制一個鋼琴卷簾視圖 import matplotlib.pyplot as plt import matplotlib.patches as patches def plot_piano_roll(notes): 繪制簡單的鋼琴卷簾圖 if not notes: print(沒有音符數(shù)據(jù)) return fig, ax plt.subplots(figsize(12, 6)) for start_ms, end_ms, note, velocity in notes: # 將音高轉(zhuǎn)換為Y軸位置時間轉(zhuǎn)換為X軸 height 1 width end_ms - start_ms rect patches.Rectangle((start_ms, note - 0.5), width, height, linewidth1, edgecolorblack, facecolorplt.cm.plasma(velocity/127.0), alpha0.7) ax.add_patch(rect) ax.set_xlabel(時間 (毫秒)) ax.set_ylabel(音高) ax.set_title(鋼琴卷簾視圖) ax.set_ylim(30, 90) # 顯示一個常見的音區(qū) ax.grid(True, whichboth, axisy, linestyle--, linewidth0.5) plt.tight_layout() plt.show() # 使用 timeline, note_list midi_to_timeline(example.mid) plot_piano_roll(note_list[:50]) # 只繪制前50個音符以免過于密集4.3 場景三批量處理與文件格式轉(zhuǎn)換你可能有一堆游戲音效MIDI文件需要統(tǒng)一降低音量或者想將Type 0單軌文件轉(zhuǎn)換成Type 1多軌以便在DAW中編輯。mido非常適合這種腳本化的批量操作。import os from pathlib import Path def batch_adjust_volume(input_folder, output_folder, volume_cc7, multiplier0.8): 批量調(diào)整MIDI文件的音量控制信息 input_path Path(input_folder) output_path Path(output_folder) output_path.mkdir(parentsTrue, exist_okTrue) for midi_file in input_path.glob(*.mid): try: mid MidiFile(midi_file) for track in mid.tracks: for msg in track: if msg.type control_change and msg.control volume_cc: msg.value int(msg.value * multiplier) new_name output_path / fvol_adjusted_{midi_file.name} mid.save(new_name) print(f已處理: {midi_file.name}) except Exception as e: print(f處理 {midi_file.name} 時出錯: {e}) def convert_to_type1(input_file, output_file): 將MIDI文件轉(zhuǎn)換為Type 1多軌格式。 注意這是一個概念性示例。簡單地將Type 0文件的所有消息塞進一個軌道并設(shè)為Type 1可能不準(zhǔn)確 因為Type 0所有通道消息都在一個軌道里。更嚴(yán)謹?shù)淖龇ㄐ枰赐ǖ婪蛛x消息到不同軌道。 mid MidiFile(input_file) if mid.type 0: # 創(chuàng)建一個新的Type 1文件 new_mid MidiFile(type1, ticks_per_beatmid.ticks_per_beat) # 創(chuàng)建元信息軌道 meta_track MidiTrack() # 嘗試從原文件復(fù)制全局元信息如速度、拍號 # 這里簡化處理直接使用默認或從第一個消息中提取 meta_track.append(MetaMessage(set_tempo, tempo500000, time0)) meta_track.append(MetaMessage(time_signature, numerator4, denominator4, time0)) meta_track.append(MetaMessage(end_of_track, time0)) new_mid.tracks.append(meta_track) # 將原Type 0的唯一軌道作為第一個音樂軌道加入 new_mid.tracks.append(mid.tracks[0]) new_mid.save(output_file) print(f已轉(zhuǎn)換并保存為: {output_file}) else: print(文件不是Type 0格式無需轉(zhuǎn)換。)5. 常見問題、排查技巧與性能優(yōu)化在實際使用mido處理MIDI文件尤其是來源復(fù)雜、由不同軟件生成的文件時會遇到各種奇怪的問題。這里記錄了一些典型坑點和解決方案。5.1 文件讀取與播放異常問題1讀取文件時報錯“無效的MIDI文件”或“損壞的文件頭”。排查首先用十六進制編輯器或xxd命令查看文件頭幾個字節(jié)。標(biāo)準(zhǔn)MIDI文件應(yīng)以“MThd”開頭。常見原因是文件被截斷、或根本不是MIDI文件可能是誤改了擴展名。解決嘗試用專業(yè)音頻軟件如Ableton Live, MuseScore或MIDI編輯器打開并重新導(dǎo)出。如果文件來自網(wǎng)絡(luò)重新下載。問題2用某些播放器播放時無聲或音色錯亂。排查檢查音色號program_change消息的音色號program是否超出了GMGeneral MIDI標(biāo)準(zhǔn)范圍0-127。一些播放器只支持GM音色表。檢查通道鼓組通常固定在通道10GM標(biāo)準(zhǔn)下是通道9因為從0開始計數(shù)。如果你的音樂數(shù)據(jù)誤用了通道10播放旋律就會聽到打擊樂聲。檢查音量確認是否有control_change消息將音量CC7設(shè)置為0或表達式CC11過低。檢查音符結(jié)束是否有note_on消息沒有對應(yīng)的note_off消息導(dǎo)致音符一直持續(xù)可以用我們之前寫的extract_note_sequence函數(shù)檢查是否有音符的持續(xù)時間異常地長。解決寫一個診斷腳本打印出所有非元消息檢查通道、音色、控制器值。def diagnose_midi(file_path): mid MidiFile(file_path) print(f診斷文件: {file_path}) for i, track in enumerate(mid.tracks): print(f\n軌道 {i}:) for msg in track: if not msg.is_meta: # 打印關(guān)鍵信息 print(f {msg}) # 特別關(guān)注特定消息 if msg.type program_change: print(f - 音色改變?yōu)? {msg.program}) elif msg.type control_change and msg.control in [7, 10, 11]: ctrl_name {7: 音量, 10: 聲像, 11: 表達式}.get(msg.control, fCC{msg.control}) print(f - {ctrl_name}: {msg.value})5.2 時間與節(jié)奏處理陷阱問題3自己生成的MIDI文件播放速度不對或者音符時長感覺不對。原因混淆了增量時間Delta Time和絕對時間Absolute Time或者錯誤理解了ticks_per_beat與tempo的關(guān)系。黃金法則讀取時msg.time是距離上一條消息的增量ticks。寫入/構(gòu)建時當(dāng)你append一條消息你設(shè)置的time參數(shù)是它距離你添加的上一條消息的延遲ticks。計算實際時間實際秒數(shù) (累計ticks / ticks_per_beat) * (tempo / 1,000,000)。技巧在構(gòu)建復(fù)雜節(jié)奏時可以先用絕對時間以ticks為單位計算好每個事件的時刻再轉(zhuǎn)換為增量時間列表。def build_from_absolute_times(absolute_times, messages): 根據(jù)絕對時間列表和消息列表構(gòu)建軌道 track MidiTrack() last_time 0 for abs_time, msg in zip(absolute_times, messages): delta abs_time - last_time msg.time delta track.append(msg) last_time abs_time track.append(MetaMessage(end_of_track, time0)) return track問題4合并或剪切MIDI片段后開頭有奇怪的停頓或速度突變。原因每個軌道開頭可能有一個初始的time值即第一條消息的delta time如果這個值很大就會產(chǎn)生停頓。另外速度元消息set_tempo可能被錯誤地復(fù)制或丟失。解決在合并軌道時確保正確處理軌道開頭的初始time。通常在拼接時第二個軌道的第一個消息的time應(yīng)該設(shè)為0或根據(jù)需要調(diào)整并將其delta time加到后續(xù)消息的時間上。同時確保最終文件只有一個全局速度軌道通常是第一個軌道或者所有軌道有統(tǒng)一的速度設(shè)置。5.3 性能與內(nèi)存優(yōu)化問題5處理非常大的MIDI文件如包含整個交響樂樂譜時速度慢或內(nèi)存占用高。mido在讀取文件時會一次性將所有消息加載到內(nèi)存的MidiTrack對象中。對于超大型文件這可能成為瓶頸。優(yōu)化策略流式處理如果不需要隨機訪問所有消息可以邊讀取邊處理。mido的MidiFile在迭代時就是流式的但track對象已經(jīng)加載完畢。對于極端情況可以考慮使用更低層的庫如python-midi但已不維護或直接解析二進制文件。選擇性加載如果你只關(guān)心特定通道或特定類型的消息可以在遍歷時快速跳過不關(guān)心的消息。使用copy()方法當(dāng)需要修改消息時如調(diào)整力度直接修改msg.velocity會改變原始對象。如果后續(xù)還需要原始數(shù)據(jù)使用msg.copy()來創(chuàng)建副本進行操作。避免深度嵌套循環(huán)如果需要對音符進行復(fù)雜的關(guān)聯(lián)分析如查找和弦先將音符數(shù)據(jù)提取到更高效的數(shù)據(jù)結(jié)構(gòu)如Pandas DataFrame或列表的列表中再進行操作比在龐大的消息列表上多次遍歷要快得多。# 示例流式處理僅統(tǒng)計C5以上高音音符的數(shù)量 def count_high_notes(file_path, threshold_note72): mid MidiFile(file_path) high_note_count 0 for track in mid.tracks: for msg in track: if msg.type note_on and msg.velocity 0 and msg.note threshold_note: high_note_count 1 return high_note_count5.4 與其他庫的協(xié)作問題6如何將MIDI數(shù)據(jù)用于機器學(xué)習(xí)或更復(fù)雜的音樂分析mido提供了底層的MIDI消息訪問。對于更高層的音樂表示如音符序列、和弦、節(jié)奏模式通常需要轉(zhuǎn)換成其他格式。常用方案Music21一個強大的音樂學(xué)分析庫可以直接讀取MIDI文件進行樂理分析調(diào)性、和弦、音階等。你可以用mido做預(yù)處理再用music21做分析。PrettyMIDI另一個優(yōu)秀的庫專注于將MIDI文件轉(zhuǎn)換為易于操作的音符起止時間列表單位是秒并提供了生成、操作這些數(shù)據(jù)的接口非常適合音樂信息檢索MIR和機器學(xué)習(xí)。自定義表示如前文extract_note_sequence函數(shù)所示你可以將MIDI轉(zhuǎn)換成(pitch, start_time, duration, velocity)的列表或者進一步量化為基于固定時間網(wǎng)格的鋼琴卷簾矩陣一個二維數(shù)組行是音高列是時間步這是很多深度學(xué)習(xí)模型如MusicVAE, MuseNet的輸入格式。# 使用pretty_midi庫進行轉(zhuǎn)換示例 import pretty_midi import numpy as np def midi_to_piano_roll_matrix(midi_path, fs100): 將MIDI轉(zhuǎn)換為鋼琴卷簾矩陣每秒fs幀 pm pretty_midi.PrettyMIDI(midi_path) # 將所有樂器合成一個鋼琴卷簾 piano_roll pm.get_piano_roll(fsfs) # 形狀為 (128, 時間幀數(shù)) # 鋼琴卷簾的值是力度可以二值化或保留力度值 binary_pr (piano_roll 0).astype(np.float32) return binary_pr, fs處理MIDI文件就像在指揮一個數(shù)字樂隊mido給了你指揮棒和樂譜。從簡單的文件信息讀取到復(fù)雜的音樂生成算法理解其消息機制和時間系統(tǒng)是關(guān)鍵。我個人的體會是在開始一個音樂編程項目前先用mido寫個小腳本把目標(biāo)MIDI文件的結(jié)構(gòu)和內(nèi)容打印出來仔細看看往往能發(fā)現(xiàn)一些意想不到的細節(jié)比如那些奇怪的控制器事件這比直接悶頭寫代碼要高效得多。最后多聽多試把生成的文件丟進DAW或播放器里實際播放是檢驗代碼效果最直接的方法。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
九九激情网| 五月丁香六月婷婷综合网站| 碰99在线| 激情丁香五月婷婷| 国产 码在线成人网站| 人妻久久久久久久| 久久五月天色| 亚洲区视频| WWW.五月com| 亚洲免费看片| 日本综合久久| 激情综合网五月丁香| www.99视频| 五月天社区婷婷丁香社区| 六月婷婷久久大全| 久久婷婷大香蕉| 国产婷婷综合| 一月婷婷色色| 五月丁香六月婷| 深爱激情四射| 激情桃色网| 五月丁香色色色| 五月丁香网站| 久久这里99| 99热9999| 日韩欧美性爱| 五月婷婷色欲| 99视频| 人人干人人操人人摸人人做| 国产97色在线| 97欧美在线| 超pen个人视频97| 99色热视频| 操丝袜视频影院导航| 国产免费av网站| 狠狠草在线观看| 婷婷五月激情五月激情| 开心激情网五月| 激情四射五月天| 婷婷视频在线| 人人人操 超碰| 泰州成人视频| 日本高清久久| 中文幕无线码中文字蜜桃| 大香蕉婷婷五月天| 色色激情五月| 六月香五月婷| 色色丁香婷婷综合| 啪啪啪综合网| 五月丁香拍拍激情综合| 色婷婷五月综合在线| 亚洲综合草草| 人人搡人人| 秋霞九九无码| 黄色五月婷| 久久曰9| 综合久久婷婷| 东京热免费视频| 中文激情网| 激情网站综合五月天| 亚洲婷婷丁香五月| 五月婷丁香花| 五月婷婷啪啪啪| 中文字幕在线视频播放| 亚洲情欲久久| 97色97干| 婷婷色婷婷亚洲成人| 精品久久婷婷| 亚洲性受XXXX五月丁香| 51成人| AV成人在线播放| 丁香综合久久| 超碰人人操人人干| 美女100%露全身无挡网站| 色婷婷狠| 五月天婷五月天综合网在线观| 婷婷五月综合婷婷| 色五月婷婷五月丁香五月| 久久6这里只有精品| 丁香五月AV在线| 色噜噜97视频在线观看| 色色丁香五月婷婷| 色婷婷视频在线| 可以免费观看的av| 婷婷久久网| 日本九九九九| 九九美女视频| 婷婷国产综合| 成人五月天在线观看| 丁香六月天婷婷在线| 亚洲色情一区二区三区四区| 国产激情综合五月久久| 欧美交换配乱吟粗大25P| 国产亚洲精品AAAA片APP| 亚洲日本韩国| 激情四射婷婷| 色五月婷婷婷婷| 精品五月天| 伊人九九热| 九色视频91疯狂| 涩涩五月天综合| 天天综合永久| 超碰成人电影| 欧美日本不卡黄色片| 日噜噜色| 深爱激情网五月| 婷婷伊人久久综合| 激情六月天| AV人人操| 麻豆AV一区二区三区| 国内9l视频自拍老熟女九色| 色婷婷AV在线| 色五狠狠| 伊人久久婷婷| 五月香蕉婷婷| 裸体美女丁香五月天。| 日本无码专区| www.夜夜操.con| 人人摸人人搞| 婷婷亚洲在线| 亚洲AV激情五月综合网| 丁香六月婷婷久久综合| 99热费观看| 日日操夜夜爽天天天| 人妻操逼视频| 超碰色碰碰| 婷婷五月日本| 夜夜撸天天日| 三十熟女| 久久婷婷六月综合| 天堂美国久久| 五月天开心婷婷久久| 色欲婷婷五月天丁香| 久久久精品人妻| 97人人操人人插| 99久久婷婷国产综合精品草原| 五月婷婷丁香综合网| 91狠狠综合久久久| 丁香五月综合婷婷| 中文字幕丁香五月| 婷婷综合网站| 亚洲成人丁香花| 级情九色| 久久性爱视频网站| 国产韩日亚洲美州欧亚综合在线| 第四色大香蕉| 色欲天天综合| 欧美日韩99| 九九99在线视频| 青青草视频福利| 五月丁香婷婷色| 六月婷婷av| www.婷婷五月| 大香蕉Av在线| 综合AV在线| www.97视频| 丁香香五月激情免费视频| 97干网站| 婷婷六月激情小说网| 99热在线观看| 99干日本| 五月天综合在线| 九月婷婷| 综合亚洲AV| 亚洲成人免费在线| 99re在线视频| 欧美丁香婷婷天天操| 色五月综合激情| 非洲一级AV| 天天做天天爱天天爽在| 丰滿爆乳一区二区三区| 久色婷婷200| 9色资源在线| 99惹精品视频| 五月天激情四射网站| www.99热| 中文网AV| 大香人妻| 久久人妻久久| 天天热夜夜操| 婷婷内射视频在线| 九九热免费视频| 五月伊人综合| 久婷视频| 99免费| 成人日韩欧美| www.夜夜爱.com| 五月丁香婷婷综合| aaaaaa片| 久操人| 婷婷五月天堂| av在线资源| 妻久久人久久| 色情五月天视频网| 亚洲不卡123| 五月激情综合美女久久| 欧美噜噜久久久XXX| 婷婷六月色| 五月丁香久人妻中文| 极品少妇XXXX精品少妇偷拍| 激情五月天综合| 五月丁香婷婷久久| 丁香五月大香蕉在线99| 99日本精品视频热| 亚洲AV成人无码久久精品老人法拉利| 欧美精品99| 久热这里| 综合激情在线| 精品51XX| 99精品视频偷拍| 中文字幕欧美日韩VA免费视频| 性天天中文网| 亚洲综合网激情小说| 久久婷鲁| 天堂无码人妻精品AV一区| 五月丁香六月婷婷开心网| 99爽视频| 视频在线免费观看欧洲乱码| 亚洲深喉aV| 五月色天五月色| 99综合婷婷五月| 无码se| 免费视频WWW在线观看网站| 啪啪色激情五月天| 天堂亚洲 在线| 九九在线精品| 亚洲激情五月天| 婷婷丁香午夜综合影视| 丁香婷婷五月激情| 草榴视频黄色网| 91打屁股视频网站| 可以看的av| 888久久久| 激情视频综合| 97色色色| 久草xx性爱视频| 激情婷婷丁香色五月| 综合在线色婷婷| 激情五月第四色| 99免费偷拍视频| 久草热8精品视频在线观看| 久久66精品| 大香蕉啪啪网| 91性高潮久久久久久久久| 日本玖玖在线| 热久久这里只有三级视频| 久久婷色| 二色av| 中文字幕视频在线播放| 婷婷五月丁香基地| 99热精品10| 婷婷成人综合| 婷婷综合网站| 色色色色五月天| 五月婷婷六月丁香免费| 亚洲操人| 色色色五月婷婷| 玖玖九九超碰| 色婷婷丁香AV综合| 黄色片avv| 91男人操女人视频| 中文字幕丰满孑伦无码专区| 伊人91| 欧洲亚洲激情五月天在线| 激情婷婷九月| 亚洲精级| 精品一区二区三区三区| 少妇婷婷五月天| 久久久噜噜噜www成人| 久操乱| 9九九久久精品无码专区| 91人人爽狠狠狠| 99∨VTV| 少妇综合网| 色五月,婷婷大香蕉| 亚洲免费观看高清完整版AV线| 毛片九九九九九九九九18| 欧美交换配乱吟粗大25P| 可以看的av| 99视频精品在线| 激情久久久| AV性爱在线| 五月婷婷开心五月| 久久在这里99| 欧美顶级少妇做爰HD| 日本欧美成人片AAAA| 久久人妻视频| 影音先锋男士资源网一区| 欧洲综合一区| 婷婷激情六月综合| 丁香六月 婷婷六月| 99毛片| 综合婷婷久久| 免费AV黄在线播放| 婷婷丁香五月在线播放| 成人五月丁香社区| 五月天电影网| 丁香九月综合激情| 丁香六月 人妻| 99.色| 婷婷五月天黄色小说| 天天狠狠六月婷丁香影院| 超碰高清在线| 思思99热| www久久久久久久| 超级碰碰碰碰视频| 99热这里只有精品国产免费| 五月丁香婷婷成人综合网| 丁香五月六月综合激情| 久久婷婷视频| 久久婷婷人人| 五月天激情Av| 久久人人九九| 第四色色色色色丁香五月天| 思思久久99热| 亚洲六月婷婷| 四川BBB搡BBB爽爽视频| 五月丁香啪啪啪综合网| 丁香色情五月综合网站| 大香蕉啪啪啪| 婷婷色片| 丁香婷婷啪啪啪| 99精品在线观看| 天天干天天干天天| 激情久久久久久久久| 激情五月婷婷欧美极品| 五月天啪啪| 天天色天天操天天射| 久久大香蕉丁香| 91色逼| 五月天婷婷激情春色小说| 久久作爱| 99ri视频在线播放| 婷婷五月丁香伊人| 五月天久久色| 五月丁香视频在线观看| 丁香五月电影| 中美月韩免费A片| 五月丁香六月婷婷玖玖| 性做久久久久久久免费看| 丁香五月色五月| 国产在线另类五月婷婷| 天天色情站| 色色五月婷| 五月丁香六月婷婷在线观看| 91男人资源站| 色玖玖| 欧美性爱5月天天天看| 深情五月天| 欧美经典片免费观看大全| 99视频在线观看网址| 五月丁香六月婷婷综合免| 欧美三级视频| 午夜爱爱爱成人| 久草热在线视频| 五月婷婷六月基地| 亚洲A片成人无码久久精品青桔| 丁香五月天婷婷91| 人人射人人高潮| 风流少妇A片一区二区蜜桃| 日本三级中国三级99| 久久人妻人人槡| 少妇AB又爽又紧无码网站| 武则天精品久久| 99视频在线精品| 成人欧美一区二区三区在线观看| 色五月AV| 侠女刀之记忆电影在线看免费| 九九热99视频| 色色色欧美| 99久久久久| 色久影院| 97 A I色色| 人人综合久| 久久98热re| 午夜丁香 婷婷| 性生活久久人妻| 91男同视频| 激情婷婷五月天伊人在线观看| 99网| 中文人妻主播久久| 九九9久九9国产视频| 第四色婷婷最爱| 成人做爰A片免费看视频| 久久99这里只有精品| 思思精品视频| 亚洲欧洲自拍图片专区五月天| 4399成人黄A片| 99热国品免费| 人人操人人妻| 婷婷丁香亚洲色综合91| 狠狠舔| 99热成人| 五月丁香婷婷激情澎湃四射| 97五月婷婷| 激情六月丁香| 色五月在线| 日韩国产在线精品| 婷婷丁香五月婷婷| 丁香五月激情婷婷视频| 激情文学综合婷婷五月天丁香花| 日韩在线婷婷五月天综合| 婷婷丁香激情五月天色色色| 丁香六月婷婷综合| 激情宗合哪里能看| Caoporn公开| 日本99在线| 国产激情久久久| 国产熟妇的荡欲午夜视频| 99久热在线精品| 91919191919久久成人视频| 久久久五月婷婷| 色九月国产| 日韩亚洲视频| 久久久婷婷五月天| 在线视频99| 99热永久在线观看| 婷婷激情综合色五月久久91| www.夜夜操| 99这里只有精品在线观看| 五月丁香趴趴| 青柠影视免费高清电视剧| 99精品大片| 色99在线| 4399无码视频| 久久99久久99精品免视看婷| 六月丁香成人网| 日韩无码专区| 99免费青青蜜臀| 婷婷五月成人| 在线观看免费狠狠色丁香香综合| 色五月婷婷视频| 97碰碰视频| 日本不卡高字幕在线2019| 久婷五月| 日本熟女内射| 日本婷婷综合精品| 欧美在线操| 男人大jjc女人免费视频| 成人综合视频在线| 天天插,天天射| 婷婷五月天播| 91干| 亚洲一区国产传媒| 人碰91| 麻豆AV一区二区三区| AV在线大香蕉| 五月丁香综合中文| 99视频精品全部观看10| 九九热视频免费| 26uuu国自产精品| 97黑人精品区| 玖色色综合| 中文字幕中文有码在线| 天天综合色| 啪啪激情网| 天天日综合| 久久人妻少妇嫩草AV| 丁香五月婷婷基地| 殴美激情综合网| 亚洲情欲| 天天操天天曰| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 日本九九九九| 五月天国产| 婷婷性爱网| 天天操人人干| 五月婷婷深深爱| 久久A区B区| 婷婷成人五月天一区| 丁香五月婷婷无码AV| 99色综合网| 色欲九区| 激情综合无码| 丁香婷婷人妻| 七七九九色色| 国产va在线视频| 久久久久久草黄色片AV在线观看| 激情小说婷婷小说| 成人狠狠成人狠狠成人狠狠成人狠狠| 激情五月婷婷综合网| 影音先锋激情网| 久久视频这里都是精品| 丁香五月婷婷天激情| 狠狠狠人妻| 婷婷五月天伊人网在线观看视频| 丁香六月婷婷综合在线| 婷婷色色网| 男人的天堂999| 五月丁香网av| 极品五月天| 99re最新地址| 天堂中文国产| 久久99热这里只频精品6学生| 这里只有精彩视频| 婷婷色色综合| 激情视频综合| 激情网五夜婷婷| 日韩抽插操逼| 日夜夜久久| 天天操婷婷| 免费啪啪亚州视频| 风流少妇A片一区二区蜜桃| 亚洲乱码日产精品BD| 好吊兆人妻| 五月婷婷说| 日本va欧美va国产激情| 夜夜骑夜夜操| 在线观看日韩12345区| 久热天堂| 涩涩五月天综合| m色激情网| 激情小说在线视频| 色无码| 色青青电影色五月| www.97碰碰com| 五月婷婷色播视频| 色女伊人| 91干视频| 二色av| 婷色综合| 91精品电影18T| 中文乱子伦视频| 五月婷亚洲精品AV天堂| 激情五月成年| 成人在线网址| 五月停停激情网| 97在线视频人妻九色| 五月天综合在线| 丁香六月婷婷社区| 26uuu亚洲色| 九九热精品99| 五月丁香久久久| 欧美 日韩 成人 在线| 丁香五月色综合色播五月| 婷婷五月视频| 日韩中文字幕| 操碰91| 五月丁香六月色| 99网| 深爱五月月天| 99.N在线视频| 日韩AC在线免费观看| a网站免费观看| 另类综合婷婷五月天欧美视频| 99A片| 亚洲 欧洲 国产 伦综合| 99热欧| 成人短视频在线| 97超级免费无码| 色99在线| 国产精品社区| 激情综合五月| 色五月婷婷丁香凹凸| 色欲九区| 伊人婷婷色| 九九无毛| 亚洲 五月 婷婷 成人| 天天综合色| 色五月五月婷婷| 丁香五月六月综合欧美| 20253AV| 五月丁香婷婷成人伊人网| 婷婷伊人綜合中文字幕小说| 色婷婷88| 人妻久热| 五月丁香激情怕怕| 热99在线精品| 99在线视频免费| 久久视频婷婷视频| 九九婷婷热| 免费试看小视频 99| 欧美性生交XXXXX无码小说| 精品五月视频婷婷在线观看| 99热最新| 五月丁香网av| 丁香激情五月| 婷婷丁香六月影视| 99色免费观看全部| 五月丁香婷婷三级| 久啪欧美| 五月婷婷啪啪啪| 亚洲成人超碰| 99这里只有精品|v| 婷婷五月蜜桃成人桃色丁香| 国产精品扒开腿做爽爽爽A片唱戏 青青草国产亚洲精品久久 | 国产成人av在线| 日韩久久日| 综合伊人狠狠| 综合九九久久| 九九99精品视频| 996er热| 成人片在线播放| 99碰超| 热99这就是精品视频| 色色色99| 凹凸7777操操操| 极品人妻VIDEOSSS人妻| 国产精品久久久久久五月天加勒比| 性生生活大片又黄又| Www.婷婷五月| 婷婷五月天国产性感美女演员久久久久| 夜夜涩涩涩| 嫩草AV久久伊人妇女超级A| 天色综合网站| 婷婷激情四射五月天| 婷婷五月色播| av婷婷丁香 六月| 精品国产一区二区三区四区阿崩| 色狠久| 最新久久网址| 久热在线中文字幕色999舞 | 成人五月天丁香| 亚洲精品色| 激情黄色五月天| 国产人妻人伦精品一区二区| 丁香六月天堂| 亚洲综合在线视频| 婷婷干| 99热在线看片| 色播五月丁香婷婷| 九九99在线| 婷婷深爱五月天| 狠狠操狠狠做| 99久久久久| 婷婷五月天淫荡| 91视频综合网| 天天射天天射一道本日本社区 | 九九九九九九九九九九九九九国产精品| 深爱五月天| 五月噜噜噜色综合| 午夜免费高清AV片| 嫩草AV久久伊人妇女超级A| 中国AV性爱观看| 99热这里有精品首页10| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 日韩啊啊啊| 狠狠操之狠狠操| 色五月综合激情| 97久久人人| 丁香综合| 天天爽人人综合免费7799| 五月激情偷拍婷婷| 久热九九| 91热网址| 热99色| 色玖玖| 综合图片色色| 婷婷综合五月色播| 久久五月天激情婷婷| 亚洲色综久久五月| 超级碰碰97在线| 五月丁香激情啪啪| 丁香六月激情| 米奇影视资源婷婷狠狠色激情欧美五月丁香| 五月丁香久久激情综合| 狠狠色婷婷| 成人五月天丁香| 九九久热| 可以直接看的AV网站| 丁香六月激情| 九九热精品| 丁香五月在线自慰| 草五月| 婷婷丁香综合| 襙逼网| 爱操人妻| 曰曰久久| 欧美人久久| 亚洲免费在线观看岛国| 开心五月婷婷伊人| 99久久欧美| 婷婷爱五月天| 91蜜桃婷婷狠狠久久综合9色| 99视频只有精品| 久久久精品色| 亚洲综合婷婷| 丁香五月天激情综合网| 人妻五月天激情开心网| 久er7久热| 26uuu四色| 婷婷五月天改成什么了| 26uuu.| 五月伊人综合| 五月综合视频在线| 怕怕av| 久草五月天电影网| 99热这里只有精品热| 五月婷婷天| 欧美色宗和激情| 中文字幕综合| 中文字幕在线免费观看视频| 99视频久久| 九九黄色网| 成功精品影院| 成人国产欧美大片一区| 五月天开心色色网| 97超碰99热99| 婷婷va| 亚洲五月天色色| 91视频五月丁香| 91综合国免费久入| 伊人春天av| 久久五月丁香六月婷| 丁香五月婷婷激情123| 久久这里99| 久久性爱视频久久性爱视频| 操操操Av| 人妻人人操| 99精彩视频| 日韩专区五月天婷婷丁香| 中文字幕av久久爽| 婷婷五月综合网| 五月天婷婷黄色视频| 天天草婷婷五月| 丁香五月欧美色综合| 婷婷色正月| www.91九色| 婷婷亚洲综合| 天天操天天插天天射| 97干在线播放| 操国产人妻| 婷婷五月天啪啪| 超碰免费大香蕉| 成人精品视频99在线观看免费| 九九色网专区| 涩综合网| 五月丁香六月婷婷综合伊人| 婷婷丁香五月综合免费视频百花| 九九在线精点品| 国产真人做爰视频免费| 97碰在线免费观看| 色五月之第四色| 久久五月综合| 亚洲色五月| 99热99日天天干| 亚洲黄色av网站| 五月婷婷开心亚洲无| 激情五月亚洲综合网| 色综合五月天| 色亭亭影园| 操婷婷久久| 五月婷丁香花| 五月婷久草| 欧美99| 可以直接看的AV| 国产做爰视频免费播放| 国产avapp 网| 日韩在线aaa| www.天天日| 91日精品| 天天摸日日舔狠狠添婷婷婷| 99操逼| 香蕉97碰碰碰欧美| 久热9| www激情| 九九99九九精品免费 | 丁香婷婷浪潮AV久久综合| 久久激情视频| 婷婷五月影院| 亚洲成人日韩无码精品| 丁香五月激情天AV无码| 在线观看婷婷5月| 五月天福利影院导航| 婷婷五月激情综合| 人人摸人人干| 在线综合啪| 婷婷五月丁香激情色情| 五月婷在线| 色色999三级片| 九九视频这里只有精品在线播放 | 五月花婷婷| 六月婷婷激情| 亚洲AV日韩无码| 五月天婷婷久草丁香| 九九色99| 五月综合激情啪啪啪啪啪| 欧美色色色色色色色| 五月天婷婷综合免费| 色婷婷狠狠18yy| 欧美亚洲操逼| 黄色热99| 开心五月综合激情综合五月| 国产精品18久久久| av在线超清中文| 亚洲色婷婷| 另类激情四射| 超碰资源在线| 色天使色婷婷| 日本三久久| 久热69| 色色色在线观看| 色蜜婷婷| 成人电影AV在线观看| 99精品97| 欧美伊人9| 天天爱天天操| 美女91一起草| 色欧美影院| 97人人爱人人操| enecarbon-materials.com污K127封锁请涟系@wip1688 | 国产婷婷色五月| 日韩视频99| 婷婷6月综合网| 91色在线/日韩| 激情丁香六月| 在线只有精品| 婷婷五月天无码视频| 国产亚洲精品AAAAAAA片| 亚洲爱爱无码婷婷色五月| 精品一二三区久久AAA片| 五月天婷婷色小说| 黄桃AV无码免费一区二区三区| 激情婷婷五月天伊人在线观看| 蜜桃人妻无码AV天堂三区| 伊人六月无码视频| 色99久草在线| 丰满人妻一区二区三区| 色五月综合在线| 综合色99| 日本在线噜噜| 久热99视频在线观看| 亚洲日日日| 欧美 日韩 成人| 九九热中文| 色999亚洲人成色| 亚州精品久久久久AV无码| 伊人五月丁香| 98永久精品| 无码人妻丰满熟妇奶水区码| 综合久久久| 婷婷婷婷婷婷婷婷| 99视频综合网| 中文字幕av在线播放| 人妻久久久久| 九九热视频免费的| 九九热免费视频| 五月丁香六月婷婷网站| 99热这里都是精品| 激情五月婷| 五月天天丁香婷婷| 99热网址| 激情99。| 999热这里只有精品| 久久婷五月| 亚洲狠狠色丁香婷婷综合久久| 色噜婷婷| 天天做天天爱高潮片| 五月婷婷影视| 日韩成人电影在线播放| 97色色网| 少妇出轨做爰高潮A片| 久艹久| 天天做天天爱天天爽夜夜揉| 亚洲超碰青涩| 色婷婷a v| 色。 婷婷婷| 66成人网| 久久久8| 99在线视频网址在线观看| 久久久99免费视频| 五月婷婷综合色啪首页| 久青操| 亚洲在线免费成人| 超级碰 久久9| 色色日韩| 五月婷婷69| 伊人婷婷五月天| 碰碰碰91| 婷婷五月天色网久| 五月天丁香成人社| 91干婷婷| 色很很96| 五月丁香网站| 亚洲精品国产A久久久久久| 色玖玖导航| 激情五月综合色婷婷| 狠狠久久婷五月| 免费一区二区三区| 亚州激情网| 色九亚洲| 婷婷香蕉香| 这里只精品| 婷婷丁香花五月天| AⅤ在线播放网| 婷婷成人综合免费视频| 97色在线观看视频| 亚洲182在线观看| 五月天激情四射| 狠狠草狠狠草| 五月天丁香色色| 欧美五月丁香在线| 亚洲熟女色| 综合超碰熟| 开心五月婷婷在线| 婷婷综合| 午夜大香蕉| 五月婷婷日| 婷婷五月色花丁香社区| 伦99热| 九九在线精品| 91互操| 这里有精品2| 成人国产欧美大片一区| 五月丁了香蕉综合| 亚洲五月婷婷| 日本97久久久精品| 亚洲人成人五月天| 色五月,com| 情欲综合网| 色欲久久综合| 六月丁香婷婷五月天| 99久在线观看| 69久久99精品久久久久| 亚洲色网络| 92久久久| 一级操逼内射在线视频| 久久无码成人| 99精品视频免费观看,| 婷婷五月天成人网| 日韩 欧美 国产 一区 二区| 婷婷五月无码| 99啪啪视频| 这里只有精品免费在线视频| 人人爱人人草| 91chinese 在线| 国产美女视频久| 免费人人操| 丁香婷五月天开心六月| 五月亭大香蕉| 日本爆乳片手机在线播放| 四川操逼站| 色噜噜狠噜噜视频| 日本人人干| AV在线免费播放| 久久久99久久| 拳交大逼| 日韩精品电影| 婷婷五月天成人网| 另类激情四射| 日韩无码专区| 丁香六月激情| 狠狠穞A片一區二區三區| 女性自慰系列第五页| 夜夜撸夜夜骑| AV天堂淫乩| 四川BBB搡BBB搡多人乱亂| 美女激情婷婷| 丁香五月玖玖| 性爱视频久久| 丁香九月婷| 大香蕉520| 99热热九九| 免费超碰在线观看| 日本久久爱| 丁香五月婷婷偷拍| 丁香六月激情综合| oumeisesewang| 搡BBBB搡BBB搡18| 97好吊操| 六月丁香狠狠爱| 无码区婷婷五月花开| 在线观看熟女少妇| 亚洲爆乳无码精品AAA片蜜桃| 丁香六月天色婷婷| 婷婷伊人綜合中文字幕| 青青草日本亚洲| 色综合久久无码| 丁香婷婷色九月| 五月天国产成人| 丁香婷婷老熟女综合网| 国产这里只有精品| 丁香婷婷人妻| 蜜臀综合久草| 五月婷婷深深爱| 思思久ren热| 超碰2021| 婷婷天堂站| 亚洲女婷婷五月基地综合久久久| 秋霞少妇毛片| 色综合伊人网| 激情六月一二| 97视频91| av高清无码| 99九九在线视频| 九九sese| 99热观看| 六月丁香五月婷婷| 婷婷丁香五月高清| 丁香五月成人| 欧美人人草草| 99热首页| 激情五月天伊人av| 日本色色网| 青青久久91| 大香线蕉伊人| 青青草伊人婷婷| 亚洲婷婷91丁香| 婷婷综合网伊人| 欧美日韩成人一区二区| 99久久久99久久91熟女| 久久99成人性爱高清视频| 91黄操| 蜜臀综合久草| 很很干天天干| 婷婷伊人久久综合| 久久久人妻不卡| 日韩久操婷婷| 99成人| 久婷婷婷| 激情五月丁香综合网站| 日本老女人黄页在线播放| 九九色黄色| 色色热| 狠狠人人婷婷| 狠狠干激情五月| 日韩黄黄| 超级97碰碰| 日日干天天| 日本美女五月天| 五月婷在线色视频| 五月天色色激情综合| 综合久久综合五月天婷婷| 五月天激情视频| 丁香五月影视| 五月天婷婷成人资源站| 久久99人人| 色婷婷网| 激情六月丁香| 久久99网| ...婷婷国产成人亚洲日韩| 美欧日韩国产成人在战| 一区操| 野战J办公桌椅H| 婷婷噜噜| 九九热在这里只有精品| 亚洲综合网区| www.99久| 色激情五月| www.玖玖婷婷在线| 激情性爱五月天网页| 天天射影院| 日韩成人网址| 久久婷婷内射| 99视频在线观看网址| 亚洲激情亚洲激情| 色九九丁香九月色九九色| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 欧美69久成人做爰视频| 79精品视频在线观看,| 久99视频在线观看| 色天堂A| 丁香五月婷婷激情中文| 亭亭五月激情亚洲在线| www..com色爱| 日操| WwW天天干| 激情五月网站| 丁香五月激情站| 99 频99热国里只有精品| av在线观看网站| 婷婷丁香六月天激情四射网| 丰满少妇猛烈A片免费看观看| 97在线视频观看| 91超碰在线观看| 婷婷人人操| 色色丁香五月婷婷| 五月天开心色情网| 六月五月久久丁香| 另类激情五月天。| 亚洲成人在线综合| 99操不停| 日本英国美国欧美亚洲国产精亚洲日韩精品在线观看 | 久草婷婷视频| 婷婷综合伊人| 日本不卡高字幕在线2019| 九九re精品视频在线观看| 亚洲乱码w在线观看| 久久综合影院 | 一起草Av| 色婷婷亚洲婷婷| 婷婷激情肏屄网| 激情小说婷婷小说| 夜夜天天久久婷婷| 色综合爱综合| 五月天婷婷永久免费视频| 五月激情婷婷开心| 亚洲激情婷婷| 五月激情网站| 91狠狠色丁香婷婷综合久久精品| 天天干狠狠| 国产av天堂| 日本WwW色偷偷丁香花久久久京东热| 午夜性做爰电影| 久久免费少妇高潮99精品| 色婷婷无吗| 久9热视频在线观看| 狠狠操狠狠爱| 夜夜爽日日躁| Www.激情| 亚洲视频操| 五月天激情图片| 日本欧美成人片AAAA| 激情婷婷五月在线合集| 丁香婷婷五月综合欧美另类| 五月天色软件| 婷婷六月久久| 久久婷婷五月综合精品蜜芽| 国产精品电影| 天天干天天干天天干天天干天天干天天 | 五月天亭亭俺也| 日日撸夜夜操| 五月婷婷六月丁香| 精品热青草| 激情五月天的婷婷| 亚洲精品九九| 久久婷狠狠色| 婷婷六月婷婷| 99视频在线精品免费观看2| 激情五月天色色| 啪啪一区| 亚洲成人在线观看网址| 久久伊人大香蕉| 欧美激情综合色综合| 成功精品影院| 黄桃AV无码免费一区二区三区| 激情操逼婷婷| 91碰九色| 久久久久久草黄色片AV在线观看| 婷婷激情五月综合| 久久亚洲婷婷| 丁香五月婷婷亚洲天堂| 五月婷六月综合在线观看| 婷婷五月天干干| 日韩成人综合网| 草榴视频黄色网| 天天做天天爱天天摸| www.五月天激情| 五月婷丁香| 2022人人操人人看| 色亭亭五月天网扯| 日韩欧美一级大黄网站| 99视频综合网| 人人澡天天色天天做| 国精产品一区一区三区有限公司杨 | 操人妻AV| 开心五月婷婷激情| 日韩aaa| 日韩AV免费看| 九月色婷婷| 新激情五月天天在线网| 婷婷成人基地| 国産精品| 色天五月天在线观看视频| 成人国产欧美大片一区| 欧美色色色色色色色| 婷婷色基地| 99re在线播放| 亚洲在线播放| 丁香欧美| 激情五月激情综合网| 色综合色五月| 欧美婷婷综合| 超级碰碰97在线| 五月天婷婷黄色视频| 五月丁香在线| 色99超碰| 五月花亭亭| 国产婷婷五月天| 激情淫乱男女| 91小黄书网址在线观看| 婷婷色五月激情| 成人视屏在线观看| 99.N在线视频| 丁香五月大香蕉AV| 好激情在线综合网| 思思w99| 欧美日韩91| 草草视频91| 丁香五月手机在线| 大香蕉欧美在线| 五月天网站亭亭| 婷婷影院A成人| 五月亭亭六月激情| 天天天天操| 欧美日韩成人在线网站| 丁香婷婷月| 午夜免费高清AV片| 国产无套精品一区二区| 色五月激情| 五月婷婷丁香五月 | 99 r热| 色五月激情综合| 人人操操| 久久婷婷五月天激情| 月色色综合婷婷网| 久播影院免费观看电视剧大全最新网| 午夜69成人做爰视频| 婷婷六月开心网| 日本99视频| 婷婷在线五月天观看| 中文人妻AV久久人妻18| 色婷婷丁香五月高清在线| 婷婷五月天视频| 伊人狠狠丁香婷婷综合尤物| 极品另类| 日本久久精品18| 91.com男女操| 国产ava| 激情综合色| 丁香五月情色| 婷婷综合久久| 久热这里只精品| 99热主页日本| 欧美一级色| 欧美一级色| 五月色丁香国产在线视频| 国产欧美精品AAAAAA片| 米奇影视资源婷婷狠狠色激情欧美五月丁香| 亚洲精品一区中文字幕乱码| 六月丁香婷婷网| 99国产在线精品视频| 激情九九这里只有精品| 国内在线99视频| 久久欧洲综合网| 久久婷婷激情久久| 五月天成人在线视频网站| 婷久久| 很很干天天干| 色欲日日躁| 久久久噜噜噜操操操| 婷婷综合一二三| 五月伊人网| 涩涩五月天| 五月天中文网| 伊人久久大香线蕉综合网站| 99爱视频在线观看| 色99视频| 国产精品久久久久久妇女6080| 天天日天天干天天插天天射| 99久久偷拍视频| 婷婷色综合| 亚洲综合九九| 亚洲免费看片| 午夜 外网 精品 在线| 丁香性爱在线视频| www.com五月天| 五月香婷婷| 91狠狠色丁香婷婷综合久久狠丁香综合久久精品 | 国产午夜精品一区二区三区四区 | 狠狠五月激情在线| 色婷婷激情Av久久久| 五月综合激情网| 五月丁香久久精品在线观看| 日韩成人中文| 五月婷婷在线观看黄| 操笔无码| 色约约视频一区二区三区四区五区| 欧美日本黄色| 国产精品噜噜在线视频| 99在线爽| 99热99在线| 五月激情婷婷女| 五月婷婷丁香综合| 九九九成人在线视频| 婷婷性爱视频在线|