Вверх ↑
Этот топик читают: Гость
Ответов: 413
Рейтинг: 57
#1: 2009-10-28 07:34:48 ЛС | профиль | цитата
Когда на точку channels элемента bass record star подаю единицу. то при записи звукового потока вместо моно сигнала я получаю ускоренную запись. При подачи двойки записывает нормально. В чем подвох?
проблема и с частотой дискретизации, при подаче на точку вообще не записывает.
Вот пример схемы:
code_15399.txt
карма: 0

0
файлы: 1code_15399.txt [3.3KB] [228]
Ответов: 8928
Рейтинг: 823
#2: 2009-10-28 07:56:44 ЛС | профиль | цитата
Poputchik, не все компоненты принимают строки из цифр за число, попробуйте применить Конвертор StrToInt
карма: 19

0
Администрация
Ответов: 15295
Рейтинг: 1519
#3: 2009-10-28 08:36:24 ЛС | профиль | цитата
при таком способе указания частоты ничего на точку подаваться не будет
карма: 27
0
Ответов: 413
Рейтинг: 57
#4: 2009-10-28 08:49:46 ЛС | профиль | цитата
Леонид, Попробовал, но не получилось. Как правильно его цеплять?


Попробовал подавать индекс элемента:

Add(ComboBox,9418350,455,280)
{
Left=330
Top=80
Width=115
Height=21
Color=0
Font=[MS Sans Serif,8,0,16744448,1]
Strings=#1:0|1:1|1:2|
Point(Index)
}
Add(BASS_RecordStart,5066922,420,378)
{
Freq=22050
Channels=2
Name="InetStream"
link(Channels,9418350:Index,[(440,352)(475,352)])
}
Add(MainForm,15739648,56,105)
{
Width=503
Height=198
Caption="BASS internet radio"
Point(Handle)
}

В таком варианте 2 канала пишет нормально, а один не хочет не как, хотя в свойствах готового файла стоит (моно)каналов 1, но при воспроизведении выдает ошибку.
карма: 0

0
Ответов: 8928
Рейтинг: 823
#5: 2009-10-28 20:29:58 ЛС | профиль | цитата
Poputchik, вот Ваша схема code_15404.txt, на картинке - созданные файлы
карма: 19

0
файлы: 2soundtest.png [3.2KB] [210], code_15404.txt [3.8KB] [160]
Ответов: 413
Рейтинг: 57
#6: 2009-10-28 12:41:01 ЛС | профиль | цитата
Леонид, Спасибо, сейчас посмотрим!
В своей схеме я хотел избавиться от непосредственного введения значений частоты дискретизации. Что бы пользователь просто выбирал хорошее или плохое качество. а сдесь получается что пользователь должен иметь представление о этой величине.
карма: 0

0
Ответов: 8928
Рейтинг: 823
#7: 2009-10-28 13:32:28 ЛС | профиль | цитата
Poputchik, я показал, что надо подавать числа, а не строки из цифр, а выпадающие списки можно оставить, только преобразовав их выход в Integer, например, так: code_15415.txt
------------ Дoбавленo в 13.34:
(В связи со сменой времени на сайте даты постов перепутались )
карма: 19

0
файлы: 1code_15415.txt [969B] [142]
Ответов: 413
Рейтинг: 57
#8: 2009-10-28 18:47:33 ЛС | профиль | цитата
Леонид,Во первых большое вам спасибо, что подсказываете, я уже думал, что ни кто толком ни чего не подскажет. Но есть вопросик:
вы пробовали запускать записанный файл (моно). У меня вроде получается записать моно сигнал, но он либо воспроизводится ускоренно либо при открытии выдает ошибку! Тоже происходит при использовании приведенного вами примера. Пробовал воспроизводить разными программами. При 2 каналах все нормально, при одном ...? При чем самое удивительное то, что моно сигнал может воспроизвести, хоть и ускоренно, только мой плеер сделанный в HiAsm! Все остальные выдают ошибку!
------------ Дoбавленo в 20.08:
парился я долго и нудно и, хоть я и не специалист, но думаю, что: что-то не так с этим компонентам (bass record star) - не может он писать "моно", хоть в нем задавать 1 хоть на точку подавать, а нормально писать не хочет.
А вот частоту дискретизации принимает на точку нормально.
карма: 0

0
Ответов: 8928
Рейтинг: 823
#9: 2009-10-29 11:20:49 ЛС | профиль | цитата
Poputchik, при чтении по байтам оказалось, что действительно в заголовке файла неверно отображается количество байт для одного отсчёта (на картинке обведено красным), поэтому проигрыватели и неправильно считывают. Я пользую проигрыватель VLC, он, наверное, эту цифру считает по длине данных и количеству бит для одного семпла, и играет точно.
------------ Дoбавленo в 16.46:
Poputchik, в коде компонента BASS_RecordStart с давних времён осталась строка в которой количество байт для одного отсчёта установлено равным 4 - эту цифру надо заменить на действительное значение:
1. Выделить BASS_RecordStart на рабочем поле и нажать Ctrl+F
2. В открывшемся hiBASS_RecordStart найти 88-ю строку, вернее строку: WaveHdr.wBlockAlign := 4; и заменить цифру 4 на 2*ch, получится WaveHdr.wBlockAlign := 2*ch;
3. Закрыть hiBASS_RecordStart, ответив "Да" на "Сохранить изменения?"
В свойстве этого компанента Channels поставить "0"
(Я давно снёс Windows-овский проигрыватель, для проверки работоспособности записи пришлось восстановить )
карма: 19

3
файлы: 1Заголовок22050_1_2.png [30KB] [212]
Голосовали:Poputchik, Administrator, Konst
Ответов: 413
Рейтинг: 57
#10: 2009-10-29 19:21:02 ЛС | профиль | цитата
Леонид, Я изменил строку в этом элементе. Все заработало. Спасибо.


Может автор этого компонента исправит исходник? На будущее.
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#11: 2009-10-29 20:43:21 ЛС | профиль | цитата
исправлено
карма: 27
0
11
Сообщение
...
Прикрепленные файлы
(файлы не залиты)