[vb] 10 wav files in 1 file

Pagina: 1
Acties:
  • 105 views sinds 30-01-2008
  • Reageer

  • commeric
  • Registratie: November 2002
  • Laatst online: 01-07 08:51
Kazaam,

Ik zoek/probeer een module te schrijven voor visual basic 6, waarmee je wav files kunt afspelen die in 1 groot bestand staan.

Je hebt vast wel eens in een map van een spelletje gekeken, dan staat daar soms sound.bla en dat bestand is dan 25 mb ofzo en daar zitten dan alle geluiden van dat spel in.
Nu heb ik een programma gemaakt, die 10 of nog wel meer wav files afspeeld. Maar ik vind het niet zo netjes staan om 10 wav files in een dir te zetten, dus ik wil ook zoiets dat allemaal files in 1 komen.

Ik hoop dat jullie me begrijpen.
:)

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 09:37

Basszje

Reisvaap!]

Je wilt een soort geluidsbank maken bedoel je :) . Ik weet niet precies wat voor soort bestanden dat precies zijn, maar je zou kunnen zoeken hoe dat met collecties wav bestanden is geregeld en of daar modulen oid zijn die je kan gebruiken in VB.

Volgens mij heten die dingen iets van audio-pack oid :?

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


  • commeric
  • Registratie: November 2002
  • Laatst online: 01-07 08:51
hmzz dit vergemakkelijkt het zoeken al wat...ik heb al een naam

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 09:37

Basszje

Reisvaap!]

commeric2 schreef op 28 January 2003 @ 17:35:
hmzz dit vergemakkelijkt het zoeken al wat...ik heb al een naam
Ik heb ff voor je gegoogled, maar helaas niets gevonden. Denk dat je iemand nodig heeft die er echt ook wat van af weet en niet eens of andere derderangs prutser als moi :P ;)

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Misschien heb je iets aan de (ingebouwde) resource editor van VB? Als je niet weet wat dat is moet je er effe wat onderzoek naar plegen, het is me wat teveel om nu uit te gaan leggen (ga zo naar huis), maar daar kom je denk ik een heel eind mee.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • commeric
  • Registratie: November 2002
  • Laatst online: 01-07 08:51
RobIII schreef op 28 januari 2003 @ 17:37:
Misschien heb je iets aan de (ingebouwde) resource editor van VB? Als je niet weet wat dat is moet je er effe wat onderzoek naar plegen, het is me wat teveel om nu uit te gaan leggen (ga zo naar huis), maar daar kom je denk ik een heel eind mee.
ik denk dat je het bij het goede einde hebt
hier heb ik een simpele tut gevonden er over (als mensen dit topic met de search vinden)
http://www.ibirbal.com/downloads/vbrfkn.pdf
Ik ga het ff proberen!
tnx

  • commeric
  • Registratie: November 2002
  • Laatst online: 01-07 08:51
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
rivate Declare Function PlaySound Lib "winmm.dll" _
 Alias "PlaySoundA" (ByVal lpszName As String, _
 ByVal hModule As Long, ByVal dwFlags As Long) As Long
Private Const SND_FILENAME = &H20000     ' Name is a file name.
Private Const SND_ASYNC = &H1            ' Play asyncronously.
Private Const SND_NODEFAULT = &H2

Public Sub copyresource(dtype As String, resfile As String)
Dim bres() As Byte
Dim filers As Long
If Dir(resfile) = "" Then
    bres = LoadResData(dtype, "CUSTOM")
    fileres = FreeFile
    Open resfile For Binary Access Write As #fileres
    Put #fileres, , bres
    Close #fileres
End If
End Sub

Public Sub load_resource_data_files()
copyresource "HOI", App.Path & "/first.tmp"
End Sub

Private Sub Command1_Click()
 Call load_resource_data_files
 getfile = Dir("First.tmp")
 Call PlaySound(getfile, 0, SND_FILENAME Or SND_ASYNC Or SND_NODEFAULT)
