Вверх ↑
Этот топик читают: Гость
Ответов: 20
Рейтинг: 1
#1: 2009-01-11 20:24:30 ЛС | профиль | цитата
Решил как-то раз недавно портировать свой музыкальный плеер на новый хиасм 4.0 билд 172. Столкнулся с некоторыми проблемами.
1) компонент Стоп работает не как надо. После остановки он не перематывает в начало и не выгружает ресурсы, не позволяя удалить файл.
2) невозможно понять что происходит в данный момент. был удобный компонент BASS_ChlState. Верните его пожалуйста. от него зависит проигрывание следующего трека.
3) и ещё не возможно раскидывать компоненты Bass по разным контейнерам. всё приходится располагать в одном. Есть мнение что с идентификатором поточного звука было удобнее.
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Администрация
Ответов: 15294
Рейтинг: 1518
#2: 2009-01-13 01:08:54 ЛС | профиль | цитата
1) компонент Стоп работает так, как это описано в справке от разработчиков по функции BASS_ChannelStop. Для освобождения ресурсов надо использовать doDestroy
2) точка State добавлена, но проигрывание следующего трека от нее не зависит.
3) задача прокидывания связей типа Клиент-Менеджер между контейнерами еще решается
карма: 26
0
Ответов: 3851
Рейтинг: 159
#3: 2009-01-13 14:03:00 ЛС | профиль | цитата
Dilma писал(а):
надо использовать doDestroy
не нашёл - будет в следующей версии?
карма: 0
начавший
0
Администрация
Ответов: 15294
Рейтинг: 1518
#4: 2009-01-13 14:20:17 ЛС | профиль | цитата
http://hiasm.googlecode.com/svn/elements/delphi/conf/BASS_StreamCreateFile.ini
строка 16
карма: 26
0
Ответов: 20
Рейтинг: 1
#5: 2009-01-14 16:10:46 ЛС | профиль | цитата
To Dilma
а BASS_ChlState вернёшь? Очень надо.
карма: 0

0
Администрация
Ответов: 15294
Рейтинг: 1518
#6: 2009-01-14 17:16:21 ЛС | профиль | цитата
Dilma писал(а):
2) точка State добавлена

карма: 26
0
Ответов: 20
Рейтинг: 1
#7: 2009-01-14 17:36:30 ЛС | профиль | цитата
Перещупал все элементы. На какой именно она добавлена?
карма: 0

0
Администрация
Ответов: 15294
Рейтинг: 1518
#8: 2009-01-14 17:48:51 ЛС | профиль | цитата
http://hiasm.googlecode.com/svn/elements/delphi/conf/BASS_ChannelPlay.ini
карма: 26
0
Ответов: 20
Рейтинг: 1
#9: 2009-01-14 19:01:12 ЛС | профиль | цитата
C:\HiAsm173\Elements\delphi\code\hiChildForm_8EA6A8C.pas(1572) Error: Undeclared identifier: '_var_State'
может чего не хватает? например изменения в коде
------------ Дoбавленo:

АА. всё понял
http://hiasm.googlecode.com/svn/elements/delphi/code/hiBASS_ChannelPlay.pas
------------ Дoбавленo:

Однако столкнулся с зависанием при задействовании события onEndPlay. программа виснет.
------------ Дoбавленo:

Как быть с зависоном? после проигрывания пллер виснет полностью. Баг.
карма: 0

0
Администрация
Ответов: 15294
Рейтинг: 1518
#10: 2009-01-14 19:50:38 ЛС | профиль | цитата
развязка через таймер нужна
карма: 26
0
Ответов: 20
Рейтинг: 1
#11: 2009-01-14 20:37:07 ЛС | профиль | цитата
Спасибо. Теперь будет работать. скоро выложу. Ура!
карма: 0

0
Ответов: 15
Рейтинг: 1
#12: 2015-02-24 15:56:49 ЛС | профиль | цитата
Здравствуйте.
Не могу добавить новую тему, поэтому пишу где подобная проблема

