Toon posts:

[vb] MIDI zonder vertraging

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil in VB6 MIDI files afspelen als achtergrondmuziek. Het probleem is echter dat het gebruik van MCI (zowel via het MCI-control als via de MCI api) voor vertraging zorgt, ook als alle mogelijke "waits" uit staan.

Als ik de API stuur om de MIDI af te spelen duurt het 2 seconden of meer voordat dit klaar is en het programma verder gaat. Het hele programma staan dus even stil, wat niet de bedoeling is. Het lijkt niet mogelijk te zijn om ervoor te zorgen dat het programma direct verder gaat (het gaat wel iets sneller door aan te geven dat ie niet moet wachten, maar het duurt toch nog even).

Het gebruik van DirectMusic lost dit op, het probleem is dat voor DirectMusic in VB DirectX 7 nodig is, en het ook op systemen donder DirectX 7 moet kunnen draaien.

Ik heb het nu "opgelost" door een aparte ActiveX EXE ervoor te maken, dit kost echter weer een paar MB geheugen, wat ook niet de bedoeling is.

Weet iemand hoe ik dit netter zou kunnen oplossen?

Verwijderd

Misschien een dll maken in c++? Ik vermoed dat dat minder resources gebruikt dan een activex exe. Ik heb nooit iets met vb gedaan, maar ik geloof dat je er wel dll's bij kunt betrekken.

Verwijderd

Topicstarter
Op donderdag 03 januari 2002 11:55 schreef noid het volgende:
Misschien een dll maken in c++? Ik vermoed dat dat minder resources gebruikt dan een activex exe. Ik heb nooit iets met vb gedaan, maar ik geloof dat je er wel dll's bij kunt betrekken.
Draait dit niet in hetzelfde proces? Ik neem aan dat c++ ook last heeft van dezelfde vertraging.

Verwijderd

Op donderdag 03 januari 2002 11:56 schreef dev het volgende:

[..]

Draait dit niet in hetzelfde proces? Ik neem aan dat c++ ook last heeft van dezelfde vertraging.
Ja, hetzelfde proces. Volgens mij had ik soortgelijke problemen als jij hebt (maar dan in c++). Een andere thread maakte het alleen maar erger, dus dat was geen oplossing. Alleen was het nooit iets van 2 seconden, altijd minder.

Verwijderd

Topicstarter
Dat komt dan door de trage computer van mij (die 2 sec), maar het moet juist op nog tragere computers kunnnen draaien :P

Een ActiveX EXE draait in een ander proces (vandaar gebruikt het zoveel geheugen).

Verwijderd

Op donderdag 03 januari 2002 12:17 schreef dev het volgende:

Een ActiveX EXE draait in een ander proces (vandaar gebruikt het zoveel geheugen).
Ik denk dat een ActiveX exe meer geheugen gebruikt dan een simpele win 32 app, die alleen midi afspeelt. Die kun je dan aansturen met registered windows messages bijvoorbeeld. Maar nu weet ik niet of dat ook in VB zit.

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 15-09 19:11

Crazy D

I think we should take a look.

Op donderdag 03 januari 2002 12:28 schreef noid het volgende:
Dan kun je ook een aparte .exe die midi afspeelt.Die kun je dan aansturen met registered windows messages bijvoorbeeld. Maar nu weet ik niet of dat ook in VB zit.
Ja dat kan, subclassje opzetten en je kan msg's oversturen. Alleen is een ActiveX exe op zich dan wel makkelijker, die kun je nl. gewoon als class aansturen, en je kan netjes events terug krijgen ed. Kan met windows messages natuurlijk ook wel, alleen is dit dan makkelijker en minder crash-gevoelig.
DDE zou ook nog een oplossing zijn, maar da's ouderwets :P

Exact expert nodig?


  • lacobo
  • Registratie: April 2000
  • Laatst online: 27-08 16:10

lacobo

Tyros2 fan

Bouw gewoon de mediaplayer 6 in, die kan 't op full speed. Is gewoon een control in VB5 en VB6.

