Вверх ↑
Этот топик читают: Гость
Ответов: 91
Рейтинг: 1
#1: 2013-08-14 20:28:13 ЛС | профиль | цитата
Приветствую форумчан!
Возникла необходимость передавать сформированный в программе поток сэмплов как звук в формате 24 бит 48/96/192к на виртуальную звуковуху.
Это вообще возможно? Я посмотрел мультимедиа библиотеку и никаких мыслей не возникло.
Использую Virtual Audio Cabel - установлено и работает.
карма: 1

0
Ответов: 8928
Рейтинг: 823
#2: 2013-08-14 20:59:43 ЛС | профиль | цитата
rolin, запустите схему и посмотрите, находит-ли она Вашу виртуальную карту.
code_31591.txt
карма: 19

0
файлы: 1code_31591.txt [3.3KB] [189]
Ответов: 91
Рейтинг: 1
#3: 2013-08-14 21:58:55 ЛС | профиль | цитата
List Index out of bounds(2)

У меня альтернативная сборка.
------------ Дoбавленo в 21.58:
Леонид, рад видеть на форуме. Знаю у Вас большой опыт в этой сфере.
Я все же выдрал из вашей схемы необходимое и запустил. Все устройства для записи определились , включая VAC.

Add(BASS_RecordDevices,2139448,357,364)
{
link(onEnum,13558601:doAdd,[(481,370)(481,321)])
}
Add(Button,180965,273,364)
{
Left=110
Top=15
link(onClick,2139448:doEnum,[])
}
Add(ListBox,13558601,574,315)
{
Left=235
Top=20
Width=500
Height=370
}


карма: 1

0
Ответов: 8928
Рейтинг: 823
#4: 2013-08-14 22:03:57 ЛС | профиль | цитата
rolin, странно, запускал и на сборке от CriDos, компилируется, зараза и видит три моих карты, две подключал через USB, виртуальной, правда нет.
Сейчас скачаю последнюю версию альтернативы и опробую
------------ Дoбавленo в 22.03:
Ну и хорошо!
Если видит, то и подключить можно.
карма: 19

0
Ответов: 91
Рейтинг: 1
#5: 2013-08-14 22:22:38 ЛС | профиль | цитата
Похоже, что мне надо проигрывать свой поток через виртуалку в Cable Input(устройство воспроизведения)
и тогда другая программа сможет забрать данные из Cable Output (устройство записи).
А как нумеруются устройства - в порядке их обнаружения начиная с 1 ?

карма: 1

0
Ответов: 8928
Рейтинг: 823
#6: 2013-08-14 23:20:21 ЛС | профиль | цитата
rolin писал(а):
..в порядке их обнаружения начиная с 1 ?

По всей видимости с "0", я выбираю из списка с выводом индекса и включается нужная карта.
Первой в список выводится карта, которая используется в Windos-е сейчас.
(Кстати по onEnum выводится МТ-поток, его можно разложить и получить кроме имени другую информацию)
карма: 19

0
Ответов: 91
Рейтинг: 1
#7: 2013-08-14 23:42:03 ЛС | профиль | цитата
Как получить список устройств воспроизведения я не знаю. Можно пример?
Вот, набросал подходящий вариант, если вопрос с выбором устройства решится, то остается еще очень важный вопрос о разрядности данных.
Можно и 16 бит использовать, но это ухудшит параметры.



code_31592.txt
карма: 1

0
файлы: 1code_31592.txt [1.1KB] [131]
Ответов: 8928
Рейтинг: 823
#8: 2013-08-15 00:57:27 ЛС | профиль | цитата
rolin, поток создаётся вот этой функцией:
code_31594.txt
А вот что пишет справка про неё:
HSTREAM BASS_StreamCreate(
DWORD freq,
DWORD chans,
DWORD flags,
STREAMPROC *proc,
void *user
);