Помогите решить проблему с hiBASS_ChannelPlay

Схема работает хорошо, за исключением (слева) hiGrapher и hiBASS_ChannelPlay.

hiBASS_ChannelPlay при включении – гарантированно виснет! Зависание проги может произойти сразу или через несколько минут, максимум было примерно через 40 минут. Сделал развязку через таймер, я так понял это включение hiBASS_ChannelPlay через некоторое время, все равно виснет прога.

Как сделать, чтобы не зависала программа или создать аудио поток с возможностью изменения качества звука без применения hiBASS_ChannelPlay ???

Использую HiAsm 4.4 build 184, компилятор Delphi7 (для такого случая). Прога испытывалась на 5 разных компах под Win7 и Wista

code_35186.txt
------------ Дoбавленo в 15.56:
без крякозябры

Make(delphi)
ver(4.04 build 184)
Add(MainForm,2953706,21,105)
{
Width=722
Height=336
link(onCreate,8905440:doEvent1,[(65,125)(65,377)(37,377)(37,517)])
}
Add(GetData,87375,756,84)
{
Count=4
link(Data,3815310:Text,[(762,78)(760,78)])
}
Add(Button,1407281,336,175)
{
Left=300
Top=205
Width=185
Caption="Connect"
link(onClick,9411456:doEvent1,[(375,181)(375,185)])
}
Add(Hub,14361709,910,161)
{
InCount=2
OutCount=3
}
Add(Label,1744710,546,399)
{
Left=255
Top=180
Width=10
Height=17
Caption="0"
link(Text,16740130:Activate,[])
}
Add(Grapher,13475393,945,336)
{
Left=405
Top=55
Width=255
Height=20
MaxH=0
LeftMargin=0
RightMargin=0
TopMargin=0
BottomMargin=0
}
Add(BASS_StreamCreate,14476773,896,399)
{
Freq=5000
DataType=1
Name="MainSound"
link(Data,14690913:Stream,[])
}
Add(BASS_ChannelPlay,3047460,1043,399)
{
Channel="MainSound"
}
Add(Hub,3011513,854,336)
{
link(onEvent1,14690913:doAdd,[(889,342)(889,328)])
link(onEvent2,13475393:doAdd,[(906,349)(906,342)])
}
Add(SoundBuffer,14690913,896,322)
{
}
Add(BASS_Version,10183901,126,595)
{
link(onCheckOk,12302345:doInit,[])
link(onCheckFailed,109118:doMessage,[(170,608)(170,650)])
}
Add(Message,11232751,126,644)
{
Message="Error BASS initialization"
Caption="Error"
Icon=1
}
Add(Message,109118,182,644)
{
Message="Incorrect version of BASS library "
Caption="Error"
Icon=1
}
Add(BASS_Init,4252681,49,623)
{
Freq=5000
link(onInit,10183901:doCheck,[(103,629)(103,601)])
link(onError,11232751:doMessage,[(114,636)(114,650)])
}
Add(BASS_RecordCenter,12302345,182,595)
{
link(onError,11713735:doMessage,[(226,608)(226,650)])
}
Add(Message,11713735,238,644)
{
Message="InitRecord failed!"
Caption="Error"
Icon=1
}
Add(Button,13708268,140,329)
{
Left=15
Top=25
Width=120
Caption="Microfon +"
link(onClick,16626942:doEvent1,[])
}
Add(Button,14140950,147,378)
{
Left=150
Top=25
Width=120
Caption="Microfon -"
link(onClick,16293115:doEvent1,[(205,384)(205,405)])
}
Add(BASS_RecordStart,5066922,329,336)
{
Freq=5000
Mode=1
Name="MainSound"
link(onData,3971770:doEvent1,[])
}
Add(Grapher,2891959,398,360)
{
Left=15
Top=55
Width=255
Height=20
MaxH=0
LeftMargin=0
RightMargin=0
TopMargin=0
BottomMargin=0
}
Add(Hub,3971770,371,343)
{
link(onEvent1,12202091:doConvert,[])
}
Add(BASS_ChannelFX_Eq,9020875,1358,77)
{
Channel="MainSound"
Center=125
Bandwidth=16
}
Add(ScrollBarEx,3663733,1260,77)
{
Left=25
Top=145
Width=15
Height=100
Max=15
Min=-15
Position=-15
Kind=1
link(onPosition,15826144:doEvent1,[])
}
Add(Label,4455329,1260,35)
{
Left=15
Top=125
Width=35
Height=12
Caption="125Hz"
}
Add(Label,15573584,1407,84)
{
Left=30
Top=250
Width=10
Height=17
Caption="0"
}
Add(Hub,15826144,1309,77)
{
link(onEvent1,9020875:doSet,[])
link(onEvent2,15573584:doText,[])
}
Add(BASS_ChannelFX_Eq,4488879,1358,176)
{
Channel="MainSound"
Center=13000
Bandwidth=16
}
Add(ScrollBarEx,13776646,1260,176)
{
Left=80
Top=145
Width=15
Height=100
Max=15
Min=-15
Position=-5
Kind=1
link(onPosition,15012876:doEvent1,[])
}
Add(Label,2113435,1260,134)
{
Left=75
Top=125
Width=35
Height=17
Caption="13kHz"
}
Add(Label,10691832,1407,183)
{
Left=85
Top=250
Width=10
Height=17
Caption="0"
}
Add(Hub,15012876,1309,176)
{
link(onEvent1,4488879:doSet,[])
link(onEvent2,10691832:doText,[])
}
Add(BASS_ChannelFX_Eq,12784840,1358,265)
{
Channel="MainSound"
Center=15000
Bandwidth=16
}
Add(ScrollBarEx,10359574,1260,265)
{
Left=120
Top=145
Width=15
Height=100
Max=15
Min=-15
Position=-15
Kind=1
link(onPosition,14183317:doEvent1,[])
}
Add(Label,14319566,1260,223)
{
Left=115
Top=125
Width=35
Height=17
Caption="15kHz"
}
Add(Label,14858604,1407,272)
{
Left=125
Top=250
Width=10
Height=17
Caption="0"
}
Add(Hub,14183317,1309,265)
{
link(onEvent1,12784840:doSet,[])
link(onEvent2,14858604:doText,[])
}
Add(Convertor,1558042,805,336)
{
Mode=12
link(onResult,3011513:doEvent1,[])
}
Add(Convertor,12202091,441,343)
{
Mode=11
link(onResult,16740130:doSend,[])
}
Add(Label,8864803,763,392)
{
Left=445
Top=185
Width=10
Height=17
Caption="0"
link(Text,7144804:Activate,[])
}
Add(Hub,13323799,511,392)
{
link(onEvent1,16740130:doOpen,[(534,398)(534,342)])
link(onEvent2,1744710:doText,[])
}
Add(Hub,12590747,700,329)
{
OutCount=3
link(onEvent2,7144804:doOpen,[])
link(onEvent3,8864803:doText,[(743,349)(743,398)])
}
Add(Hub,9411456,396,179)
{
InCount=2
OutCount=3
link(onEvent2,13323799:doEvent1,[(460,192)(460,398)])
link(onEvent3,12590747:doEvent1,[(593,199)(593,335)])
}
Add(Edit,3815310,754,39)
{
Left=460
Top=155
Width=85
Text="192.168."
}
Add(Label,10515004,952,497)
{
Left=270
Top=140
Width=54
Height=17
Caption="Remote IP"
}
Add(Label,16314870,949,494)
{
Left=460
Top=140
Width=43
Height=17
Caption="Local IP"
}
Add(Edit,776316,625,42)
{
Left=270
Top=155
Width=85
Text="192.168."
}
Add(GetData,8948756,623,91)
{
link(Data,776316:Text,[(629,83)(631,83)])
}
Add(VolumeSummator,7708361,385,574)
{
Level=20
Mode=1
}
Add(Button,9457749,417,228)
{
Left=300
Top=230
Width=185
Caption="disConnect"
link(onClick,15331949:doEvent1,[])
}
Add(Hub,15331949,508,228)
{
InCount=3
OutCount=3
link(onEvent2,7144804:doClose,[(606,241)(606,363)])
link(onEvent3,16740130:doClose,[(527,248)(527,363)])
}
Add(UDP,16740130,539,336)
{
LocalPort=1003
RemotePort=1004
LocalIP="192.168.1.2"
RemoteIP="192.168.1.2"
AutoConnect=0
Point(LocalIP)
link(RemoteIP,8948756:Data1,[(552,298)(629,298)])
link(LocalIP,87375:Data1,[(559,226)(762,226)])
}
Add(UDP,7144804,756,336)
{
LocalPort=1004
LocalIP="192.168.1.2"
Point(LocalIP)
link(onReceive,1558042:doConvert,[])
link(LocalIP,87375:Data2,[(776,226)(769,226)])
}
Add(Thread,10590455,882,525)
{
FastStop=0
}
Add(Timer,106266,966,147)
{
Interval=5000
}
Add(Hub,2651495,1015,147)
{
InCount=2
OutCount=3
link(onEvent1,15331949:doEvent2,[(1034,153)(1034,222)(496,222)(496,241)])
link(onEvent2,9411456:doEvent2,[(1034,160)(1034,201)(384,201)(384,192)])
}
Add(Hub,16626942,224,329)
{
link(onEvent1,14476773:doCreate,[(280,335)(280,469)])
link(onEvent2,5066922:doStart,[])
}
Add(Hub,16293115,238,399)
{
link(onEvent1,5066922:doStop,[(287,405)(287,349)])
link(onEvent2,14476773:doDestroy,[])
}
Add(Hub,8905440,49,511)
{
InCount=2
link(onEvent1,4252681:doInit,[(75,517)(75,573)(37,573)(37,629)])
}
Add(Button,5720515,980,399)
{
Left=590
Top=205
Width=90
Caption="Audio +"
link(onClick,3047460:doPlay,[])
}
Add(BASS_ChannelStop,13482637,1043,455)
{
}
Add(Button,8396276,980,455)
{
Left=590
Top=230
Width=90
Caption="Audio -"
link(onClick,13482637:doStop,[])
}


