Вверх ↑
Ответов: 1429
Рейтинг: 50
#1: 2010-09-16 08:02:50 ЛС | профиль | цитата
Я закончил этот компонент, все работает, но!
Как только на миди-вход подается хоть одна нота, приложение сразу слетает.
(если быть точным то даже просто с подключенным, к миди-входу, инструментом, нельзя нажать "Midi_in_Start" прога слетает, с отключенным шнуром она работает)


Add(MainForm,2953706,21,105)
{
Width=622
Height=499
link(onCreate,8790190:doInit,[])
}
Add(InlineCode,13469217,350,238)
{
@Hint=#7:MIDI IN|15:Список проблем:|67:1.Если была инициализация с ошибкой, то lock всеравно будет закрыт.|
WorkPoints=#28:do_BASS_MIDI_InGetGeviceInfo|19:do_BASS_MIDI_InInit|19:do_BASS_MIDI_InFree|20:do_BASS_MIDI_InStart|19:do_BASS_MIDI_InStop|
EventPoints=#13:on_DeviceInfo|9:on_InInit|9:on_InFree|8:on_Start|7:on_Stop|
DataPoints=#6:Device|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|38:uses bassmidi,kol,Share,Debug,Windows;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|9: public|17: lock:integer;|19: midiin:integer;|28: on_DeviceInfo:THI_Event;|33: Device:THI_Event;//точка Data|24: on_InInit:THI_Event;|24: on_InFree:THI_Event;|23: on_Start:THI_Event;|22: on_Stop:THI_Event;|85: procedure do_BASS_MIDI_InGetGeviceInfo(var Data:TData; index:word); // DeviceInfo|72: procedure do_BASS_MIDI_InInit(var Data:TData; index:word); // InInit|72: procedure do_BASS_MIDI_InFree(var Data:TData; index:word); // InFree|72: procedure do_BASS_MIDI_InStart(var Data:TData; index:word); // Start|70: procedure do_BASS_MIDI_InStop(var Data:TData; index:word); // Stop|5: end;|0:|14:implementation|0:|13:// GeviceInfo|52:procedure THiAsmClass.do_BASS_MIDI_InGetGeviceInfo; |4:var |24:s1:BASS_MIDI_DEVICEINFO;|10:i:integer;|5:begin|40:while BASS_MIDI_InGetGeviceInfo(i,s1) do|10: begin|43: _hi_OnEvent(on_DeviceInfo,s1.name);|19: i:=i+1;|8: end|4:end;|9:// InInit|42:procedure THiAsmClass.do_BASS_MIDI_InInit;|3:var|16:proc:MIDIINPROC;|12:dev:integer;|5:begin|17:if lock <> 1 then|10: begin|55: dev:=ReadInteger(Data,Device); //верхняя точка |45: midiin:=BASS_MIDI_InInit(dev,proc,0);|17: lock:=1;|38: _hi_OnEvent(on_InInit,midiin);|8: end|4:end;|0:|9:// InFree|42:procedure THiAsmClass.do_BASS_MIDI_InFree;|11:var a:Bool;|5:begin|28:a:=BASS_MIDI_InFree(midiin);|8:lock:=0;|30:_hi_OnEvent(on_InFree,ord(a));|0:|4:end;|0:|8:// Start|43:procedure THiAsmClass.do_BASS_MIDI_InStart;|4:var |8:a1:Bool;|5:begin|30:a1:=BASS_MIDI_InStart(midiin);|30:_hi_OnEvent(on_Start,ord(a1));|4:end;|0:|7:// Stop|42:procedure THiAsmClass.do_BASS_MIDI_InStop;|4:var |8:a1:Bool;|5:begin|29:a1:=BASS_MIDI_InStop(midiin);|29:_hi_OnEvent(on_Stop,ord(a1));|4:end;|0:|4:end.|
link(on_DeviceInfo,8879177:doWork1,[(431,244)])
link(on_InInit,6254033:doWork2,[])
link(on_InFree,6254033:doWork3,[(417,258)])
link(on_Start,4736038:doWork3,[(445,265)])
link(on_Stop,45069:doWork3,[(438,272)])
link(Device,1440245:Value,[])
}
Add(Button,4380749,231,224)
{
Left=220
Top=35
Width=70
Height=25
Caption="Inint"
link(onClick,13469217:do_BASS_MIDI_InInit,[(299,230)(299,251)])
}
Add(StyleXP,7101425,21,154)
{
}
Add(Memo,2234497,455,245)
{
Left=5
Top=5
Width=205
Height=425
ScrollBars=2
}
Add(Button,9989288,231,273)
{
Left=220
Top=125
Width=70
Height=25
Caption="Free"
link(onClick,13469217:do_BASS_MIDI_InFree,[(306,279)(306,258)])
}
Add(Button,3171330,231,322)
{
Left=220
Top=65
Width=70
Height=25
Caption="Start"
link(onClick,13469217:do_BASS_MIDI_InStart,[(314,328)(314,265)])
}
Add(HubEx,4736038,441,245)
{
link(onEvent,2234497:doAdd,[])
}
Add(HubEx,6254033,413,245)
{
link(onEvent,8879177:doWork2,[])
}
Add(Button,3144429,231,175)
{
Left=220
Top=10
Width=70
Caption="Device"
link(onClick,13469217:do_BASS_MIDI_InGetGeviceInfo,[(312,181)(312,244)])
}
Add(HubEx,8879177,427,245)
{
link(onEvent,45069:doWork2,[])
}
Add(Button,10368205,231,371)
{
Left=220
Top=95
Width=70
Height=25
Caption="Stop"
link(onClick,13469217:do_BASS_MIDI_InStop,[(324,377)(324,272)])
}
Add(HubEx,45069,434,245)
{
link(onEvent,4736038:doWork2,[])
}
Add(Memory,1440245,350,175)
{
Default=Integer(0)
}
Add(Memo,6149815,882,231)
{
Left=320
Top=10
Width=205
Height=310
ScrollBars=2
}
Add(Button,1179580,679,231)
{
Left=535
Top=15
Width=70
Caption="Device"
link(onClick,16198628:do_BASS_MIDI_StreamCreate,[])
}
Add(InlineCode,16198628,777,231)
{
@Hint=#16:BASS_MIDI_Stream|
WorkPoints=#25:do_BASS_MIDI_StreamCreate|21:do_BASS_MIDI_FontInit|27:do_BASS_MIDI_StreamGetEvent|
EventPoints=#15:on_StreamCreate|11:on_FontInit|17:on_StreamGetEvent|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|38:uses bassmidi,kol,Share,Debug,Windows;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|17: HSTREAM:DWORD;|25: EVENT:BASS_MIDI_EVENT;|3: |37: on_FontInit:THI_Event; // FontInit|3: |29: on_StreamCreate:THI_Event;|31: on_StreamGetEvent:THI_Event;|84: procedure do_BASS_MIDI_StreamCreate(var Data:TData; index:word); // Stream Create|75: procedure do_BASS_MIDI_FontInit(var Data:TData; index:word); // FontInit|81: procedure do_BASS_MIDI_StreamGetEvent(var Data:TData; index:word); // GetEvent|5: end;|0:|14:implementation|0:|16:// Stream Create|48:procedure THiAsmClass.do_BASS_MIDI_StreamCreate;|5:begin|57:HSTREAM:=BASS_MIDI_StreamCreate(16,BASS_MIDI_NOFX,44100);|37:_hi_OnEvent(on_StreamCreate,HSTREAM);|4:end;|0:|11:// FontInit|44:procedure THiAsmClass.do_BASS_MIDI_FontInit;|15:var HSSF:DWORD;|5:begin|42:HSSF:= BASS_MIDI_FontInit('CT2MGM.SF2',0);|30:_hi_OnEvent(on_FontInit,HSSF);|4:end;|0:|0:|11:// GetEvent|50:procedure THiAsmClass.do_BASS_MIDI_StreamGetEvent;|5:begin|52:BASS_MIDI_StreamGetEvent(HSTREAM,0,MIDI_EVENT_NOTE);|43:_hi_OnEvent(on_StreamGetEvent,EVENT.event);|4:end;|0:|0:|0:|4:end.|
link(on_StreamCreate,10679813:doWork2,[])
link(on_FontInit,14821932:doWork3,[(844,244)])
link(on_StreamGetEvent,10679813:doWork3,[(823,251)])
}
Add(BASS_Init,8790190,70,119)
{
}
Add(HubEx,10679813,819,231)
{
link(onEvent,14821932:doWork2,[])
}
Add(Button,13956013,683,326)
{
Left=535
Top=65
Width=70
Caption="GetEvent"
link(onClick,16198628:do_BASS_MIDI_StreamGetEvent,[(742,332)(742,251)])
}
Add(Button,4229867,679,280)
{
Left=535
Top=40
Width=70
Caption="SFont"
link(onClick,16198628:do_BASS_MIDI_FontInit,[(725,286)(725,244)])
}
Add(HubEx,14821932,840,231)
{
link(onEvent,6149815:doAdd,[])
}



Их пример synth.exe из архива прекрасно работает с теми же DLL-лками.
http://hiasm.com/forum_serv.php?q=56&id=1759





карма: 0

0
файлы: 1code_20622.txt [6KB] [389]