亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? midistrm.h

?? 三星2440 cpu WINCE 5.00板級支持包
?? H
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
#pragma once
// -----------------------------------------------------------------------------
//
//      THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
//      ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
//      THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
//      PARTICULAR PURPOSE.
//
// -----------------------------------------------------------------------------

// Enable to turn on linear interpolation between samples in sine table
// #instructions in inner loop: ~7 added
#define MIDI_OPTIMIZE_LINEAR_INTERPOLATE 0

#define NUMCHANNELS  (16)
#define NUMENVELOPES (4)
#define NUMNOTES     (32)

// Special channel reserved for playing arbitrary tones
#define FREQCHANNEL (NUMCHANNELS)

class CMidiNote;
class CMidiStream;

typedef struct _ENVELOPE
{
    UINT32 Slope;
    UINT32 Count;
} ENVELOPE;

class CMidiNote
{
public:
    UINT32 NoteVal()      {return m_Note;}
    UINT32 NoteChannel()  {return m_Channel;}
    HRESULT NoteOn(CMidiStream *pMidiStream, UINT32 dwChannel, UINT32 dwNote, UINT32 dwVelocity);
    HRESULT NoteOff(UINT32 dwVelocity);
    PBYTE Render(PBYTE pBuffer, PBYTE pBufferEnd, PBYTE pBufferLast);
    PBYTE Render2(PBYTE pBuffer, PBYTE pBufferEnd, PBYTE pBufferLast);

    void GainChange();

    void SetVelocity(UINT32 Velocity)
    {
        // Reset the bytes left value here. This ensures that if a note is going away we bring it back.
        m_dwBytesLeft = (DWORD)-1;

        m_Velocity = Velocity;
        m_dwGain   = Velocity<<9;
        GainChange();
    }

    LIST_ENTRY m_Link;

private:
    static const UINT32 PitchTable[12];                 // Pitch table
    static const ENVELOPE EnvelopeTable[NUMENVELOPES];  // Envelope table
    static const INT16 SineTable[0x101];                // Sine table

    CMidiStream *m_pMidiStream;
    UINT32 m_Note;
    UINT32 m_Velocity;
    UINT32 m_Channel;

    UINT32 m_Index;          // Current index into wavetable
    UINT32 m_IndexDelta;     // Amount to increment index on each sample

    DWORD   m_dwGain;        // gain as set through SetVolume, and reported through GetVolume
    DWORD   m_fxpGain;       // effective gain, after composing with device and class gains.

    DWORD   m_dwBytesLeft;
};

class CMidiStream : public StreamContext
{
public:
    HRESULT Open(DeviceContext *pDeviceContext, LPWAVEOPENDESC lpWOD, DWORD dwFlags);
    DWORD Close();

    PBYTE Render(PBYTE pBuffer, PBYTE pBufferEnd, PBYTE pBufferLast);

    UINT32 DeltaTicksToByteCount(UINT32 DeltaTicks);

    void NoteMoveToFreeList(CMidiNote *pCMidiNote)
    {
        PLIST_ENTRY pListEntry = &pCMidiNote->m_Link;
        RemoveEntryList(pListEntry);
        InsertTailList(&m_FreeList,pListEntry);
    }

    void NoteMoveToNoteList(CMidiNote *pCMidiNote)
    {
        PLIST_ENTRY pListEntry = &pCMidiNote->m_Link;
        RemoveEntryList(pListEntry);
        InsertTailList(&m_NoteList,pListEntry);
    }

    void NoteDone(CMidiNote *pCMidiNote)
    {
        NoteMoveToFreeList(pCMidiNote);
        Release();
    }

    HRESULT NoteOn(UINT32 dwNote, UINT32 dwVelocity, UINT32 dwChannel);
    HRESULT NoteOff(UINT32 dwNote, UINT32 dwVelocity, UINT32 dwChannel);
    HRESULT AllNotesOff(UINT32 dwVelocity);

    DWORD MidiMessage(UINT32 dwMsg);
    HRESULT InternalMidiMessage(UINT32 dwData);
    HRESULT MidiData(UINT32 dwData);