карма: 0

0
файлы: 1code_35186.txt [7.1KB] [439]
Ответов: 8886
Рейтинг: 823
#13: 2015-02-24 17:09:32 ЛС | профиль | цитата
krastydent, (схемка уж очень некрасиво оформлена )
BASS_RecordStart и BASS_StreamCreate имеют одинаковые имена: MainSound, попробуйте обозвать по-разному.
Grapher очень медленный компонент, для отражения звука, даже на 5000 Гц дискретизации не успеет. Есть же BASS_ChannelVisibleOcilloScope для этой цели.
карма: 19

0
Ответов: 15
Рейтинг: 1
#14: 2015-02-25 16:36:50 ЛС | профиль | цитата
Леонид, спасибо за помощь!

Grapher убрал. Изменил имена на разные для BASS_RecordStart и BASS_StreamCreate. Еще делал как в примере Crogram FilesHiAsmElementsDelphiExampleMediaBASSBASS_Sockets.sha

В течение дня программа работала на 3-х компьютерах. 2 компа Win7 и 1 Vista. На Win7 зависание программы в среднем через каждые 1-1,5 часа. На Vista ни разу не зависла (скорее повезло). При отключенном hiBASS_ChannelPlay на Win7 не было зависания. Я так понимаю, чтобы звук не запаздывал на несколько секунд, необходимо включать с минимальной разницей во времени BASS_RecordStart и BASS_StreamCreate (что тоже делал).

В общем, стабильность программы значительно повысилась, но зависание все равно можно ожидать в любую минуту.

Появилось большое запаздывание звука, и как надо т.е. на 1 секунду и как повезет.

карма: 0

0
Ответов: 209
Рейтинг: 1
#15: 2015-02-25 18:04:09 ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2020-02-19 17:51:19
карма: 0

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