Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пикнуть в правый или левый динамик 
:(
    Опции темы
andrey_pro
Дата 12.4.2013, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.9.2007

Репутация: нет
Всего: нет



Добрый день,

знаю как можно пикнуть звуком через beep, но там задается только тональность и продолжительность
а мне еще нужно пикнуть в правый или левый динамик, причем нужно уметь регулировать громкость звука.

Подскажите в какую сторону капать, может библиотеки такие есть.
PM MAIL   Вверх
Machaon
Дата 14.4.2013, 04:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КаРолЬ АсьКи МуАЛя
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 12.8.2008
Где: М.о. Красногорск

Репутация: 3
Всего: 3



3 варианта:

1)Использовать DirectX.
2)Записать 2 аудиофайла для правого и левого канала и воспроизводить их при надобности.
3)Использовать wmp.dll и менять баланс каналов.

Это сообщение отредактировал(а) Machaon - 14.4.2013, 04:46
PM MAIL ICQ Skype   Вверх
Machaon
Дата 14.4.2013, 05:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КаРолЬ АсьКи МуАЛя
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 12.8.2008
Где: М.о. Красногорск

Репутация: 3
Всего: 3



Тебе подойдет третий вариант:

Код

using WMPLib;

            WindowsMediaPlayer player = new WindowsMediaPlayer();
            player.settings.balance = -100; //левый канал
            player.settings.balance = 100; //правый канал


Незабываем добавить ссылку на библиотеку "WindowsMediaPlayer" в проект.

Это сообщение отредактировал(а) Machaon - 14.4.2013, 05:09
PM MAIL ICQ Skype   Вверх
andrey_pro
Дата 29.4.2013, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.9.2007

Репутация: нет
Всего: нет



Сделал через библиотеку NAudio
вот код если кому нибудь пригодится:

Код

using NAudio;
using NAudio.CoreAudioApi;


MMDeviceEnumerator MMDE = new MMDeviceEnumerator();
MMDeviceCollection DevCol = MMDE.EnumerateAudioEndPoints(DataFlow.All, DeviceState.Active);

MMDevice dev = DevCol.First();
dev.AudioEndpointVolume.Channels[0].VolumeLevelScalar = 1
dev.AudioEndpointVolume.Channels[1].VolumeLevelScalar = 1


Добавлено через 5 минут и 6 секунд
Теперь у меня появилась немного другая задача, нужно это "пиканье" записать в аудиофайл, причем "пищать" должно отдельно для левого и правого динамика.
Как можно это сделать?
PM MAIL   Вверх
Machaon
Дата 17.5.2013, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КаРолЬ АсьКи МуАЛя
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 12.8.2008
Где: М.о. Красногорск

Репутация: 3
Всего: 3



Вот тебе пример:

Код

using NAudio.Wave;
using NAudio.FileFormats;
using NAudio.CoreAudioApi;
using NAudio;
public class WmvClass2
    {
//new version
        private string filePath = "";
        // WaveIn - поток для записи
        WaveIn waveIn;
        //Класс для записи в файл
        WaveFileWriter writer;
        public void StopF()
        {
            if (waveIn != null)
            {
                StopRecording();
                waveIn.Dispose();
                waveIn = null;
                writer.Close();
                writer = null;
            }
 
        }
        public void StartF(string infilePath)
        {
            try
            {
                // MessageBox.Show("Start Recording");
                //listBox1.Items.Add("Start Recording");
                this.filePath = infilePath;
                waveIn = new WaveIn();
                //Дефолтное устройство для записи (если оно имеется)
                waveIn.DeviceNumber = 0;
                //Прикрепляем к событию DataAvailable обработчик, возникающий при наличии записываемых данных
                waveIn.DataAvailable += waveIn_DataAvailable;
                //Прикрепляем обработчик завершения записи
                waveIn.RecordingStopped += new EventHandler(waveIn_RecordingStopped);
                //Формат wav-файла - принимает параметры - частоту дискретизации и количество каналов(здесь mono)
                //waveIn.WaveFormat = new WaveFormat(8000, 1);
                waveIn.WaveFormat = new WaveFormat(44100,8, 2);
                //Инициализируем объект WaveFileWriter
                writer = new WaveFileWriter(infilePath, waveIn.WaveFormat);
                //Начало записи
                waveIn.StartRecording();
            }
            catch (Exception ex)
            {
                //MessageBox.Show(ex.Message);
                //listBox1.Items.Add(ex.Message);
            }
        }
        //Получение данных из входного буфера и обработка полученных с микрофона данных
        void waveIn_DataAvailable(object sender, WaveInEventArgs e)
        {
 
                //Записываем данные из буфера в файл
                writer.WriteData(e.Buffer, 0, e.BytesRecorded);
 
        }
        //Завершаем запись
        void StopRecording()
        {
            //MessageBox.Show("StopRecording");
            //listBox1.Items.Add("Stop Recording");
            waveIn.StopRecording();
        }
        //Окончание записи
        private void waveIn_RecordingStopped(object sender, EventArgs e)
        {
 
                //this.BeginInvoke(new EventHandler(waveIn_RecordingStopped), sender, e);
 
                waveIn.Dispose();
                waveIn = null;
                writer.Close();
                writer = null;
 
        }
 
    }


Осталось только поменять дефолтное устройство для записи и поиграться с каналами для записи, 
Код стырил у буржуев он хорошо прокоментирован проблем возникнуть недолжно.
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0811 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.