LACOBO's Tyros2 site: http://www.lacobo.com


Verwijderd

Op donderdag 03 januari 2002 12:30 schreef CrazyD_at_work het volgende:

[..]

Ja dat kan, subclassje opzetten en je kan msg's oversturen. Alleen is een ActiveX exe op zich dan wel makkelijker, die kun je nl. gewoon als class aansturen, en je kan netjes events terug krijgen ed.
Lijkt me ook mooier... maar welke events zullen nodig zijn? Als het alleen nodig is voor het afspelen, dan is het misschien alleen nuttig dat er een message verstuurd wordt als het afspelen klaar is....
Kan met windows messages natuurlijk ook wel, alleen is dit dan makkelijker en minder crash-gevoelig.
DDE zou ook nog een oplossing zijn, maar da's ouderwets :P
Ik heb zelf geen problemen ondervonden met registered window messages, maar misschien dat anderen daar wel problemen mee hebben... de keuze zou kunnen zijn: teveel resources weg, maar makkelijker aansturen, of andersom. (en mogelijk crash gevoelig?)

Verwijderd

Op donderdag 03 januari 2002 12:36 schreef LACOBO het volgende:
Bouw gewoon de mediaplayer 6 in, die kan 't op full speed. Is gewoon een control in VB5 en VB6.
die snoept zeker resources.... lijkt me niet wenselijk in het geval van de topic starter.

Verwijderd

Topicstarter
Op donderdag 03 januari 2002 12:38 schreef noid het volgende:

[..]

die snoept zeker resources.... lijkt me niet wenselijk in het geval van de topic starter.
Precies, bovendien heeft het MCI control ook dezelfde vertraging. Die doet precies hetzelfde als de API.

Verwijderd

Op donderdag 03 januari 2002 12:47 schreef dev het volgende:

[..]

Precies, bovendien heeft het MCI control ook dezelfde vertraging. Die doet precies hetzelfde als de API.
Ik heb hier een test app liggen voor het afspelen van MIDI... misschien moet je die ff uitproberen, en kijken of je nog steeds die vertraging hebt ... als het inderdaad zo is ( bij jouw pc, bij mij is er een hele korte vertraging), dan vermoed ik dat er weinig aan je situatie te doen is.

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 15-09 19:11

Crazy D

I think we should take a look.

Op donderdag 03 januari 2002 12:37 schreef noid het volgende:
Ik heb zelf geen problemen ondervonden met registered window messages, maar misschien dat anderen daar wel problemen mee hebben... de keuze zou kunnen zijn: teveel resources weg, maar makkelijker aansturen, of andersom. (en mogelijk crash gevoelig?)
Ik heb ook niet zozeer problemen met windows messages, maar subclassen en VB is nou eenmaal 'tricky business', en kan gewoon onverwachte dingen opleveren. Ik heb er geen moeite mee en ben er niet 'bang' voor maar als het anders kan (op de VB manier dus) ben ik daar wel een voorstander van (tenzij uit performance overwegingen het verstandiger is om met de API en subclassing te gaan spelen).
Is ook makkelijker debuggen trouwens :)

Exact expert nodig?


Verwijderd

Op donderdag 03 januari 2002 13:05 schreef CrazyD_at_work het volgende:

[..]

Is ook makkelijker debuggen trouwens :)
Ik geloof je :)
Ik heb VB nooit gebruikt en ken het derhalve ook niet...

Verwijderd

Topicstarter
Op donderdag 03 januari 2002 13:01 schreef noid het volgende:

[..]

Ik heb hier een test app liggen voor het afspelen van MIDI... misschien moet je die ff uitproberen, en kijken of je nog steeds die vertraging hebt ... als het inderdaad zo is ( bij jouw pc, bij mij is er een hele korte vertraging), dan vermoed ik dat er weinig aan je situatie te doen is.
Thanx. Dat zal ik eens proberen dan, als de vertraging heel klein is moet het te doen zijn, maar langer gaat niet voor dit progje. M'n mail is joost.verburg@wolmail.nl

