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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? midistrm.h

?? 6410BSP3
?? 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一区二区三区免费野_久草精品视频
综合激情网...| 亚洲视频 欧洲视频| 欧美色图片你懂的| 成人福利视频在线| 国产sm精品调教视频网站| 91国在线观看| 色综合久久久久久久久久久| av午夜一区麻豆| 91在线视频网址| 91网站最新地址| 91免费视频网| 欧美午夜一区二区| 911精品产国品一二三产区| 欧美色手机在线观看| 欧美日韩在线一区二区| 欧美日韩卡一卡二| 欧美综合天天夜夜久久| 91精品国产综合久久国产大片| 777a∨成人精品桃花网| 欧美xxxx在线观看| 国产日韩影视精品| 亚洲色欲色欲www| 五月激情六月综合| 国产中文一区二区三区| 成人av在线一区二区| 色综合天天综合色综合av| 欧美欧美欧美欧美首页| 欧美电影免费观看高清完整版在| 久久九九国产精品| 一二三区精品视频| 激情另类小说区图片区视频区| 成人av影院在线| 欧美日韩一二三| 国产欧美日韩不卡免费| 亚洲午夜av在线| 国产91精品露脸国语对白| 日本韩国视频一区二区| 精品剧情在线观看| 精品国产91亚洲一区二区三区婷婷| 国产日韩亚洲欧美综合| 亚洲一二三四在线| 国产91高潮流白浆在线麻豆| 欧美综合欧美视频| 国产偷v国产偷v亚洲高清| 亚洲成av人片观看| 国产69精品一区二区亚洲孕妇| 欧美三区在线视频| 国产精品国模大尺度视频| 免费高清在线一区| 欧美亚洲日本一区| 国产精品乱人伦中文| 免费在线成人网| 欧美色爱综合网| 日韩理论电影院| 国产.欧美.日韩| 日韩女优视频免费观看| 亚洲电影一区二区三区| av一区二区三区黑人| 久久免费看少妇高潮| 日韩av中文在线观看| 欧美午夜宅男影院| 亚洲欧美福利一区二区| 国产91在线看| 国产欧美日韩综合| 国内精品伊人久久久久av影院 | 91精品1区2区| 成人欧美一区二区三区白人| 国产剧情av麻豆香蕉精品| 日韩欧美一二三四区| 午夜久久久久久| 欧美天天综合网| 亚洲成人黄色影院| 欧美日韩高清一区二区三区| 一区二区三区日韩在线观看| 色综合天天综合网天天看片| 中文字幕亚洲区| 国产不卡高清在线观看视频| 中文字幕乱码日本亚洲一区二区| 国产在线看一区| 久久久亚洲午夜电影| 国产乱码字幕精品高清av| 精品国产一区二区三区久久久蜜月| 首页亚洲欧美制服丝腿| 91精品国产综合久久精品| 日本亚洲欧美天堂免费| 日韩免费看网站| 国产一区二区电影| 国产精品久久久久久久裸模| 99麻豆久久久国产精品免费优播| 亚洲丝袜美腿综合| 91福利国产精品| 日韩成人av影视| 精品国产乱码久久久久久久久 | 亚洲成av人影院在线观看网| 欧美理论在线播放| 久久精品99国产精品| 国产亚洲欧美一级| 不卡的av在线| 婷婷一区二区三区| 久久日韩粉嫩一区二区三区| 成人免费毛片aaaaa**| 一区二区在线观看免费视频播放| 欧洲精品一区二区| 激情图区综合网| 亚洲天堂成人在线观看| 欧美丝袜丝交足nylons图片| 青青草97国产精品免费观看无弹窗版 | 久久福利视频一区二区| 久久精品欧美一区二区三区不卡| 成人av综合在线| 青青草伊人久久| 亚洲精品日韩一| 国产亚洲成年网址在线观看| 91视频91自| 国产毛片精品视频| 亚洲一级二级在线| 久久精品视频在线看| 欧美日本一道本在线视频| 国产99久久久国产精品| 日韩电影在线观看一区| 国产精品国产三级国产| 日韩一区二区三| 色婷婷精品大视频在线蜜桃视频| 久久精品二区亚洲w码| 有坂深雪av一区二区精品| 久久蜜臀精品av| 欧美一区二区二区| 在线精品亚洲一区二区不卡| 成人综合婷婷国产精品久久蜜臀| 日韩国产精品久久久| 一区二区三区免费在线观看| 久久久久国色av免费看影院| 欧美一级二级在线观看| 色噜噜狠狠色综合欧洲selulu| 粉嫩高潮美女一区二区三区| 免费观看久久久4p| 亚洲v日本v欧美v久久精品| 国产精品入口麻豆九色| 337p日本欧洲亚洲大胆精品 | 精品国产乱码久久久久久图片 | 国产一区二区三区综合| 亚洲国产色一区| 亚洲综合色视频| 亚洲精品视频自拍| 国产精品网站在线观看| 国产欧美一区二区精品秋霞影院| 久久五月婷婷丁香社区| 精品理论电影在线观看| 精品国产伦一区二区三区观看方式| 欧美精品高清视频| 欧美日韩精品综合在线| 欧美性大战xxxxx久久久| 欧美在线一区二区| 欧美日韩国产成人在线91| 在线影院国内精品| 欧美亚一区二区| 精品视频资源站| 欧美一级日韩免费不卡| 日韩久久久精品| 久久久高清一区二区三区| 国产农村妇女精品| 国产精品久久一级| 亚洲欧美日韩国产一区二区三区| 亚洲人被黑人高潮完整版| 一区二区三区国产精华| 午夜久久久久久电影| 蜜臀精品久久久久久蜜臀| 韩国女主播成人在线观看| 国产一区视频网站| 97国产一区二区| 在线日韩av片| 884aa四虎影成人精品一区| 欧美大尺度电影在线| 国产精品无人区| 亚洲精品免费在线| 日韩极品在线观看| 国产一区二区不卡| 91亚洲资源网| 日韩精品一区二区三区在线播放| 国产日韩欧美电影| 亚洲综合成人在线视频| 看片的网站亚洲| 成人h精品动漫一区二区三区| 91精彩视频在线观看| 欧美电影免费观看高清完整版在线观看| 精品国产亚洲一区二区三区在线观看| 欧美国产日韩a欧美在线观看| 一区二区在线观看免费视频播放| 免费高清在线一区| 99久久综合99久久综合网站| 欧美高清视频一二三区| 中文字幕二三区不卡| 日韩1区2区3区| 99久久精品久久久久久清纯| 欧美一区二区人人喊爽| 国产精品全国免费观看高清 | 久久久久久久久蜜桃| 亚洲精品写真福利| 黄网站免费久久| 欧美日韩一区二区三区免费看 |