crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

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


Последние 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 Текстовая версия Сейчас: 22.10.2021, 16:01