Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
117
Task/Play-recorded-sounds/Ring/play-recorded-sounds.ring
Normal file
117
Task/Play-recorded-sounds/Ring/play-recorded-sounds.ring
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
Load "guilib.ring"
|
||||
new qapp {
|
||||
q1=NULL q2=NULL
|
||||
win1 = new qwidget() {
|
||||
setwindowtitle("play sound!") show()
|
||||
setgeometry(100,100,400,400)
|
||||
}
|
||||
new qpushbutton(win1) {
|
||||
setgeometry(50,50,100,30)
|
||||
settext("play1")
|
||||
setclickevent("playmusic1()")
|
||||
show()
|
||||
}
|
||||
new qpushbutton(win1) {
|
||||
setgeometry(200,50,100,30)
|
||||
settext("play2")
|
||||
setclickevent("playmusic2()")
|
||||
show()
|
||||
}
|
||||
new qpushbutton(win1) {
|
||||
setgeometry(50,100,100,30)
|
||||
settext("pause1")
|
||||
setclickevent("pauseplay1()")
|
||||
show()
|
||||
}
|
||||
new qpushbutton(win1) {
|
||||
setgeometry(200,100,100,30)
|
||||
settext("pause2")
|
||||
setclickevent("pauseplay2()")
|
||||
show()
|
||||
}
|
||||
new qpushbutton(win1) {
|
||||
setgeometry(50,150,100,30)
|
||||
settext("stop1")
|
||||
setclickevent("stopplay1()")
|
||||
show()
|
||||
}
|
||||
new qpushbutton(win1) {
|
||||
setgeometry(200,150,100,30)
|
||||
settext("stop2")
|
||||
setclickevent("stopplay2()")
|
||||
show()
|
||||
}
|
||||
lineedit1 = new qlineedit(win1) {
|
||||
setGeometry(50,200,100,30)
|
||||
settext("50")
|
||||
show()
|
||||
}
|
||||
lineedit2 = new qlineedit(win1) {
|
||||
setGeometry(200,200,100,30)
|
||||
settext("50")
|
||||
show()
|
||||
}
|
||||
new qpushbutton(win1) {
|
||||
setgeometry(50,250,100,30)
|
||||
settext("volume1")
|
||||
setclickevent("volume1()")
|
||||
show()
|
||||
}
|
||||
new qpushbutton(win1) {
|
||||
setgeometry(200,250,100,30)
|
||||
settext("volume2")
|
||||
setclickevent("volume2()")
|
||||
show()
|
||||
}
|
||||
new qpushbutton(win1) {
|
||||
setgeometry(50,300,100,30)
|
||||
settext("mute1")
|
||||
setclickevent("mute1()")
|
||||
show()
|
||||
}
|
||||
new qpushbutton(win1) {
|
||||
setgeometry(200,300,100,30)
|
||||
settext("mute2")
|
||||
setclickevent("mute2()")
|
||||
show()
|
||||
}
|
||||
exec()
|
||||
}
|
||||
|
||||
func playmusic1
|
||||
q1 = new qmediaplayer(win1) {
|
||||
setmedia(new qurl("music1.wav"))
|
||||
setvolume(50) play()
|
||||
}
|
||||
|
||||
func playmusic2
|
||||
q2 = new qmediaplayer(win1) {
|
||||
setmedia(new qurl("music2.wav"))
|
||||
setvolume(50) play()
|
||||
}
|
||||
|
||||
func pauseplay1
|
||||
q1.pause()
|
||||
|
||||
func pauseplay2
|
||||
q2.pause()
|
||||
|
||||
func stopplay1
|
||||
q1.stop()
|
||||
|
||||
func stopplay2
|
||||
q2.stop()
|
||||
|
||||
func volume1
|
||||
lineedit1 { vol1 = text() }
|
||||
q1 {setvolume(number(vol1))}
|
||||
|
||||
func volume2
|
||||
lineedit2 { vol2 = text() }
|
||||
q2 {setvolume(number(vol2))}
|
||||
|
||||
func mute1
|
||||
q1.setmuted(true)
|
||||
|
||||
func mute2
|
||||
q2.setmuted(true)
|
||||
78
Task/Play-recorded-sounds/Swift/play-recorded-sounds.swift
Normal file
78
Task/Play-recorded-sounds/Swift/play-recorded-sounds.swift
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
import AVFoundation
|
||||
|
||||
// This example uses AVAudioPlayer for playback.
|
||||
// AVAudioPlayer is the player Apple recommends for playback, since it suitable for songs
|
||||
// and offers control over numerous playback parameters.
|
||||
// It can play any type that is natively supported by OSX or iOS
|
||||
|
||||
class PlayerControl: NSObject, AVAudioPlayerDelegate {
|
||||
let player1:AVAudioPlayer!
|
||||
let player2:AVAudioPlayer!
|
||||
var playedBoth = false
|
||||
var volume:Float {
|
||||
get {
|
||||
return player1.volume
|
||||
}
|
||||
|
||||
set {
|
||||
player1.volume = newValue
|
||||
player2.volume = newValue
|
||||
}
|
||||
}
|
||||
|
||||
init(player1:AVAudioPlayer, player2:AVAudioPlayer) {
|
||||
super.init()
|
||||
self.player1 = player1
|
||||
self.player2 = player2
|
||||
self.player1.delegate = self
|
||||
self.player2.delegate = self
|
||||
}
|
||||
|
||||
func loop() {
|
||||
player1.numberOfLoops = 1
|
||||
player1.play()
|
||||
|
||||
let time = Int64((Double(player1.duration) + 2.0) * Double(NSEC_PER_SEC))
|
||||
|
||||
dispatch_after(dispatch_time(0, time), dispatch_get_main_queue()) {[weak self] in
|
||||
println("Stopping track")
|
||||
self?.player1.stop()
|
||||
exit(0)
|
||||
}
|
||||
}
|
||||
|
||||
func playBoth() {
|
||||
player1.play()
|
||||
player2.play()
|
||||
}
|
||||
|
||||
func audioPlayerDidFinishPlaying(player:AVAudioPlayer!, successfully flag:Bool) {
|
||||
if player === player2 && !playedBoth {
|
||||
playBoth()
|
||||
playedBoth = true
|
||||
} else if player === player2 && playedBoth {
|
||||
loop()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let url1 = NSURL(string: "file:///file1.mp3")
|
||||
let url2 = NSURL(string: "file:///file2.mp3")
|
||||
|
||||
var err:NSError?
|
||||
let player1 = AVAudioPlayer(contentsOfURL: url1, error: &err)
|
||||
let player2 = AVAudioPlayer(contentsOfURL: url2, error: &err)
|
||||
|
||||
let player = PlayerControl(player1: player1, player2: player2)
|
||||
|
||||
// Setting the volume
|
||||
player.volume = 0.5
|
||||
|
||||
// Play track 2
|
||||
// When this track finishes it will play both of them
|
||||
// by calling the audioPlayerDidFinishPlaying delegate method
|
||||
// Once both tracks finish playing, it will then loop the first track twice
|
||||
// stopping the track after 2 seconds of the second play
|
||||
player.player2.play()
|
||||
|
||||
CFRunLoopRun()
|
||||
Loading…
Add table
Add a link
Reference in a new issue