Toon posts:

[Visual Basic] Een paar vraagjes

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Ben nu een paar dagen met Visual Basic bezig, best wel grappig. Echt moeilijk ook niet, maar toch een paar dingetjes die ik nergens terug heb kunnen vinden.

Ik ben bezig met een MP3 playertje, waarbij je een soort playlist hebt, en straks (zit er nog niet in) de intro/outro tijd kunt aangeven zodat een volgende MP3 in de andere player op het juiste moment gestart wordt. Bijvoorbeeld bij voicetracks. Bijvoorbeeld: 1 mp3 met tekst van 30 seconde en daarna een mp3 met een intro van 10 seconden. Op 20 seconden moet die mp3 dus gestart worden. Nou, de vraagjes:

- Hoe kan ik een string afkorten? Ik wil alleen de eerste 2 cijfers hebben van de lengte, voor een progress bar

- hoe kan ik een pauze erin zetten? Als die tekst-mp3 gestart wordt moet er bijvoorbeeld 20 seconden pauze komen, om vervolgens verder te gaan met de volgende mp3 starten.

Dit heb ik nu: http://home.nielsonline.com:8080/mp3ding.exe

Ik ga overigens nu weg maar ik ga vanavond als ik terug kom de antwoorden lezen (als die er zijn :)).

Bedankt alvast :)

  • Speedpete
  • Registratie: December 2001
  • Laatst online: 05-09 11:10

Speedpete

was barman

- Hoe kan ik een string afkorten? Ik wil alleen de eerste 2 cijfers hebben van de lengte, voor een progress bar
code:
1
Left$(STRING,LENGTE)

Left$("Hik",2) geeft dus Hi
- hoe kan ik een pauze erin zetten? Als die tekst-mp3 gestart wordt moet er bijvoorbeeld 20 seconden pauze komen, om vervolgens verder te gaan met de volgende mp3 starten.
Geen idee, werkt nooit met multi-media in VB.

Object-oriented programming offers a sustainable way to write spaghetti code | Hoe vleugels wel werken.


  • ParaNoiMia
  • Registratie: Mei 2000
  • Laatst online: 13-09 20:19
Over die pauze, ik weet niet of er in dat mp3 control iets zit, anders moet je es naar timers kijken (standaard VB control)

Verwijderd

Topicstarter
Thanks! :)

Alleen de Timer kom ik niet uit. Dit is het stukje code:
PHP:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?
Private Sub cmdStart_Click()
    If cmdStart.Caption = "Start" Then
    
        MediaPlayer1.Enabled = False
        MediaPlayer2.Enabled = False
        
        loopTo = 7
        
        cmdStart.Caption = "Stop"
        Dim x As Integer
        For x = 0 To loopTo
            mp3 = listPlaylist.List(x)

            If MediaPlayer1.Enabled = False Then
                MediaPlayer1.FileName = mp3
                MediaPlayer1.Enabled = True
                
                playTime = Split(MediaPlayer1.Duration, ".")
                playTime = playTime(0) &amp;amp;amp;amp; Left$(playTime(1), 1)
                playTime = playTime * 10
                Timer1.Interval = playTime
                Timer1.Enabled = True
                labelPlayer1FileName.Caption = MediaPlayer1.FileName
        
            ElseIf MediaPlayer2.Enabled = False Then
                MediaPlayer2.FileName = mp3
                MediaPlayer2.Enabled = True
                
                playTime = Split(MediaPlayer2.Duration, ".")
                playTime = playTime(0) &amp;amp;amp;amp; Left$(playTime(1), 1)
                playTime = playTime * 10
                Timer2.Interval = playTime
                Timer2.Enabled = True
                LabelPlayer2FileName.Caption = MediaPlayer2.FileName
            End If
            
            Timer3.Interval = playTime - 100
            Timer3.Enabled = True
            
        Next x
        
    ElseIf cmdStart.Caption = "Stop" Then
        cmdStart.Caption = "Start"
        Timer1.Enabled = False
        Timer2.Enabled = False
        pbLoad1.Value = 0
        pbLoad2.Value = 0
        MediaPlayer1.CurrentPosition = 0
        MediaPlayer2.CurrentPosition = 0
        MediaPlayer1.Stop
        MediaPlayer2.Stop
    End If
    
End Sub
?>

De bedoeling is dat hij de hele playlist looped, en als de vorige mp3 in player 1 afgelopgen is, de volgende in player 2 start. Die - 100 is om een beetje een overlapping te krijgen. Dat ga ik nog verder uitbreiden naar een databaseje zodat je per mp3 de intro/outro tijd aan kunt geven. Na elk 'loop item' moet dus die pauze komen.

Iemand die me daar nog even mee kan helpen?

Ik heb mp3ding.exe ff ge-update met wat ik nu heb. Als je nu 2 mp3's in de playlist gooit, en op play drukt, gaan ze tegelijk lopen...

[ code zal wel niet helemaal netjes zijn, maar ik ben maar een beginner :) ]

Verwijderd

