Отправляет email-рассылки с помощью сервиса Sendsay

За 2018-12-20

[prg] Re[2]: c#, bass.net, установка независимого звукового устройства на каждый

здравствуйте.

к сожалению при чтении инструкции bass.net большенство классов и методов
статические.
но я нашел метод Bass_SetDevice который может направить звук до
проигрывания.

простой метод GetDeviceIDByName(string dev) который я написал для возврата
индекса нужного устройства и передачи этого индекса выше приведенному методу
решил задачу.

спасибо.

   2018-12-20 15:48:31 (#3597639)

[prg] Re: c#, bass.net, установка независимого звукового устройства на каждый эк

Здравствуйте.

Я не работал с bass.net, но насколько могу судить, тут проблема в том,
что вы во всех своих классах используете один и тот же статический класс
библиотеки, то есть все классы используют один экземпляр bass,
соответственно, если один что-то в нем меняет, он изменяется для всех.

Решением может быть, либо найти возможность создавать отдельный
экземпляр класса bass для каждого вашего класса, либо просто сделать так
чтобы каждый экземпляр вашего класса хранил свое собственное устройство
и когда ему нужно использовать библиотеку переключал её на использование
соответствующего, либо в библиотеки есть возможность указывать
устройство просто как дополнительный параметр, к примеру, во время
воспроизведения файла.

   2018-12-20 11:48:00 (#3597593)

[prg] c#, bass.net, установка независимого звукового устройства на каждый экземп

здравствуйте.

помогите пожалуйста в следующем вопросе.
может это относится не только к bass.net но и вчастности к самому bass.

есть класс, из которого создаются \кземляры в foreach цыкле и инициализирует
bass с нужным звуковым устройством из конфига.

проблема в том, что bass запоминает устройство последнего созданного
инстанса и далее все инстансы выводят звук именно на этот девайс.

что я делаю не так?

фрагмент кода инициализации bass

public class Player
{

public Player(string dev)
{
for (int deviceId = 1; deviceId < Bass.BASS_GetDeviceCount();
deviceId++)
{
BASS_DEVICEINFO device = Bass.BASS_GetDeviceInfo(deviceId);
if (device.name == dev)
{
Bass.BASS_Init(deviceId, 44100,
BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero);
}
}
}

public void showdev()
{

MessageBox.Show(Bass.BASS_GetDeviceInfo(Bass.BASS_GetDevice()).name);
}
}

фрагмент, где создаются инстансы

List<Player> players = new List<Player>();
foreach (Section sec in config) {
var playInstance = new Player(sec["device"].StringValue);
players.Add(playInstance);
}

и цикл, где явно отображаются одинаковые устройства
foreach (Player p in players)
{
p.showdev();
}

как сделать так, что бы для каждого инстанса устанавливалось свое отдельное
устройство?

спасибо

   2018-12-20 07:48:18 (#3597574)