Subclassen is geen probleem, dit gebruik is vaker.

Misschien is er ook ergens een freeware/open source Win32 command line MIDI speler die heel weinig resources nodig heeft (< 2 MB), ik ben er nog geen goeie tegen gekomen.

Als iemand een C++ progje heeft dat MIDI's afspeelt zou dat ook heel mooi zijn. Ik heb helaas weinig ervaring met C++. Het enige probleem is dan de communicatie tussen de 2 progjes, maar dat moeten we hier ook wel kunnen oplossen :)

Verwijderd

Topicstarter
noid: Bedankt! Check je mail :P

Verwijderd

Topicstarter
Ik heb nu een goed werkend command line MIDI progje in C++. Het killen van dit process en detecteren of het gestart is moet lukken in VB.

Ik heb nog een vraagje:
Hoe zorg ik ervoor dat je t C++ console programma niet met Ctrl+C / Ctrl+Break kunt afsluiten? :)

Verwijderd

Op donderdag 03 januari 2002 21:49 schreef dev het volgende:

Ik heb nog een vraagje:
Hoe zorg ik ervoor dat je t C++ console programma niet met Ctrl+C / Ctrl+Break kunt afsluiten? :)
Weet ik niet 1.2.3., maar wat je zou kunnen proberen, is uit te zoeken of je dat console prg kunt opstarten zonder dat ie zich toont. In Win32 doe je dan ShellExecute, waarbij het laatste argument dan SW_HIDE is. Maar jij doet VB, dus dan weet ik niet of dit werkt...

Verwijderd

Topicstarter
Op donderdag 03 januari 2002 22:10 schreef noid het volgende:

[..]

Weet ik niet 1.2.3., maar wat je zou kunnen proberen, is uit te zoeken of je dat console prg kunt opstarten zonder dat ie zich toont. In Win32 doe je dan ShellExecute, waarbij het laatste argument dan SW_HIDE is. Maar jij doet VB, dus dan weet ik niet of dit werkt...
Ik doe t precies hetzelfde (ShellExecute, SW_HIDE), hij is nu gehide, maar met Ctrl+Break stopt ie nog steeds :(

Verwijderd

Op donderdag 03 januari 2002 22:11 schreef dev het volgende:

[..]

Ik doe t precies hetzelfde (ShellExecute, SW_HIDE), hij is nu gehide, maar met Ctrl+Break stopt ie nog steeds :(
check je mailbox

  • Pc123
  • Registratie: Oktober 2000
  • Laatst online: 15-09 20:53
.

Verwijderd

Topicstarter
Helaas, als deze is opgestart (via shortcut, console, VB, maakt niet uit) en je drukt op Ctrl+Break, dan stopt ie nog steeds :( En toevallig is Ctrl+Break ook de key om in VB te debuggen. Er moet toch een manier zijn om Ctrl+Break te uit te zetten?

[edit]
net stond nog iemand anders ingelogd om deze comp...

Verwijderd

Topicstarter
Nu heb ik dit probleem:

error C2731: 'WinMain' : function cannot be overloaded

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
Denk na...

Zoek maar is in de MSDN.

Al die error code's staan daar netjes overzichtelijk op rij.

Hier: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/HTML/c2731.asp

Verwijderd

Topicstarter
Op vrijdag 04 januari 2002 00:43 schreef The - DDD het volgende:
Denk na...

Zoek maar is in de MSDN.

Al die error code's staan daar netjes overzichtelijk op rij.

Hier: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/HTML/c2731.asp
Zoals je hebt kunnen lezen heb ik de code van iemand gekregen en kan ik zelf geen C++. Ik heb wel dit http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/HTML/c2731.asp gevonden, maar hier kom ik niet verder mee.

Verwijderd

Op vrijdag 04 januari 2002 00:48 schreef dev het volgende:

[..]

Zoals je hebt kunnen lezen heb ik de code van iemand gekregen en kan ik zelf geen C++.
..misschien moet je met die persoon verder mailen... :-)

check je mailbox...

Verwijderd

...
Pagina: 1