crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Простой beep (звук) под Linux
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 19.10.2012, 21:41
  да он что-то вообще мимо темы.
Iron Bug Дата 19.10.2012, 15:05
 
Цитата(Mimokrokodil @ 19.10.2012, 11:41) *
Если вам нужен простой бип, то зачем вам эти ваши Кютеки?

угу. а теперь продемонстрируйте нам, недалёким, чудеса этого "echo" в неконсольной софтине, например. вызов из кода на С++. ждём-с демонстрации лёгкости и простоты! :D
Алексей1153 Дата 19.10.2012, 8:49
  Mimokrokodil, ответ: кроссплатформа. См. сообщение ТС
Mimokrokodil Дата 19.10.2012, 8:41
  Ребята, вы точно извращенцы.

Linux: echo -e "\007" >/dev/tty10
Windows: echo "^G" (нажать Ctrl-G)

Если вам нужен простой бип, то зачем вам эти ваши Кютеки?

--
И вот на таких вот, зиждется наше отечественное ИТ
grio Дата 2.7.2011, 19:53
 
Цитата(512es @ 15.9.2010, 1:54) *
Работает быстро, надёжно и универсально!) Задача решена!


Спасибо за альтернативное решение.
Сам я пользуюсь Фононом. Прекрасно работает и в Линуксе и под Виндой.

#include <phonon/MediaObject>
..

YoMain::YoMain(QWidget *parent) 
{
..
    audioOutput = new Phonon::AudioOutput(Phonon::NotificationCategory);
}

void YoMain::MetronomeTick()
{
..
    metronomeSound->setCurrentSource (Phonon::MediaSource ("./click.wav"));
    metronomeSound->play ();
..
}


Рабочий пример здесь
512es Дата 15.9.2010, 13:39
 
Цитата(molchanoviv @ 15.9.2010, 8:51) *
А если у пользователя нет ALSA? Вдруг OSS стоит, или еще что?

Ну alsa это вроде как стандарт начиная с ядра 2.6. И кроме того, в большинстве дистрибутивов именно alsa стоит по дефолту. OSS устарел.
Существует ещё конечно много звуковых серверов, и если надо их поддерживать, можно легко заменить команду aplay -q на любую другую похожую. Например, можно в настройках программы позволить выбирать команду для проигрывания звуков.

Но по любому alsa чаще встречается в системах чем рабочий и включёный системный динамик =)
molchanoviv Дата 15.9.2010, 7:51
  А если у пользователя нет ALSA? Вдруг OSS стоит, или еще что?
512es Дата 15.9.2010, 0:54
  Спасибо всем за ответы и поддержку))
Поделюсь полученным плеером. Мне не жалко))

void MainWindow::clicker()
{
#ifdef Q_OS_WIN32
    QApplication::beep();
#else
    QProcess player;
    QFile snd(":/sound/blip2.wav");
    if (!snd.open(QIODevice::ReadOnly)) return;
    player.start("aplay -q");
    if (player.write(snd.readAll()) == -1) return;
    player.closeWriteChannel();
    snd.close();
    if (!player.waitForFinished(5000)) player.kill();
#endif
}


Звук играется прямо из ресурсов.
Если за 5 секунд плеер не завершился мы его убиваем.
На винде используем стандартный бип.

Работает быстро, надёжно и универсально!) Задача решена!
512es Дата 15.9.2010, 0:10
  Итак,
я кажется нашёл отличное решение этой проблемы!

Очень простое и эффективное решение будет играть звуки просто внешней командой в линуксе. Благо маленьких и шустрых консольных команд там предостаточно)) Ибо unix-way))

QProcess::startDetached("aplay -q blip2.wav");

Звук играется даже лучше чем через Phonon! Быстрее, нет нагрузки на процессор и при быстром многократном проигрывании легко накладывается друг на друга а так же на музыку, которая в тот момент играет на компе, без какого либо шума, тормозов или глюков! ))

Можно пойти и дальше, вкомпилировав в программу код плеера. Тут есть не плохой кусок кода, вырванный из линуксовой программы aplay, уже адаптированный для qt:
http://lists.trolltech.com/qt-interest/200...ead00147-0.html

Но мне лично это пока не надо. Т.к. всё равно будет зависимость от alsalib. А команда aplay почти стандартная, входит в состав пакета alsa-utils, в котором кстати и сам alsamixer.

А для винды и далее буду использовать QApplication::beep(). Там оно работает хорошо.
512es Дата 14.9.2010, 23:23
 
Цитата(kwisp @ 14.9.2010, 18:02) *
давай права смотреть на утилиту beep
ls -l /usr/bin/beep что даёт?

с правами всё впорядке.

именно модуль интела не хочет пищать.
много гуглил по этому вопросу.
http://www.google.ru/search?sourceid=chrom...hda+beep+module

вообщем, надоело )) теперь буду ковырять в сторону QSound или SDL_sound
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 10.7.2025, 11:16