Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,891

Воспроизведения звука мгновенно

03.08.2016, 01:25. Показов 3318. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте. Хочу сделать звук щелчка на нажатие клавиш. Я знаю про функцию PlaySnd или както так.
Но нужно сделать мгновенное однократное воспроизведения при этом программа не должна зависать на момент воспроизведения.
А для мгновенного воспроизведения нужно чтобы звук либо подгружался мгновенно либо уже был подгружен в программу.
Подскажите как это сделять. Звук щелчков и прочего в формате wav
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.08.2016, 01:25
Ответы с готовыми решениями:

Воспроизведения звука при нажатии клавиши
Доброго времени суток! Можно сделать что-то в этом роде??? if (Form1->BitBtn1->Click()) { ...

Ошибка воспроизведения звука
Не пойму как исправить ошибку: public Microsoft.DirectX.AudioVideoPlayback.Audio audio; public List<string> path = new...

Ошибка при воспроизведения звука
Такая проблема... по нажатию кнопки должна играть музыка Вот код private void button2_Click(object sender, EventArgs e) ...

21
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
03.08.2016, 02:23
у PlaySound есть параметр flags. Так вот если ему дать флаг SND_MEMORY то в pszSound передается не имя файла а указатель на уже подгруженный буфер с wav.
подробнее здесь
https://msdn.microsoft.com/en-... s.85).aspx
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,891
03.08.2016, 03:50  [ТС]
А можно подробнее на русском.
И еще я встречаюсь с проблеммой как несоответствие wchar_t и UnicodeString
Если с переменными все понятно то когда передаешь в wchar_t обычную строку например "Строка"
То все равно синтаксическая ошибка. Похоже любую строку "" с++ воспринимает как String так что приходится для этого отдельную переменную грузить.
Еще один вопрос который появляется но он нужен не только для этой темы.
А именно как использовать глобальные переменные. Если просто объявить переменную в отдельном модуле то при присвоении значения из другого модуля значения просто не присваивается. а остается по умолчанию
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
03.08.2016, 09:43
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
И еще я встречаюсь с проблеммой как несоответствие wchar_t и UnicodeString
естественно. Потому что wchar_t строка это WideString. Которая L". А UnicodeString это U"

Добавлено через 5 минут
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
Похоже любую строку "" с++ воспринимает как String так что приходится для этого отдельную переменную грузить.
А без префиксов AnsiString.
А просто String хитрая штука. Под x86 это AnsiString под x64 WideString.
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
Если просто объявить переменную в отдельном модуле то при присвоении значения из другого модуля значения просто не присваивается.
Для того чтобы в этом модуле о ней было что то известно ее нужно еще раз в хидере описать в extern.
пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//фалй 1.cpp
int foo=5;
//файл 1.h
#pragma once
extern int foo;
//файл 2.cpp
#include "1.h"
#include <iostream>
int main(){
    std::cout << foo << endl;
    foo=10;
    std::cout << foo << endl;
}
Добавлено через 6 минут
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
А можно подробнее на русском.
Если хочешь под винду програмить придется научится читать на буржуйском наречии. Вся дока на нем. Причем читать лучше в оригинале даже при наличии перевода.
1
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,891
04.08.2016, 13:43  [ТС]
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А без префиксов AnsiString.
А просто String хитрая штука. Под x86 это AnsiString под x64 WideString.
Видно вы не поняли но это не ответ решения проблемы. Я говорю что например функция апи требует имя файла в формате wchar_t и если написать туда имя файла не в переменной а в "" то все равно с++ воспринимает как ошибка синтаксиса отсюда следует что "" в c++ воспринимается как String хотя скорее UnicodeString так как все функцию что в c++ есть не АПИ Виндовс то у них строки в формате UnicodeString
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,891
04.08.2016, 13:51  [ТС]
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Для того чтобы в этом модуле о ней было что то известно ее нужно еще раз в хидере описать в extern.
пример:
Ну я так понял в 1.h нужно объявить через extern а в 1.cpp повторно ее объявить и тогда можно будет из любого модуля обращатся к ней?

Добавлено через 4 минуты
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Если хочешь под винду програмить придется научится читать на буржуйском наречии. Вся дока на нем. Причем читать лучше в оригинале даже при наличии перевода.
Может просто пример напишите как можно загрузить в память wav файл и его воспроизвести а то чет не понял на оф сайте. Темболее что мне необходимо не каждый раз грузить при воспроизведении а загрузить при создании формы и воспроизводить уже каждый раз при нажатии кнопки.
Покачто вот вариант который такто быстро но все равно доля мига задержка чуствуется видимо из за загрузки
C++
1
2
3
4
__fastcall NewPlaySound1(UnicodeString fnss)
{
    PlaySound(fnss.w_str(),0,SND_ASYNC);
}
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
04.08.2016, 13:59
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
все равно с++ воспринимает как ошибка синтаксиса отсюда следует что "" в
писать L"вот этот текст который надо передать в функцию апи". т.е. префикс L перед строкой, тогда он ее как строку wchar_t понимает.
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,891
04.08.2016, 14:17  [ТС]
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
писать L"вот этот текст который надо передать в функцию апи". т.е. префикс L перед строкой, тогда он ее как строку wchar_t понимает.
Спасибо. Буду знать. Ну как на счет примера с переменной файла wav для воспроизведения?
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
04.08.2016, 17:41
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
Ну как на счет примера с переменной файла wav для воспроизведения?
Эт еще билдер запустить надо. А то крайние пол года на MSVC сижу.
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,891
04.08.2016, 18:04  [ТС]
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Эт еще билдер запустить надо. А то крайние пол года на MSVC сижу.

Не по теме:

Может и мне его выбрать? Ладно сначало разберусь с языком c++

0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
07.08.2016, 04:15
как вариант к PlaySound(fnss.w_str(),0,SND_ASYNC);
Как реализовать одновременное воспроизведение нескольких аудиофайлов?

на название темы не смотри
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,891
07.08.2016, 09:57  [ТС]
Цитата Сообщение от _Dimon_ Посмотреть сообщение
как вариант к PlaySound(fnss.w_str(),0,SND_ASYNC);
Как реализовать одновременное воспроизведение нескольких аудиофайлов?
Ну во первых мне не надо одновременно воспроизводить другое дело если я надумаю ввести плеер то воспользуюсь библиотекой bass Хотя мне еще понадобится в будущем отловить когда заканчивается воспроизведения и без зависанитя.
Так что возможно стандартный PlaySound() не подойдет
Еще как я сказал восппроизведение должно быть мгновенным а это значит что все должно быть в памяти программы.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33184 / 21482 / 8231
Регистрация: 22.10.2011
Сообщений: 36,850
Записей в блоге: 12
07.08.2016, 10:44
У тебя памяти не хватит держать там все, что ты себе напридумывал.
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,891
07.08.2016, 11:15  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
У тебя памяти не хватит держать там все, что ты себе напридумывал.
Ну судя потому что
Кнопки весят мало и формат пнг а кнопки в килобайтах то я думаю хватит.
Темболее я самый лучший способ прошу но неужели ты думаешь что каждый раз грузить при отрисовки кнопок будет хорошо. Будут мерцания.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33184 / 21482 / 8231
Регистрация: 22.10.2011
Сообщений: 36,850
Записей в блоге: 12
07.08.2016, 13:11
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
и формат пнг
Это на диске PNG, в памяти PNG не держится, держится Bitmap, а это уже совсем не так мало...
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
неужели ты думаешь что каждый раз грузить при отрисовки кнопок будет хорошо
Я думаю, что не стоит вообще менять привычный пользователю вид кнопок (не все то, что нравится тебе, понравится другим), и не нужно зацикливаться на том, чтобы выделиться нестандартным интерфейсом. Выделяться нужно тем, что твоя программа должна выполнять свою задачу (свои функции) идеально, а интерфейс - это так, очень второстепенно. Многие пользователи только увидев что-то такое, непохожее на привычное, тут же деинсталлируют приложение, и находят примерно такое же по функционалу (возможно - даже чуть хуже), но с нормальным и привычным интерфейсом. Мне, например, неприятны все эти эксперименты с плоским интерфейсом, которые теперь в моде после Win8/Win10, поэтому я как оставался на Win7, так и буду оставаться, и хоть захвались там, что оно быстрее работает, и что оно больше функций выполняет - да и пусть. Больше-то больше, но мне это "больше" тоже не нужно, перебор, однако. Меня вполне устраивало то, что было в Win7, для всего остального Windows вообще не подходит, и используется Debian.
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,891
07.08.2016, 13:35  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
Это на диске PNG, в памяти PNG не держится, держится Bitmap, а это уже совсем не так мало...
А про TPNGImage ты забыл
Цитата Сообщение от volvo Посмотреть сообщение
Я думаю, что не стоит вообще менять привычный пользователю вид кнопок (не все то, что нравится тебе, понравится другим), и не нужно зацикливаться на том, чтобы выделиться нестандартным интерфейсом. Выделяться нужно тем, что твоя программа должна выполнять свою задачу (свои функции) идеально, а интерфейс - это так, очень второстепенно. Многие пользователи только увидев что-то такое, непохожее на привычное, тут же деинсталлируют приложение, и находят примерно такое же по функционалу (возможно - даже чуть хуже), но с нормальным и привычным интерфейсом. Мне, например, неприятны все эти эксперименты с плоским интерфейсом, которые теперь в моде после Win8/Win10, поэтому я как оставался на Win7, так и буду оставаться, и хоть захвались там, что оно быстрее работает, и что оно больше функций выполняет - да и пусть. Больше-то больше, но мне это "больше" тоже не нужно, перебор, однако. Меня вполне устраивало то, что было в Win7, для всего остального Windows вообще не подходит, и используется Debian.
Ну для кого пишу 100% понравится темболее они же его и предложили а другим программа бесполезная просто напроста. Так что ладно. Но вообще в этой теме речь о ресурсе для хранения музыки а также ее мгновенного воспроизведения без даже задержки в несколько милисекунд. Только той задержки которой понадобится системе для воспроизведения файла без загрузки и так чтобы можно было определить остановилось ли воспроизведение или нет.
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
07.08.2016, 22:51
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
Ну во первых мне не надо одновременно воспроизводить
Так и не надо. Просто попробуй тот вариант с одним звуком, может он быстрее работает.
Я не знаю как оно внутри устроено.
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,891
07.08.2016, 23:20  [ТС]
Цитата Сообщение от _Dimon_ Посмотреть сообщение
Так и не надо. Просто попробуй тот вариант с одним звуком, может он быстрее работает.
Да тут все равно минимальная доля на подгрузку используется. Для маленьких звуков не замеетно но для больших файлов это уже серьезно.
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
07.08.2016, 23:23
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
Для маленьких звуков не замеетно но для больших файлов это уже серьезно.
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
Хочу сделать звук щелчка на нажатие клавиш.
Какой большой файл может быть на звук щелчка? Неужели целая композиция?
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,891
07.08.2016, 23:53  [ТС]
Цитата Сообщение от _Dimon_ Посмотреть сообщение
Какой большой файл может быть на звук щелчка? Неужели целая композиция?
Ну именно для щелчка нет а для воспроизведения названия загрузки что именно загруженовот это уже тянет на 3 мб гдето
Просто напишите
1 Как в переменные загрузить звуковые файлы для воспроизведения
2. Пример воспроизведения с возможность узнать когда оно закончено
И все это без зависания программы. А то знаю я процедыры которые делают проверку путем ожидания и в это время нельзя программой пользоваться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.08.2016, 23:53
Помогаю со студенческими работами здесь

[Mono] Кроссплатформенная библиотека воспроизведения звука
Доброе утро! Есть-ли библиотека под .NET и/или Mono, которая позволяет воспроизводить звук? Так, чтобы одного только редактирования...

Компонент для воспроизведения звука
Подскажите пожалуйста есть ли в Delphi компонент который может воспроизводить мелодии и если есть то что именно за компонент и как с ним...

Событие окончания воспроизведения звука
Добрый день! Для воспроизведения звука использую WinAPI-функцию PlaySound, воспроизводящую wav-файлы. В некоторых ситуациях нужно...

Ошибка воспроизведения звука в консольном приложении
Почему не хочет воспроизводится звук(в консольном приложении)??? Этот же код в формах все нормально воспроизводит!!! Пробовал и с...

Функция воспроизведения звука через колонки
На днях решил написать программку через функцию Beep();. Все что я испробовал, чтобы звук выходил из сис. динамика-не получалось. В...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru