Posted: Thu Dec 19, 2002 8:46 pm Post subject: [Tutorial]How to use sound and music in Turing
How to use sound and music in Turing
There are several different methods of adding music and sound to your games and programs. The main methods are using the play command, the Music command and the sound comand.
The Code:
Play
play ("Notes")
notes are a b c d e f g
> and < will change the octave
flats are - ; sharps are +
to change the length of the note put a number in front of it. 1 (whole note), 2 (half note), 4 (quarter note), 8 (eight note) and 6 (sixteenth note)
p will add rests to the song
Music
Music.PlayFile ("filename") %play a sound or music file
Music.SoundOff %stop playing the file
Note: playable file types are wav, snd, mod, and mid (mp3 too in newer turings)
Sound
sound (frequency, duration) %time is in milliseconds
How to use the code:
Note: Turing will play the whole file or string of notes before it cautions along with the rest of the code. To run music or sound and run your program at the same time you need to use a fork
Play code
Simple examples
code:
play ("<+A") % a sharp in a lower octave
play (">8abcdefgfedcba") %some eighth notes in a higher octave
play ("<<1-a-b-c-d-e-f-g") %some whole notes in two octaves %lower then middle c and are all flats
Use other code the same time as play
code:
var i : int := 0
%process that plays music
process playstuff
loop
play (">abcdefgfedcb")
end loop
end playstuff
fork playstuff %fork it to play music
loop
i += 1
put i, " + ", i, " = ", i + i %do some simple math
delay (1000)
end loop
Music code
code:
var i : int := 0
process playstuff
loop
Music.PlayFile ("bat.MID")
end loop
end playstuff
fork playstuff
loop
i += 1
put i, " + ", i, " = ", i + i
delay (1000)
end loop
Note: the .mid file or the music file you use must be in the same dir as your Turing file or you must specify the dir where you put the files name.
Sound Code
Ex 1.
sound (440, 1000) % this will play a sound that is 440 herzts for 1 seconed
Ex 2.
code:
for i : 1 .. 10
put i
sound ( 100 * i, 500 ) % Sound note for 1/2 second
end for
Ex 3.
code:
var i : int := 0
%process that plays music
process playstuff
loop
sound (440, 500)
sound (400, 500)
sound (500, 500)
sound (360, 500)
end loop
end playstuff
fork playstuff %fork it to play music
loop
i += 1
put i, " + ", i, " = ", i + i %do some simple math
delay (1000)
end loop
this is an old turale form my old site, if you have any comanets about it plzs post and let us know. also if you see anything wrong with it wich is very likey that whode also help if you posted and let us know.
Edit - Jay Lo told us of the info below
play CD files
yes! now you can make your very own CD player in turing!
ladies and gentlemen, here is your code:
Syntax: Music.PlayFile ("cd")
- plays entire cd
Music.PlayFile ("cd:x")
- where x is the track number
Sponsor Sponsor
cutecotton
Posted: Mon Dec 23, 2002 1:03 am Post subject: (No subject)
thank you soo much, you are a blessing from god, i was JSUT going to ask around to see how you can do that...ur a lifesaver! thank you!
Danger Zone
Posted: Thu Jun 05, 2003 9:55 am Post subject: (No subject)
I think my school has a older version of turing, all those play note commands work and stuff but when I go to listen to the thing, nothing comes out. Any Idea what may be causing this? I know different frequenceys work like
sound(100,100)
that works but never the notes like F or D etc none of them work.
Tony
Posted: Thu Jun 05, 2003 12:58 pm Post subject: (No subject)
Posted: Thu Jun 05, 2003 3:33 pm Post subject: (No subject)
I know that the play() command works in oot 3.1
BlAcK TuRtLe
Posted: Thu Jun 05, 2003 4:52 pm Post subject: (No subject)
Wow so that's how you do it. Now I can put sound in my end of year program. Thanks alot.
JayLo
Posted: Thu Jun 05, 2003 8:58 pm Post subject: (No subject)
You forgot CD files
yes! now you can make your very own CD player in turing!
ladies and gentlemen, here is your code:
Syntax: Music.PlayFile ("cd")
- plays entire cd
Music.PlayFile ("cd:x")
- where x is the track number
Danger Zone
Posted: Fri Jun 06, 2003 9:01 am Post subject: (No subject)
my version of turing is 4.0.0 at least that's what help says when I go to "about turing"
Sponsor Sponsor
heythere
Posted: Thu Jun 19, 2003 11:46 am Post subject: (No subject)
if i use a lot of sound does it lag the program im running?
JSBN
Posted: Thu Jun 19, 2003 11:49 am Post subject: (No subject)
it can on a slower computer. THe computers that i have @ school really are quite bad, so on those computers, if u have sound, the program barley runs. But on my computer the program runs perfectly.
Asok
Posted: Thu Jun 19, 2003 3:37 pm Post subject: (No subject)
JSBN, those computers don't have sound cards.
JayLo
Posted: Thu Jun 19, 2003 5:58 pm Post subject: (No subject)
rawr. cdplayer.
code:
import GUI
var cdWindow : int := Window.Open ("graphics:900;300")
var cdBack : int := Pic.FileNew ("cdBack.jpg")
var streamNumber : int
var fileName : string
var maxTracks : int := 0
var cdDrive : string
var track : int := 1
var currentTrack : string := "cd:" + intstr (track)
var fontID : int := Font.New ("verdana:10")
var playPic : int := Pic.FileNew ("play.jpg")
var stopPic : int := Pic.FileNew ("stop.jpg")
var nextPic : int := Pic.FileNew ("next.jpg")
var prevPic : int := Pic.FileNew ("previous.jpg")
var playButton : int
var stopButton : int
var nextTrack : int
var previousTrack : int
var quitButton : int
var playing : boolean := false
var cdDriveField, cdDriveLabel : int
var trackID : int := Font.New ("verdana:30")
process playTrack
Music.PlayFile (currentTrack)
end playTrack
procedure playMusic
playing := true
fork playTrack
end playMusic
procedure stopMusic
Music.PlayFileStop
playing := false
end stopMusic
procedure next
Music.PlayFileStop
if track = maxTracks then
track := maxTracks
Draw.FillBox (340, maxy div 2 - 30, 340 + Font.Width ("Track: " + intstr (track), trackID), maxy div 2 + 40, darkgrey)
Font.Draw ("Track: " + intstr (track), 340, maxy div 2 - 30, trackID, 43)
else
track += 1
Draw.FillBox (340, maxy div 2 - 30, 340 + Font.Width ("Track: " + intstr (track), trackID), maxy div 2 + 40, darkgrey)
Font.Draw ("Track: " + intstr (track), 340, maxy div 2 - 30, trackID, 43)
end if
currentTrack := "cd:" + intstr (track)
if playing then
fork playTrack
else
end if
end next
procedure previous
Music.PlayFileStop
if track = 1 then
track := 1
Draw.FillBox (340, maxy div 2 - 30, 340 + Font.Width ("Track: " + intstr (track), trackID), maxy div 2 + 40, darkgrey)
Font.Draw ("Track: " + intstr (track), 340, maxy div 2 - 30, trackID, 43)
else
track -= 1
Draw.FillBox (340, maxy div 2 - 30, 340 + Font.Width ("Track: " + intstr (track), trackID), maxy div 2 + 40, darkgrey)
Font.Draw ("Track: " + intstr (track), 340, maxy div 2 - 30, trackID, 43)
currentTrack := "cd:" + intstr (track)
end if
if playing then
fork playTrack
else
end if
end previous
procedure closeWindow
quit
end closeWindow
procedure error (text : string)
GUI.Dispose (cdDriveField)
GUI.Dispose (cdDriveLabel)
var key : string (1)
Font.Draw (text, 340, maxy div 2, trackID, 43)
Font.Draw ("Press Any Key", 360, maxy div 2 - 30, fontID, 43)
getch (key)
quit
end error
procedure inputText (text : string)
if text = "c" or text = "C" then
error ("That's not the cd drive.")
else
var dirCheck : int
dirCheck := Dir.Open (text + ":\\")
if dirCheck = 0 then
error ("Drive Does Not Exist")
closeWindow
else
streamNumber := Dir.Open (text + ":")
fileName := Dir.Get (streamNumber)
if index (fileName (* -4 .. *), ".cda") not= 0 then
loop
fileName := Dir.Get (streamNumber)
exit when fileName = ""
maxTracks += 1
end loop
Dir.Close (streamNumber)
GUI.Dispose (cdDriveField)
GUI.Dispose (cdDriveLabel)
Pic.Draw (cdBack, 0, 0, picMerge)
Draw.FillBox (340, maxy div 2 - 30, 340 + Font.Width ("Track: " + intstr (track), trackID), maxy div 2 + 40, darkgrey)
Font.Draw ("Track: " + intstr (track), 340, maxy div 2 - 30, trackID, 43)
playButton := GUI.CreatePictureButtonFull (120, 100, playPic, playMusic, 0, 0, "'", true)
stopButton := GUI.CreatePictureButtonFull (600, 100, stopPic, stopMusic, 0, 0, "'", true)
nextTrack := GUI.CreatePictureButtonFull (120, 50, nextPic, next, 0, 0, "/", true)
previousTrack := GUI.CreatePictureButtonFull (600, 50, prevPic, previous, 0, 0, "/", true)
quitButton := GUI.CreateButtonFull (360, 10, 0, "Quit", closeWindow, 0, "/", true)
else
error ("Invalid CD in Drive " + text + ":\\.")
end if
Dir.Close (dirCheck)
end if
end if
end inputText
procedure startScreen
Pic.Draw (cdBack, 0, 0, picMerge)
cdDriveField := GUI.CreateTextFieldFull (maxx div 2 + 100, 230, 100, "", inputText, GUI.INDENT, fontID, GUI.ANY)
cdDriveLabel := GUI.CreateLabelFull (maxx div 2, 230, "CD Drive: ", 0, 0, GUI.LEFT, fontID)
end startScreen
startScreen
loop
exit when GUI.ProcessEvent
end loop
HyperFlexed
Posted: Sat Nov 06, 2004 4:26 pm Post subject: (No subject)
Jay Lo....
'ANY' is not in the export list of 'GUI'
I got that error when I tried your code.
atrain
Posted: Sun Jan 30, 2005 2:00 pm Post subject: (No subject)
any way to have music run in the background?? it stops the program untill the music is done playing, but i want it as background...
atrain
Posted: Sun Jan 30, 2005 2:02 pm Post subject: (No subject)
nevermind:
process DoMusic
loop
Music.PlayFile ("branden3.wav")
end loop
end DoMusic