End Sub


Dit werkt, maar is het niet mogelijk om een file uit de resource te halen, zonder hem eerst naar de hd te copieren?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Als ik me niet vergis wel, maar ik heb me nooit echt bezig gehouden met resources. Alleen voor verschillende talen van een app wil ik nog wel eens een resource gebruiken.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Dit doet precies wat je wilt volgens mij:

http://www.syix.com/wpsjr1/aresource.zip

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Ik heb ook ooit zoiet proberen te maken maar dan met plaatjes die in een bestand zaten en dan ingeladen werden in het geheugen. Dit kon echter niet zonder die bestanden eerst te 'extracten' en daarna naar in te laden en dan weer te verwijderen. Je ziet er niets van en het lijkt alsof ze nooit uit het bestand komen. Ik heb dat gedaan met de gewonen binary functies in vb.net als fileget en fileput etc. zoek maar eens rond op google je vind vast wel wat.

Noushka's Magnificent Dream | Unity


Verwijderd

Dat is onzin. Zoals ik hierboven al zei kan het wel degelijk met wav bestanden. Voor plaatjes is het ook mogelijk, zelfs veel makkelijker.

[ Voor 3% gewijzigd door Verwijderd op 28-01-2003 20:36 ]


  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 15-08 11:47

Sponge

Serious Game Developer

zoek op www.pscode.com naar "pak file" en wat varianten daarvan... dan kom je een aantal leuke stukjes code tegen. Zelf heb ik een versie wat omgebouwt en wat geoptimaliseerd hier en daar..voor mijn spel, zodat het echt super snel is :D

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 23-08 10:39

Janoz

Moderator Devschuur®

!litemod

Michali schreef op 28 januari 2003 @ 20:03:
Ik heb ook ooit zoiet proberen te maken maar dan met plaatjes die in een bestand zaten en dan ingeladen werden in het geheugen. Dit kon echter niet zonder die bestanden eerst te 'extracten' en daarna naar in te laden en dan weer te verwijderen. Je ziet er niets van en het lijkt alsof ze nooit uit het bestand komen. Ik heb dat gedaan met de gewonen binary functies in vb.net als fileget en fileput etc. zoek maar eens rond op google je vind vast wel wat.



Tja, en toen werd het programma geinstaleerd door de admin en uitgevoerd door een gebruiker met beperkte rechten en had het programma plots geen rechten meer om bestanden aan te maken...

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Zon pogrammma wordt het toch niet. Het is een rts game met directx directdraw en die kan niet zomaar uit een resource bestand laden (althans, dat weet ik dan nog niet). Daar voor heb ik deze manier gebruikt. Ik zou anders ook wel willen weten hoe het dan makkelijker kan hoor, roep maar.

Noushka's Magnificent Dream | Unity


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
41.6C.6D.61.72 schreef op 28 januari 2003 @ 22:16:
zoek op www.pscode.com naar "pak file" en wat varianten daarvan... dan kom je een aantal leuke stukjes code tegen. Zelf heb ik een versie wat omgebouwt en wat geoptimaliseerd hier en daar..voor mijn spel, zodat het echt super snel is :D
Al deze progjes hier doen het op de zelfde manier als ik dat had gedaan.

Noushka's Magnificent Dream | Unity


  • unclero
  • Registratie: Juni 2001
  • Laatst online: 09:43

unclero

MB EQA ftw \o/

Je kunt misschien je wavjes in een Access database als OLE objecten hangen. En die kun je er dan met de OLE data control oid weer uitplukken..

Quelle chimère est-ce donc que l'homme? Quelle nouveauté, quel monstre, quel chaos, quel sujet de contradiction, quel prodige!


  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 09:37

Basszje

Reisvaap!]

unclero schreef op 29 januari 2003 @ 11:37:
Je kunt misschien je wavjes in een Access database als OLE objecten hangen. En die kun je er dan met de OLE data control oid weer uitplukken..
Dat klinkt als brakheid :D . Lijkt me eerlijk gezegd niet echt een optie. Multimedia in database zuigt zowiezo imo :)

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Basszje schreef op 29 januari 2003 @ 11:41:
[...]