Topicstarter
Weet echt niemand het? ;(

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Een timer zorgt alleen voor een event op het gegeven interval, er wordt niet gepauzeerd. Wat je de kunt doen is een boolean-variabele op True laten zetten door je onTimer event, en daarop controleren in je loop.

Verwijderd

Topicstarter
Ja met zoiets heb ik al zitten spelen maar ik kom daar niet echt uit. Heb je daar een voorbeeldje van?

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op zondag 23 december 2001 13:52 schreef [nielsonline] het volgende:
Ja met zoiets heb ik al zitten spelen maar ik kom daar niet echt uit. Heb je daar een voorbeeldje van?
niet echt, heb iets van 5 jaar niet meer met vb geprutst. maar wat is precies het probleem?

Verwijderd

Topicstarter
Tja ik volg mezelf eigenlijk ff niet in wat ik aan 't doen ben :).

Ik ga als ik antwoord heb op die vraag ff opnieuw beginnen.

Verwijderd

Topicstarter
Kheb nu na lang zoeken op Google een Module dingetje gevonden waarmee je een sleep() kunt maken.

Maar..

For X = 0 to 4
Label1.Caption = Label1.Caption & " -> " & X
sleep(100)
Next X

(ff uit m'n hoofd getyped)

dan gaat 'ie eerst 5 seconde wachten en dan opeens 0 -> 1 -> 1 -> 3 -> 4 in Label1.Caption.

:{

Iemand?

  • Blue-eagle
  • Registratie: September 2000
  • Niet online
Laat functie sleep() eens zien?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 15:41

mulder

ik spuug op het trottoir

Kun je geen Label.Update doen. Sleep is trouwens toch een API call?

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
Op zondag 23 december 2001 22:15 schreef Blue-eagle het volgende:
Laat functie sleep() eens zien?
http://www.a1vbcode.com/vbtip.asp?ID=18

Die heb ik gebruikt, dus in zo'n Module ding (.bas) gezet.

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 15:41

mulder

ik spuug op het trottoir

code:
1
2
3
4
5
  For x = 0 To 4
    Label1.Caption = Label1.Caption & " -> " & x
    Label1.Refresh
    Sleep (100)
  Next x

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
Thanks! :)

Ben 'r nu bijna.. (nee nog niet :{)

Want.. als 'ie nu 'sleeped' dan stopt MediaPlayer ook, en die moet gewoon door gaan natuurlijk :(

Verwijderd

Als je DoEvents() in je code zegt, wordt er ook tijd gemaakt voor andere processen...Weet niet of je r wat aan hebt, maar denk het wel.

  • KnEuTeR
  • Registratie: Mei 2000
  • Laatst online: 24-02-2024

KnEuTeR

iedereen heeft een handelsmerk

[nielsonline]
Linux Jehova ;o)
een Linux Jehova die programmeert in Visual Basic?

Computers ain't that smart, Whatever man built could be taken apart


Verwijderd

Topicstarter
Op maandag 24 december 2001 22:03 schreef Joshua30 het volgende:
Als je DoEvents() in je code zegt, wordt er ook tijd gemaakt voor andere processen...Weet niet of je r wat aan hebt, maar denk het wel.
Thanks, ga 't uitzoeken :)
Op maandag 24 december 2001 22:07 schreef KnEuTeR het volgende:

[..]

een Linux Jehova die programmeert in Visual Basic?
Ja zoiets :+

Verwijderd

Sleep gooit m helemaal stil :P

Je kunt met een timer control een timer interval instellen en reageren bij het Timer event.

Verwijderd

Topicstarter
Met DoEvents() is het gelukt! :)
code:
1
2
3
4
5
6
wrkStartTime = Now
Do
DoEvents
wrkSeconds = Abs(DateDiff("s", wrkStartTime, Now))
If (wrkSeconds >= waitTime) Then Exit Do
Loop

Ik heb nog een paar vraagjes, ik zal ze maar ff in dit topic houden :)

- Hoe kan ik het bovenstaande stukje stoppen? Ik heb een stop-knop en bijvoorbeeld 3 mp3's onder elkaar. mp3 1 duurt 10 seconde. Als ik 'm start en druk na 2 seconde op STOP... dan stopt 'ie.. maar na 8 seconde stilte begint mp3 2..

- Als ik 4 players heb (voor live-mixen), hoe zorg ik dan dat met F1 player 1 start, F2 player 2, etc.. ?

Verwijderd

Topicstarter
Kick! :)
code:
1
2
3
4
5
6
7
8
wrkStartTime = Now
waitTime = 2

Do
DoEvents
wrkSeconds = Abs(DateDiff("s", wrkStartTime, Now))
If (wrkSeconds >= waitTime) Then Exit Do
Loop

Is zoiets ook mogelijk in milliseconden? Hiermee doet het wel wat ik wil, maar alleen op hele seconden.. om dingen echt strak te kunnen doen zou het fijn zijn als ik bijvoorbeeld iets kan starten na 2.35 seconden.. :)

Verwijderd

GetTickCount API gebruiken

Verwijderd

Topicstarter
Op woensdag 02 januari 2002 00:28 schreef dev het volgende:
GetTickCount API gebruiken
:* je bent geweldig :), het werkt! :)
Pagina: 1