Parameters
freq The default sample rate. The sample rate can be changed using BASS_ChannelSetAttribute.
chans The number of channels... 1 = mono, 2 = stereo, 4 = quadraphonic, 6 = 5.1, 8 = 7.1.
flags Any combination of these flags.
BASS_SAMPLE_8BITS Use 8-bit resolution. If neither this or the BASS_SAMPLE_FLOAT flags are specified, then the stream is 16-bit.
.
[color=blue] BASS_SAMPLE_FLOAT Use 32-bit floating-point sample data. See Floating-point channels for info.
BASS_SAMPLE_SOFTWARE Force the stream to not use hardware mixing.[/color]
.
.
Return value
If successful, the new stream's handle is returned, else 0 is returned. Use BASS_ErrorGetCode to get the error code
FLOAT -- соответствует типу single-- четырёх байтовое число с плавающей точкой, значащих бит как раз 24. Наверное можно попытаться получить звук такого качества. У BASS есть маленький рекордер пишущий звук в этом формате. Приложил (осторожно с временем, пишет без сжатия *.wav )
карма: 19

0
файлы: 2rectest_float.rar [4.5KB] [97], code_31594.txt [207B] [108]
Ответов: 91
Рейтинг: 1
#9: 2013-08-15 11:31:54 ЛС | профиль | цитата
У меня справка пишет
Данные

Data - Определяет одно слово (т.е. 2 байта) данных для заполнения буфера вывода

а BASS_SAMPLE_FLOAT flags у меня просто отсутствует. Не такой компонент видимо.

Флаг Data Typ Byte and Stream мне непонятна разница и как подавать данные - изменять на входе Data со скоростью Fsample?
карма: 1

0
Ответов: 8928
Рейтинг: 823
#10: 2013-08-15 13:47:36 ЛС | профиль | цитата
rolin писал(а):
BASS_SAMPLE_FLOAT flags у меня просто отсутствует. Не такой компонент видимо.
Это справка не от HiAsm, а от BASS версии 2.4
Сейчас смотрел старые опыты по BASS-2.4, к сожалению пришлось констатировать, что 24 битного звука не получить
Вот ещё одна выписка из справки по BASS
bass_init.jpg
Чёрным по белому или 8 бит или 16 бит.
rolin писал(а):
Флаг Data Typ Byte and Stream мне непонятна разница и как подавать данные - изменять на входе Data со скоростью Fsample?
Посмотрите пример %hiasmElementsDelphiExampleMediaBASSPlayStream.sha и BASS_MusicTest.sha
карма: 19

0
файлы: 1bass_init.jpg [64.6KB] [662]
Ответов: 91
Рейтинг: 1
#11: 2013-08-16 11:47:44 ЛС | профиль | цитата
Кое-что получается, но компонент Sound Bufer, заполняется только типом STREAM а мой код делает преобразование крайне медленно. Можно как-то по другому? При опустошении буфера программа виснет и вылетает.
code_31602.txt
карма: 1

0
файлы: 1code_31602.txt [1.7KB] [130]
Ответов: 8928
Рейтинг: 823
#12: 2013-08-16 13:58:35 ЛС | профиль | цитата
rolin, ну что вы, строки обрабатываются очень медленно это не для звука!
Надо обрабатывать через файловые компоненты (сначала установите DataToFileEx -- приложен, он может читать и трёхбайтные знаковые целые, свойство DataSize) code_31604.txt
карма: 19

0
файлы: 2datatofileex_2.rar [3.3KB] [102], code_31604.txt [5.6KB] [209]
Ответов: 9906
Рейтинг: 351
#13: 2013-08-16 16:23:07 ЛС | профиль | цитата
Леонид писал(а):
он может читать и трёхбайтные знаковые целые
Хм... Ты смотри - и правда
Надо же - позабыл
карма: 9

0
Ответов: 8928
Рейтинг: 823
#14: 2013-08-16 17:59:43 ЛС | профиль | цитата
Galkov, [flood]постом выше нажамкал "(Спасибо Galkov-у, да продлит Аллах его годы!)", но стёр, чтобы не было всуе [/flood]
карма: 19

0
Ответов: 91
Рейтинг: 1
#15: 2013-08-17 11:08:34 ЛС | профиль | цитата
Компонент DataToFileEx добавил, как сделать что б он в списке светился?
Леонид, схему вашу загрузил с горем пополам, при загрузке элементов EditMultiex и Panel хиасм виснет и вылетает с ошибкой.
Надписи в INfo - кракозябры, но это у меня с виндой видимо.
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)