    CMidiNote *FindNote(UINT32 dwNote, UINT32 dwChannel);
    CMidiNote *AllocNote(UINT32 dwNote, UINT32 dwChannel);

    UINT32 DeltaTicksToSamples(UINT32 DeltaTicks)
    {
        return (DeltaTicks * m_SamplesPerTick);
    }

    HRESULT UpdateTempo();

    UINT32 ProcessMidiStream();

    DWORD MapNoteGain(DWORD NoteGain);
    void GainChange();

    DWORD Reset();

protected:
    CMidiNote       m_MidiNote[NUMNOTES];
    LIST_ENTRY      m_NoteList;
    LIST_ENTRY      m_FreeList;
    UINT32          m_ByteCount;
    BYTE            m_RunningStatus;
    UINT32          m_USecPerQuarterNote;     // Tempo, from midi stream
    UINT32          m_TicksPerQuarterNote;    // PPQN, from midi header
    UINT32          m_SamplesPerTick;         // Calculated as (SampleRate * Tempo)/(PPQN * 1000000)
    UINT32          m_DeltaSampleCount;       // # of samples since last midi event (init to 0)
};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品成人在线视频| 国产一区二区三区精品欧美日韩一区二区三区 | 国产真实乱偷精品视频免| 自拍偷拍欧美精品| 亚洲尤物在线视频观看| 色吊一区二区三区| 天天操天天干天天综合网| 欧美视频在线一区| 亚洲一级二级在线| 一本一道波多野结衣一区二区 | 99视频精品全部免费在线| 中文无字幕一区二区三区| 国内一区二区在线| 国产午夜精品久久久久久久| 国产精品一区二区你懂的| 亚洲欧美在线视频观看| 欧美午夜片在线看| 午夜婷婷国产麻豆精品| 日韩精品一区二区三区蜜臀| 精品一区二区三区在线视频| 国产欧美精品日韩区二区麻豆天美| 国产成人超碰人人澡人人澡| 亚洲四区在线观看| 91网站最新地址| 日本不卡123| 欧美激情一区二区三区不卡| 99久久99久久免费精品蜜臀| 一区二区三区日韩欧美精品| 国内精品视频666| 亚洲欧美日韩人成在线播放| 欧美日韩欧美一区二区| 精品中文av资源站在线观看| 久久精品夜色噜噜亚洲a∨| 在线看一区二区| 精品一区二区三区在线观看| 国产精品福利影院| 欧美精品tushy高清| www.66久久| 婷婷亚洲久悠悠色悠在线播放| 精品捆绑美女sm三区| 成人h精品动漫一区二区三区| 亚洲综合色婷婷| 国产亚洲精品7777| 欧美二区三区91| 99热精品一区二区| 久久99精品视频| 亚洲摸摸操操av| 久久蜜臀中文字幕| 久久色.com| 91老师片黄在线观看| 国产福利一区二区三区视频在线 | 亚洲第一会所有码转帖| 国产精品乱人伦| 久久夜色精品国产噜噜av| 欧美高清视频一二三区| 色域天天综合网| 91伊人久久大香线蕉| 国产精品一级二级三级| 久久99这里只有精品| 日韩不卡免费视频| 亚洲线精品一区二区三区八戒| 亚洲欧美在线高清| 中文字幕在线不卡一区二区三区| 2020日本不卡一区二区视频| 欧美成人aa大片| 日韩精品一区二区三区蜜臀 | 国产欧美一区二区精品秋霞影院 | 精品国产伦一区二区三区观看方式 | 一区二区三区资源| 亚洲男同性恋视频| 亚洲一区二区三区中文字幕 | 国产精品久久午夜夜伦鲁鲁| 中文字幕av一区二区三区高| 中文字幕欧美激情一区| 懂色av一区二区在线播放| 狠狠色丁香久久婷婷综合_中 | 91精品国产综合久久久久久久| 欧美日韩午夜在线| 在线不卡中文字幕| 日韩美女一区二区三区| 欧美电视剧在线观看完整版| ww亚洲ww在线观看国产| 久久网站热最新地址| 国产色产综合色产在线视频| 中文字幕av一区二区三区免费看| 中文字幕第一区二区| 亚洲欧美综合在线精品| 亚洲色大成网站www久久九九| 国产精品国产精品国产专区不片| 中文字幕亚洲一区二区va在线| 亚洲欧美日韩人成在线播放| 亚洲五码中文字幕| 蜜臀va亚洲va欧美va天堂| 国产一区二区三区免费播放| 9久草视频在线视频精品| 欧美性猛交xxxxxx富婆| 日韩欧美中文字幕精品| 久久久激情视频| 亚洲三级在线播放| 欧美a级一区二区| 国产精品自拍三区| 在线观看免费一区| 日韩免费一区二区三区在线播放| 久久久不卡影院| 亚洲一区二区三区免费视频| 久久国产精品免费| 99久久综合99久久综合网站| 777精品伊人久久久久大香线蕉| 国产亚洲欧洲一区高清在线观看| ●精品国产综合乱码久久久久| 天堂精品中文字幕在线| 大桥未久av一区二区三区中文| 色天使色偷偷av一区二区| 欧美成人三级电影在线| 亚洲黄色在线视频| 极品尤物av久久免费看| 日本久久电影网| 国产欧美久久久精品影院| 午夜久久久久久久久| 成人综合在线观看| 日韩一区二区三区免费观看| 欧洲激情一区二区| 国产精品久久久久天堂| 亚洲精品中文字幕在线观看| 免费观看日韩av| 色就色 综合激情| 国产精品无人区| 日本视频在线一区| 在线免费观看一区| 亚洲国产成人自拍| 成人h精品动漫一区二区三区| 欧美三级蜜桃2在线观看| 国产亚洲制服色| 国产激情一区二区三区| 久久久精品免费免费| 亚洲综合色视频| 成人激情小说网站| 久久伊人蜜桃av一区二区| 午夜精品久久久久久久| 99久久精品费精品国产一区二区| 欧美tickling挠脚心丨vk| 五月激情综合色| 色婷婷综合激情| 中文字幕二三区不卡| 麻豆成人综合网| 69堂精品视频| 亚洲成人综合在线| 欧美性猛片xxxx免费看久爱| 中文字幕中文字幕在线一区| 国产一区二区三区精品欧美日韩一区二区三区| 在线视频你懂得一区二区三区| 中文字幕av资源一区| 国产成人精品1024| 久久久久国产精品厨房| 久久电影网站中文字幕| 欧美日韩aaaaa| 亚洲高清视频的网址| 欧美丝袜丝交足nylons图片| 亚洲精品国产无天堂网2021| 99精品视频一区二区| 国产精品美女久久久久aⅴ国产馆| 国产精品中文有码| 国产欧美日韩另类一区| 国产成人h网站| 国产精品不卡视频| 91小视频在线观看| 亚洲制服丝袜在线| 欧美人妇做爰xxxⅹ性高电影| 亚洲自拍欧美精品| 9191久久久久久久久久久| 日韩激情一二三区| 欧美一级xxx| 国产精品一二三四| 成人欧美一区二区三区1314| a美女胸又www黄视频久久| 亚洲男女一区二区三区| 欧美日韩电影在线| 蓝色福利精品导航| 国产日韩欧美麻豆| 91在线云播放| 亚洲成人动漫av| 日韩免费一区二区三区在线播放| 韩国视频一区二区| 国产精品三级av| 91久久精品一区二区二区| 视频在线在亚洲| 久久久噜噜噜久久人人看| 92精品国产成人观看免费| 午夜精品久久久久久不卡8050| 日韩精品综合一本久道在线视频| 国产一区二区0| 亚洲丝袜制服诱惑| 91精品国产91久久久久久一区二区| 视频一区二区三区入口| 国产性天天综合网| 欧美视频三区在线播放| 激情综合网最新| 亚洲免费观看高清完整版在线观看 | 国产一区二区在线看| 国产毛片精品一区|