Dat klinkt als brakheid :D . Lijkt me eerlijk gezegd niet echt een optie. Multimedia in database zuigt zowiezo imo :)
Jij zegt het, maar ik dacht het! :P

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 15-08 11:47

Sponge

Serious Game Developer

Janoz schreef op 28 januari 2003 @ 22:34:

[...]



Tja, en toen werd het programma geinstaleerd door de admin en uitgevoerd door een gebruiker met beperkte rechten en had het programma plots geen rechten meer om bestanden aan te maken...
Tsja, ik weet geen andere oplossing behalve de bytes van de files in een DirectSound buffer gooien.. trouwens, moet de Temp directory van windows oid niet altijd schrijfbaar zijn? Dan kan daar die tijdelijke file ingezet worden..

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 23-08 10:39

Janoz

Moderator Devschuur®

!litemod

41.6C.6D.61.72 schreef op 29 januari 2003 @ 13:00:
[...]


Tsja, ik weet geen andere oplossing behalve de bytes van de files in een DirectSound buffer gooien.. trouwens, moet de Temp directory van windows oid niet altijd schrijfbaar zijn? Dan kan daar die tijdelijke file ingezet worden..


idd is de temp altijd wel beschrijfbaar. Dat weet ik, dat weet jij, maar ondertussen worden er nog veel apps gemaakt waarbij dat niet zo is. Nu stimuleerd MS wel dat je niet met je administrator acount in moet loggen, maar door dit soort implementaties van veel software wordt je hier nog steeds toe gedwongen.

Ik vind het trouwens erg vreemd dat in het complete VB niet een soort resource systeem zit. Zijn die objecten dan alleen te vullen door ze een bestandsnaam in een string mee te geven?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Je kunt met een plaatje ook prima direct uit een resource inlezen, zijn genoeg voorbeelden van te vinden.

  • unclero
  • Registratie: Juni 2001
  • Laatst online: 09:43

unclero

MB EQA ftw \o/

Tja, eigenlijk zou ik gewoon adviseren om de boel in C/C++ te bouwen. Dan kun je dat multi-soundfile makkelijk implementeren..

Quelle chimère est-ce donc que l'homme? Quelle nouveauté, quel monstre, quel chaos, quel sujet de contradiction, quel prodige!


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
unclero schreef op 29 januari 2003 @ 13:50:
Tja, eigenlijk zou ik gewoon adviseren om de boel in C/C++ te bouwen. Dan kun je dat multi-soundfile makkelijk implementeren..
Dit soort reacties snap ik nou nooit. Alles is op te lossen door het compleet anders aan te pakken. Wiedes. Maar hij zit nou eenmaal in VB, en stelt daar een vraag over. Krijg je antwoorden als "Ik zou het in C/C++ bouwen" of "VB? Da's toch Windows? Ga *Nix draaien".

Simpel word ik ervan. Het is heel eenvoudig: Meneer stelt een vraag en wil daar graag antwoord op. Als ik vraag "Hoe zaag ik een boom om?" dan wil ik horen "Met een zaag" en niet "Waarom wil je een boom omzagen?" of "Bomen? Ik zou naar de ijzerhandel gaan, da's veel sterker dan hout!"....

Bleuch...

