?
Solved

stop sound the number of seconds entered in a textbox

Posted on 2013-11-04
7
Medium Priority
?
247 Views
Last Modified: 2013-11-04
I want to play a sound and run a sub(StopSound) after the number of seconds entered into a text box(txtSoundLength)
How ?
0
Comment
Question by:isnoend2001
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
7 Comments
 
LVL 30

Expert Comment

by:anarki_jimbel
ID: 39622856
Try this:

1. Create text box lost focus event handler (or (text) change, may be)
2. Put his code into handler
      My.Computer.Audio.Play("C:\mysounds.wav") where C:\mysounds.wav - path to your sound file
3. Start timer
4. After timer elapses N seconds where N is a number from text box - call:
      My.Computer.Audio.Stop()
0
 

Author Comment

by:isnoend2001
ID: 39622991
Didn't know you could play sounds like that
The sound is in a resource file i don't need the code to play the sound. just need code to play it for the length in the texbox:
This does not work:

Private Sub PlaySound()
sndData = LoadResData("SIREN", "SOUND")
sndPlaySound sndData(0), SND_LOOP Or SND_ASYNC Or SND_MEMORY'play the sound
mSoundLength = Val(txtSoundLength) 'how long to play sound
    Timer2.Interval = 60000 'one minute
    Timer2.Enabled = True
    If Now >= mSoundLength Then
    StopSound
    Timer2.Enabled = False
    End If
End Sub
 
it goes directly to StopSound. Why ?
0
 
LVL 30

Expert Comment

by:anarki_jimbel
ID: 39623142
Unfortunately I have no VB6 on me current computer.
What you need to do is start sound in one method, e.g., when you type a number or click a button and stop it to another method, in timer handler, when you have a tick after required period.

In VB.Net it woud look like:

    Private timlength As Integer
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        timlength = CInt(TextBox1.Text) '' convert text to a number
        PlaySound()
    End Sub


    Private Sub PlaySound()

        Me.Timer1.Interval = timlength * 1000
        My.Computer.Audio.Play("C:\temp\Police.wav", AudioPlayMode.Background)
        Me.Timer1.Start()

    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        ' StopSound()
        My.Computer.Audio.Stop()
    End Sub

Open in new window

0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:isnoend2001
ID: 39623168
i have code to start and stop the sound:

Private Sub PlaySound()
sndData = LoadResData("SIREN", "SOUND")
sndPlaySound sndData(0), SND_LOOP Or SND_ASYNC Or SND_MEMORY

Sub StopSound()
sndPlaySound ByVal 0, 0 'stop sound
End Sub
just want the timer to run the sub StopSound it after the seconds in a textbox
0
 
LVL 30

Accepted Solution

by:
anarki_jimbel earned 2000 total points
ID: 39623260
See, currently you have the call to StopSound inside the PlaySound method:
Private Sub PlaySound()
sndData = LoadResData("SIREN", "SOUND")
sndPlaySound sndData(0), SND_LOOP Or SND_ASYNC Or SND_MEMORY'play the sound
mSoundLength = Val(txtSoundLength) 'how long to play sound
    Timer2.Interval = 60000 'one minute
    Timer2.Enabled = True
    If Now >= mSoundLength Then
    StopSound
    Timer2.Enabled = False
    End If
End Sub

Open in new window


But you need to move this call to Timer1_Tick method. Otherwise you call it immediately.
0
 

Author Closing Comment

by:isnoend2001
ID: 39623287
Private Sub PlaySound()
    sndData = LoadResData("SIREN", "SOUND")
    sndPlaySound sndData(0), SND_LOOP Or SND_ASYNC Or SND_MEMORY
    Timer1.Interval = CLng(Text1.Text) * 1000
    Timer1.Enabled = True
End Sub

Sub StopSound()
    sndPlaySound ByVal 0, 0 'stop sound
    Timer1.Enabled = True
End Sub
I got it
Private Sub Timer1_Timer()
    StopSound
    Timer1.Enabled = False
End Sub

Private Sub Command1_Click()
    PlaySound
End Sub
0
 
LVL 30

Expert Comment

by:anarki_jimbel
ID: 39623302
That's it! :)
0

Featured Post

Want to be a Web Developer? Get Certified Today!

Enroll in the Certified Web Development Professional course package to learn HTML, Javascript, and PHP. Build a solid foundation to work toward your dream job!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Article by: Martin
Here are a few simple, working, games that you can use as-is or as the basis for your own games. Tic-Tac-Toe This is one of the simplest of all games.   The game allows for a choice of who goes first and keeps track of the number of wins for…
I was working on a PowerPoint add-in the other day and a client asked me "can you implement a feature which processes a chart when it's pasted into a slide from another deck?". It got me wondering how to hook into built-in ribbon events in Office.
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
Suggested Courses
Course of the Month13 days, 2 hours left to enroll

777 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question