バージョン

menu_open
警告:あなたのメジャーリリース ( 2023.1.4.8496 ) に該当する最新ドキュメンテーションが表示されています。特定バージョンのドキュメンテーションにアクセスするには、Audiokinetic Launcherでオフラインドキュメンテーションをダウンロードし、Wwise AuthoringのOffline Documentationオプションにチェックを入れてください。
Wwise SDK 2023.1.4
クイックスタートサンプル統合 - MIDI

MIDI 統合例

MIDIイベントは、AK::SoundEngine::PostMIDIOnEvent() 関数を呼び出してポストされます。次のコードが 例を示しています:

  • 初期MIDI パラメータを設定し、
  • イベント名(Wwiseユーザーがつけた名前)または "Wwise_IDs.h"(Wwiseによって生成されるヘッダーファイル)で定義されるイベント ID を使用したイベントポスト。 by Wwise).
#include "Wwise_IDs.h" // IDs generated by Wwise
// After Sound Engine initialization, register a global callback function.
// Be sure to register for callback just before the message queue is processed;
// this will ensure that any newly posted MIDI events are processed during
// the current frame (i.e. immediately after we exit our callback function).
// Obtain Sound Engine audio settings. These are required to determine the time
// equivalent of one audio frame.
AkAudioSettings audioSettings;
(...)
// Callback function used to post MIDI events.
void MIDICallback( bool in_bLastCall )
{
// Post MIDI event(s) if required.
// Take extra care to ensure this code is thread-safe.
// For this example, assume we need to post the note-on and note-off
// events for the same note.
AkMIDIPost aPosts[2];
const AkUInt8 byNote = 60;
const AkUInt8 byChan = 0; // Range 0-15 mapped to MIDI channel range 1-16.
const AkUInt32 uOnSamples = 0; // Note will start at beginning of current frame.
const AkUInt32 uOffSamples = uOnOffset + audioSettings.uNumSamplesPerFrame / 2;
// Note will end mid-frame.
// Note-on
AkMIDIPost& noteOn = aPosts[0];
noteOn.byChan = byChan;
noteOn.NoteOnOff.byNote = byNote;
noteOn.NoteOnOff.byVelocity = 72; // random velocity
noteOn.uOffset = uOnSamples;
// Note-off
AkMIDIPost& noteOff = aPosts[1];
noteOff.byChan = byChan;
noteOff.NoteOnOff.byNote = byNote;
noteOff.NoteOnOff.byVelocity = 0; // not used for note-off
noteOff.uOffset = uOffSamples;
AkUniqueID eventID = AK::SoundEngine::GetIDFromString( "MIDIEventName" );
AK::SoundEngine::PostMIDIOnEvent( eventID, REGISTERED_MIDI_GAME_OBJECT, aPosts, 2 );
}

イベントに関する詳細は、 統合の詳細 - Event(イベント) を参照してください。 MIDIに関する詳細は、 統合の詳細 - MIDI を参照してください。

AkUInt8 byType
See AK_MIDI_EVENT_TYPE_* pre-processor definitions
Definition: AkMidiTypes.h:179
#define AK_MIDI_EVENT_TYPE_NOTE_ON
Definition: AkMidiTypes.h:56
AkMidiChannelNo byChan
Definition: AkMidiTypes.h:180
AKSOUNDENGINE_API AKRESULT RegisterGlobalCallback(AkGlobalCallbackFunc in_pCallback, AkUInt32 in_eLocation=AkGlobalCallbackLocation_BeginRender, void *in_pCookie=NULL, AkPluginType in_eType=AkPluginTypeNone, AkUInt32 in_ulCompanyID=0, AkUInt32 in_ulPluginID=0)
uint8_t AkUInt8
Unsigned 8-bit integer
tNoteOnOff NoteOnOff
Definition: AkMidiTypes.h:225
AkUInt32 AkUniqueID
Unique 32-bit ID
Definition: AkTypes.h:52
Configured audio settings
Definition: AkTypes.h:222
AKSOUNDENGINE_API AkPlayingID PostMIDIOnEvent(AkUniqueID in_eventID, AkGameObjectID in_gameObjectID, AkMIDIPost *in_pPosts, AkUInt16 in_uNumPosts, bool in_bAbsoluteOffsets=false, AkUInt32 in_uFlags=0, AkCallbackFunc in_pfnCallback=NULL, void *in_pCookie=NULL, AkPlayingID in_playingID=AK_INVALID_PLAYING_ID)
AKSOUNDENGINE_API AKRESULT GetAudioSettings(AkAudioSettings &out_audioSettings)
@ AkGlobalCallbackLocation_PreProcessMessageQueueForRender
Start of frame rendering, before having processed game messages.
Definition: AkCallback.h:340
AkUInt32 uNumSamplesPerFrame
Number of samples per audio frame (256, 512, 1024 or 2048).
Definition: AkTypes.h:223
AKSOUNDENGINE_API AkUInt32 GetIDFromString(const char *in_pszString)
uint32_t AkUInt32
Unsigned 32-bit integer
Definition: AkMidiTypes.h:237
#define AK_MIDI_EVENT_TYPE_NOTE_OFF
Definition: AkMidiTypes.h:55
AkUInt64 uOffset
Frame offset (in samples) for MIDI event post
Definition: AkMidiTypes.h:238

このページはお役に立ちましたか?

サポートは必要ですか?

ご質問や問題、ご不明点はございますか?お気軽にお問い合わせください。

サポートページをご確認ください

あなたのプロジェクトについて教えてください。ご不明な点はありませんか。

プロジェクトを登録していただくことで、ご利用開始のサポートをいたします。

Wwiseからはじめよう