[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

stop sound the number of seconds entered in a textbox

Posted on 2013-11-04
7
Medium Priority
?
252 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
  • 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
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 

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

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Introduction While answering a recent question about filtering a custom class collection, I realized that this could be accomplished with very little code by using the ScriptControl (SC) library.  This article will introduce you to the SC library a…
You can of course define an array to hold data that is of a particular type like an array of Strings to hold customer names or an array of Doubles to hold customer sales, but what do you do if you want to coordinate that data? This article describes…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
Suggested Courses
Course of the Month19 days, 7 hours left to enroll

872 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