[ Voor 6% gewijzigd door RobIII op 30-01-2003 11:15 . Reden: typo ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Mr. B.
  • Registratie: Mei 2000
  • Niet online
commeric2 schreef op 28 januari 2003 @ 18:05:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
rivate Declare Function PlaySound Lib "winmm.dll" _
 Alias "PlaySoundA" (ByVal lpszName As String, _
 ByVal hModule As Long, ByVal dwFlags As Long) As Long
Private Const SND_FILENAME = &H20000     ' Name is a file name.
Private Const SND_ASYNC = &H1            ' Play asyncronously.
Private Const SND_NODEFAULT = &H2

Public Sub copyresource(dtype As String, resfile As String)
Dim bres() As Byte
Dim filers As Long
If Dir(resfile) = "" Then
    bres = LoadResData(dtype, "CUSTOM")
    fileres = FreeFile
    Open resfile For Binary Access Write As #fileres
    Put #fileres, , bres
    Close #fileres
End If
End Sub

Public Sub load_resource_data_files()
copyresource "HOI", App.Path & "/first.tmp"
End Sub

Private Sub Command1_Click()
 Call load_resource_data_files
 getfile = Dir("First.tmp")
 Call PlaySound(getfile, 0, SND_FILENAME Or SND_ASYNC Or SND_NODEFAULT)
End Sub


Dit werkt, maar is het niet mogelijk om een file uit de resource te halen, zonder hem eerst naar de hd te copieren?
Dat is zeker mogelijk :)

Ik gebruik daarvoor altijd de volgende module:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Option Explicit
  Private Const SND_ASYNC = &H1
  Private Const SND_NODEFAULT = &H2
  Private Const SND_MEMORY = &H4

  Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As Any, ByVal uFlags As Long) As Long
  Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long

Function PlayResWav(ByVal ResourceId As String) As Long
  Dim Ret As Long
  Dim SoundBuffer As String

  On Error Resume Next
  SoundBuffer = StrConv(LoadResData(ResourceId, "WAVSOUND"), vbUnicode)
  Ret = sndPlaySound(SoundBuffer, SND_ASYNC Or SND_NODEFAULT Or SND_MEMORY)
  PlayResWav = Ret
End Function

Sub StopSound()
  Call sndPlaySound(0&, 0&)
End Sub

Suc6 :)

StatBar.nl - @GoT

Het verschil tussen theorie en praktijk is in de praktijk altijd veel groter dan in theorie.


  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 15-08 11:47

Sponge

Serious Game Developer

Mr. B. schreef op 30 januari 2003 @ 15:04:
[...]

Dat is zeker mogelijk :)

Ik gebruik daarvoor altijd de volgende module:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Option Explicit
  Private Const SND_ASYNC = &H1
  Private Const SND_NODEFAULT = &H2
  Private Const SND_MEMORY = &H4

  Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As Any, ByVal uFlags As Long) As Long
  Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long

Function PlayResWav(ByVal ResourceId As String) As Long
  Dim Ret As Long
  Dim SoundBuffer As String

  On Error Resume Next
  SoundBuffer = StrConv(LoadResData(ResourceId, "WAVSOUND"), vbUnicode)
  Ret = sndPlaySound(SoundBuffer, SND_ASYNC Or SND_NODEFAULT Or SND_MEMORY)
  PlayResWav = Ret
End Function

Sub StopSound()
  Call sndPlaySound(0&, 0&)
End Sub

Suc6 :)
Mja, maar met resource files moet je uitkijken ;). Namelijk, bij veel toepassingen moet je de applicatie compilen voordat het werkt (de res file komt in de exe)...

  • Mr. B.
  • Registratie: Mei 2000
  • Niet online
41.6C.6D.61.72 schreef op 30 januari 2003 @ 21:48:
[...]


Mja, maar met resource files moet je uitkijken ;). Namelijk, bij veel toepassingen moet je de applicatie compilen voordat het werkt (de res file komt in de exe)...
Klopt... maar dit werkt ook gewoon in de VB IDE :)

StatBar.nl - @GoT

Het verschil tussen theorie en praktijk is in de praktijk altijd veel groter dan in theorie.


  • commeric
  • Registratie: November 2002
  • Laatst online: 01-07 08:51
hhmzz idd de res file zit in de exe, maar het gaat maar om max 20 wavjez

En het werkt super nu, het is voor een soort MSN addon als iemand hoi zegt dat je dan ook hoi in geluid hoort.
Pagina: 1