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

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

?? midistrm.h

?? windows ce 50 drive program
?? H
字號:
#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.
//      Copyright (c) 1995-2000 Microsoft Corporation.  All rights reserved.
//
// -----------------------------------------------------------------------------

// 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;
    DWORD   m_fxpGain;

    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一区二区三区免费野_久草精品视频
久久久精品日韩欧美| 国内一区二区在线| 欧美欧美欧美欧美| 97久久久精品综合88久久| 欧美白人最猛性xxxxx69交| 欧美性猛片aaaaaaa做受| 2021中文字幕一区亚洲| 亚洲精品免费视频| 国产在线精品一区二区不卡了 | 午夜影院久久久| 高清免费成人av| 精品日韩99亚洲| 五月婷婷综合网| 色狠狠一区二区| 国产精品免费网站在线观看| 国产在线播放一区二区三区| 欧美一区午夜视频在线观看 | 亚洲国产成人私人影院tom| 热久久久久久久| 欧美日韩激情一区| 亚洲综合久久久久| 色欧美日韩亚洲| 国产精品人妖ts系列视频| 韩国av一区二区三区在线观看 | 91成人网在线| 国产精品久久国产精麻豆99网站| 午夜欧美2019年伦理| 欧美亚洲图片小说| 久久国产精品一区二区| 欧美日韩一二三区| 亚洲自拍偷拍图区| 在线成人免费视频| 日韩经典一区二区| 日韩欧美激情一区| 国产一本一道久久香蕉| 精品国产一区二区三区忘忧草| 久久se精品一区二区| 26uuu精品一区二区在线观看| 精品在线亚洲视频| 久久久精品欧美丰满| 99热精品国产| 一区二区三区自拍| 欧美精品18+| 精品一区二区三区视频 | 国产精品影音先锋| 国产视频视频一区| 成人黄色国产精品网站大全在线免费观看| 欧美一级xxx| 国产一区二区电影| 寂寞少妇一区二区三区| 免费日本视频一区| 日韩欧美精品在线| 风间由美一区二区av101| 中文字幕第一区第二区| 91老师片黄在线观看| 91麻豆精品国产91久久久更新时间 | 中文字幕视频一区| 不卡av电影在线播放| 亚洲免费在线视频一区 二区| 欧美中文字幕不卡| 久久99国产精品尤物| 国产清纯白嫩初高生在线观看91 | 中文字幕精品综合| 亚洲欧美一区二区在线观看| 久久九九全国免费| 亚洲免费观看高清完整版在线观看| 一区二区久久久| 国产精品综合久久| 在线视频国内自拍亚洲视频| 欧美成人女星排名| 视频在线在亚洲| av亚洲精华国产精华| 正在播放一区二区| 亚洲图片欧美视频| 国产伦精品一区二区三区免费迷| 国产福利一区二区三区视频在线| 精品久久久久一区| 日韩精品每日更新| 精品成人私密视频| 国产黄色精品网站| 亚洲激情在线播放| 日韩欧美亚洲另类制服综合在线| 国内精品久久久久影院一蜜桃| 1024精品合集| 精品一区二区三区免费播放| 国产一区二区在线观看视频| 精品久久久久久久久久久久久久久| 91麻豆精品秘密| 久久99精品国产.久久久久| 日本精品视频一区二区三区| 国产精品一品视频| 蜜臀91精品一区二区三区| 亚洲精品欧美在线| 中文字幕成人网| 久久久午夜精品理论片中文字幕| 欧美一区二区三区日韩视频| 99精品欧美一区二区蜜桃免费| 日本不卡在线视频| 亚洲成人激情社区| 亚洲欧美激情在线| 国产三级三级三级精品8ⅰ区| 欧美一区二区三区在线视频| 色悠悠久久综合| 97久久久精品综合88久久| 国产麻豆精品在线观看| 精品一区二区三区免费| 久久精品国产色蜜蜜麻豆| 亚洲一二三区视频在线观看| 亚洲特级片在线| 中文字幕在线一区免费| 国产精品丝袜在线| 国产欧美精品一区二区色综合朱莉| www亚洲一区| 国产欧美va欧美不卡在线| 久久精品一区蜜桃臀影院| www久久久久| 国产清纯美女被跳蛋高潮一区二区久久w| 日韩一级免费一区| 欧美成人精品高清在线播放| 欧美α欧美αv大片| www国产精品av| 久久中文字幕电影| 欧美国产成人在线| 亚洲欧美日韩精品久久久久| 18成人在线观看| 亚洲女性喷水在线观看一区| 亚洲女爱视频在线| 亚洲成人中文在线| 蜜桃在线一区二区三区| 久久疯狂做爰流白浆xx| 奇米综合一区二区三区精品视频| 日本不卡一二三| 国产一区二区免费看| 成人精品免费视频| 在线免费观看一区| 这里只有精品99re| 国产亚洲精品久| 亚洲精品视频一区二区| 日本va欧美va欧美va精品| 久久国产精品露脸对白| 成人黄色av电影| 在线观看av一区二区| 精品欧美一区二区久久| 中文字幕二三区不卡| 亚洲精品国产一区二区三区四区在线| 午夜精品福利在线| 国产精品123| 欧美性生活影院| 精品国产乱码久久| 日本一区二区在线不卡| 亚洲香肠在线观看| 国产中文字幕一区| 一本久久综合亚洲鲁鲁五月天 | 亚洲女人****多毛耸耸8| 蜜桃免费网站一区二区三区| 国产99久久久国产精品| 欧洲精品中文字幕| 国产视频在线观看一区二区三区 | 国产69精品久久777的优势| 色婷婷综合久久久中文字幕| 91精品国产欧美一区二区18| 亚洲国产精品t66y| 成人一区二区三区在线观看| 7777精品伊人久久久大香线蕉 | 久久国产欧美日韩精品| 91一区二区在线观看| 欧美日韩国产综合久久| 中文字幕成人在线观看| 蜜臀av性久久久久蜜臀aⅴ流畅| 91色视频在线| 日本一区二区三区四区| 欧美bbbbb| 欧美三级视频在线播放| 91传媒视频在线播放| 亚洲欧美视频在线观看| 国产.欧美.日韩| 久久人人超碰精品| 国内精品久久久久影院薰衣草| 91精品国产乱码久久蜜臀| 中文字幕五月欧美| 99国内精品久久| 亚洲天堂福利av| 欧美日韩一区国产| 亚洲成人动漫精品| 91精品蜜臀在线一区尤物| 亚洲bt欧美bt精品| 欧美一二区视频| 国产电影一区二区三区| 国产精品国产自产拍高清av| 国产激情一区二区三区四区| 中文字幕第一页久久| 91高清视频免费看| 日韩—二三区免费观看av| 久久伊人中文字幕| 国产成人综合亚洲网站| 国产最新精品精品你懂的| 亚洲一区二区三区国产| 欧美高清在线一区| 亚洲欧美乱综合| 日本一区二区视频在线观看|