Ctrl+K

MidiReader

اعلان

public sealed class Strawberry.Sound.Midi.MidiReader

یک ISoundReader که صوت PCM را از یک فایل MIDI سنتز می‌کند، سازگار با سیستم streaming موتور Strawberry.

نکات: الگوهای استفاده: 1. 2. 3. خواننده صوت را به‌درخواست با فراخوانی Read توسط سیستم streaming render می‌کند. Seek وضعیت synth را با پخش دوباره‌ی رویدادهای MIDI از ابتدا تا موقعیت هدف (بدون render صوت) بازسازی می‌کند، سپس render عادی را از آن نقطه از سر می‌گیرد.

پیاده‌سازی: Strawberry.Sound.ISoundReader

سازنده‌ها

MidiReader

یک MidiReader با یک backend synth صراحتاً فراهم‌شده می‌سازد. فراخواننده مسئول طول‌عمر backend است (توسط این خواننده dispose نمی‌شود).

void MidiReader(Stream midiStream, ISynthBackend synthBackend)

پارامترها:

نام نوع توضیحات
midiStream System.IO.Stream stream حاوی داده‌ی فایل MIDI.
synthBackend Strawberry.Sound.Midi.ISynthBackend backend سینت‌سایزر پیش‌پیکربندی‌شده.

MidiReader

یک MidiReader می‌سازد که backend synth را به‌طور خودکار انتخاب می‌کند. سعی می‌کند TinySoundFont native را بارگذاری کند؛ در صورت شکست به ManagedSynthBackend رجوع می‌کند. backend synth متعلق به این خواننده است و توسط آن dispose می‌شود.

void MidiReader(Stream midiStream, Stream soundFont = null, int sampleRate = 44100, int channels = 2)

پارامترها:

نام نوع توضیحات
midiStream System.IO.Stream stream حاوی داده‌ی فایل MIDI.
soundFont System.IO.Stream = null
sampleRate System.Int32 = 44100 نرخ نمونه‌برداری خروجی (پیش‌فرض 44100).
channels System.Int32 = 2 کانال‌های خروجی: 1 یا 2 (پیش‌فرض 2).

ویژگی‌ها

Stream

stream اصلی فایل MIDI (مرجع فقط‌خوانایی).

Stream Stream { get }

BitsPerSample

همیشه 16 (خروجی PCM ۱۶-بیتی برای سازگاری با OpenAL).

int BitsPerSample { get }

SampleRate

نرخ نمونه‌برداری خروجی (مطابق با backend synth).

int SampleRate { get }

Channels

تعداد کانال‌های خروجی (1 = مونو، 2 = استریو).

int Channels { get }

DataSize

کل اندازه‌ی داده‌ی PCM به بایت.

int DataSize { get }

متدها

Read

صوت PCM سنتزشده را در بافر می‌خواند. صوت به‌درخواست با پیشروی در فهرست رویداد MIDI و تغذیه‌ی backend synth render می‌شود.

int Read(byte[] buffer, int offset, int count)

پارامترها:

نام نوع توضیحات
buffer System.Byte[]
offset System.Int32
count System.Int32

خروجی: تعداد بایت‌های نوشته‌شده در بافر، یا 0 اگر در انتهای داده باشد.

Seek

به یک انحراف بایتی در داده‌ی PCM decode‌شده seek می‌کند. وضعیت synth را با پخش دوباره‌ی همه‌ی رویدادهای MIDI از ابتدا تا موقعیت هدف (بدون render صوت) بازسازی می‌کند، سپس نشانگر render را در هدف موقعیت می‌دهد.

void Seek(long offset)

پارامترها:

نام نوع توضیحات
offset System.Int64

ReadAll

کل فایل MIDI را به‌عنوان داده‌ی PCM decode‌شده می‌خواند. ابتدا خواننده را به ابتدا بازنشانی می‌کند، سپس همه‌ی صدا را render می‌کند.

byte[] ReadAll()

Dispose

void Dispose()