У меня есть буфер, содержащий образцы синуса, которые я хочу периодически воспроизводить из потока памяти. Есть ли эффективный способ играть в нее, не имея пробелов во времени? Я пытаюсь создать свой собственный генератор сигналов (я знаю, что некоторые библиотеки предоставляют это, но я хочу создать его самостоятельно).периодически воспроизводить звук из потока памяти C#
Платформа Windows Phone 8.1 Silverlight
Update: код берется из этого форума где-то
public static void PlayBeep(UInt16 frequency, int msDuration, UInt16 volume = 16383)
{
var mStrm = new MemoryStream();
BinaryWriter writer = new BinaryWriter(mStrm);
const double TAU = 2 * Math.PI;
int samplesPerSecond = 44100;
{
double theta = frequency * TAU/(double)samplesPerSecond;
// 'volume' is UInt16 with range 0 thru Uint16.MaxValue (= 65 535)
// we need 'amp' to have the range of 0 thru Int16.MaxValue (= 32 767)
double amp = volume >> 2; // so we simply set amp = volume/2
for (int step = 0; step < samples; step++)
{
short s = (short)(amp * Math.Sin(theta * (double)step));
writer.Write(s);
}
}
}
Что вы имеете в виду, "играть в случайном порядке"? И покажи нам свой код. – Luaan
Я обновил сообщение с кодом. Я имею в виду случайным образом, чтобы сигнал воспроизводился без остановок, пока я не скажу ему остановиться – axcelenator
Значит, вы действительно имеете в виду «периодически»? Например. устойчивый тон без перерывов? – Luaan