It is currently Tue Jun 18, 2013 6:12 am

All times are UTC + 1 hour




Post new topic Reply to topic  [ 10 posts ] 
Author Message
 Post subject: Retro Sound
PostPosted: Mon Feb 23, 2009 2:46 pm 
Offline
Enthusiast
Enthusiast
User avatar

Joined: Mon Apr 25, 2005 9:28 pm
Posts: 558
Location: $300:20 58 FC 60 - Vietnam
A "old-school" playing song, programmed quickly
here it's PACMAN :wink:

Code:
; *************************
; ***                   ***
; *** Retro Sound 8Bits ***
; ***                   ***
; *************************
;
; Flaith 23.02.09 - 31.05.09
;
; Procedure Makesound from GPI modified for my needs
; (GPI:  http://www.purebasic.fr/english/viewtopic.php?p=25292#25292 )
; 24.02 : Modified structure (thx ts-soft & Rings)
; 31.05 : Added Function PokeStringWithUnicodeMode from Zapman for Unicode support

; On commence à octave 2
#TON      = 2

#__C = 262/#TON
#_CD = 277/#TON
#__D = 294/#TON
#_DD = 311/#TON
#__E = 330/#TON
#__F = 349/#TON
#_FD = 370/#TON
#__G = 392/#TON
#_GD = 415/#TON
#__A = 440/#TON
#_AD = 466/#TON
#__B = 494/#TON

#WAVE_FORMAT_PCM  = $0001
#MONO             = $0001
#SAMPLE_RATE      = 8000                  ; 8000, 11025, 22050, or 44100
#RIFF_ID          = "RIFF"
#WAVE_ID          = "WAVE"
#FMT_ID           = "fmt "
#DATA_ID          = "data"

Structure TNOTE
  note1.s
  note2.s
  note3.s
  note4.s
EndStructure

Structure TWAVE
  wFormatTag.w
  nChannels.w
  nSamplesPerSec.l
  nAvgBytesPerSec.l
  nBlockAlign.w
  wBitsPerSample.w
  cbSize.w
EndStructure

Global *new_snd

Global C2.i,Cd2.i,D2.i,Dd2.i,E2.i,F2.i,Fd2.i,G2.i,Gd2.i,A2.i,Ad2.i,B2.i
Global C3.i,Cd3.i,D3.i,Dd3.i,E3.i,F3.i,Fd3.i,G3.i,Gd3.i,A3.i,Ad3.i,B3.i
Global C4.i,Cd4.i,D4.i,Dd4.i,E4.i,F4.i,Fd4.i,G4.i,Gd4.i,A4.i,Ad4.i,B4.i
Global C5.i,Cd5.i,D5.i,Dd5.i,E5.i,F5.i,Fd5.i,G5.i,Gd5.i,A5.i,Ad5.i,B5.i
Global C6.i,Cd6.i,D6.i,Dd6.i,E6.i,F6.i,Fd6.i,G6.i,Gd6.i,A6.i,Ad6.i,B6.i

Procedure PokeStringWithUnicodeMode (*adr,str$)
  For ct = 1 To Len(str$)
    PokeB(*adr+ct-1,Asc(Mid(str$,ct,1)))
  Next
EndProcedure

Procedure MakeSound(Frequency.f, Duration.i)
  Protected SoundValue.b
  Protected nr.i
  Protected TWaveFormat.i
  Protected w.f                                      ; omega ( 2 * pi * frequency)
  Protected DataCount.i, RiffCount.i
  Protected *MS.i

  WaveFormatEx.TWAVE
  WaveFormatEx\wFormatTag      = #WAVE_FORMAT_PCM
  WaveFormatEx\nChannels       = #MONO
  WaveFormatEx\nSamplesPerSec  = #SAMPLE_RATE
  WaveFormatEx\wBitsPerSample  = $0008
  WaveFormatEx\nBlockAlign     = (WaveFormatEx\nChannels * WaveFormatEx\wBitsPerSample) / 8
  WaveFormatEx\nAvgBytesPerSec = WaveFormatEx\nSamplesPerSec * WaveFormatEx\nBlockAlign
  WaveFormatEx\cbSize          = 0
 
  DataCount = (Duration * #SAMPLE_RATE)/1000          ; sound data
  RiffCount = 4 + 4 + 4 + SizeOf(TWAVE) + 4 + 4 + DataCount
 
  *new_snd=AllocateMemory(RiffCount+100)
  *MS=*new_snd
 
  PokeStringWithUnicodeMode(*MS,#RIFF_ID):*MS+4       ; 'RIFF'
  PokeL(*MS,RiffCount):*MS+4                          ; file Data size
  PokeStringWithUnicodeMode(*MS,#WAVE_ID):*MS+4       ; 'WAVE'
  PokeStringWithUnicodeMode(*MS,#FMT_ID):*MS+4        ; 'fmt '
  TWaveFormat = SizeOf(TWAVE)
  PokeL(*MS,TWaveFormat):*MS+4                        ; TWaveFormat data size
 
  PokeW(*MS,WaveFormatEx\wFormatTag):*MS+2            ; WaveFormatEx record
  PokeW(*MS,WaveFormatEx\nChannels):*MS+2
  PokeL(*MS,WaveFormatEx\nSamplesPerSec):*MS+4
  PokeL(*MS,WaveFormatEx\nAvgBytesPerSec):*MS+4
  PokeW(*MS,WaveFormatEx\nBlockAlign):*MS+2
  PokeW(*MS,WaveFormatEx\wBitsPerSample):*MS+2
  PokeW(*MS,WaveFormatEx\cbSize):*MS+2
 
  PokeStringWithUnicodeMode(*MS,#DATA_ID):*MS+4       ; 'data'
  PokeL(*MS,DataCount):*MS+4                          ; sound data size
 
  ; Calculate And write out the tone signal : now the Data values
  w = 2 * #PI * Frequency                             ; omega

  For i = 0 To DataCount - 1
    ;SoundValue = Frequency * Pow(2,(i / Duration))
    SoundValue = 127 + 127 * Sin(i * w / #SAMPLE_RATE)
    PokeB(*MS,SoundValue)
    *MS+1
  Next
 
  nr = CatchSound(#PB_Any,*new_snd)
  FreeMemory(*new_snd)
  ProcedureReturn nr

EndProcedure

Procedure QuitSound(sound)
 StopSound(sound)
 FreeSound(sound)
EndProcedure

Procedure InitInstrument(DURATION.i)
  C2 = MakeSound(#__C,DURATION)
  Cd2= MakeSound(#_CD,DURATION)
  D2 = MakeSound(#__D,DURATION)
  Dd2= MakeSound(#_DD,DURATION)
  E2 = MakeSound(#__E,DURATION)
  F2 = MakeSound(#__F,DURATION)
  Fd2= MakeSound(#_FD,DURATION)
  G2 = MakeSound(#__G,DURATION)
  Gd2= MakeSound(#_GD,DURATION)
  A2 = MakeSound(#__A,DURATION)
  Ad2= MakeSound(#_AD,DURATION)
  B2 = MakeSound(#__B,DURATION)
 
  C3 = MakeSound(#__C*2,DURATION)
  Cd3= MakeSound(#_CD*2,DURATION)
  D3 = MakeSound(#__D*2,DURATION)
  Dd3= MakeSound(#_DD*2,DURATION)
  E3 = MakeSound(#__E*2,DURATION)
  F3 = MakeSound(#__F*2,DURATION)
  Fd3= MakeSound(#_FD*2,DURATION)
  G3 = MakeSound(#__G*2,DURATION)
  Gd3= MakeSound(#_GD*2,DURATION)
  A3 = MakeSound(#__A*2,DURATION)
  Ad3= MakeSound(#_AD*2,DURATION)
  B3 = MakeSound(#__B*2,DURATION)
 
  C4 = MakeSound(#__C*3,DURATION)
  Cd4= MakeSound(#_CD*3,DURATION)
  D4 = MakeSound(#__D*3,DURATION)
  Dd4= MakeSound(#_DD*3,DURATION)
  E4 = MakeSound(#__E*3,DURATION)
  F4 = MakeSound(#__F*3,DURATION)
  Fd4= MakeSound(#_FD*3,DURATION)
  G4 = MakeSound(#__G*3,DURATION)
  Gd4= MakeSound(#_GD*3,DURATION)
  A4 = MakeSound(#__A*3,DURATION)
  Ad4= MakeSound(#_AD*3,DURATION)
  B4 = MakeSound(#__B*3,DURATION)
 
  C5 = MakeSound(#__C*4,DURATION)
  Cd5= MakeSound(#_CD*4,DURATION)
  D5 = MakeSound(#__D*4,DURATION)
  Dd5= MakeSound(#_DD*4,DURATION)
  E5 = MakeSound(#__E*4,DURATION)
  F5 = MakeSound(#__F*4,DURATION)
  Fd5= MakeSound(#_FD*4,DURATION)
  G5 = MakeSound(#__G*4,DURATION)
  Gd5= MakeSound(#_GD*4,DURATION)
  A5 = MakeSound(#__A*4,DURATION)
  Ad5= MakeSound(#_AD*4,DURATION)
  B5 = MakeSound(#__B*4,DURATION)
 
  C6 = MakeSound(#__C*5,DURATION)
  Cd6= MakeSound(#_CD*5,DURATION)
  D6 = MakeSound(#__D*5,DURATION)
  Dd6= MakeSound(#_DD*5,DURATION)
  E6 = MakeSound(#__E*5,DURATION)
  F6 = MakeSound(#__F*5,DURATION)
  Fd6= MakeSound(#_FD*5,DURATION)
  G6 = MakeSound(#__G*5,DURATION)
  Gd6= MakeSound(#_GD*5,DURATION)
  A6 = MakeSound(#__A*5,DURATION)
  Ad6= MakeSound(#_AD*5,DURATION)
  B6 = MakeSound(#__B*5,DURATION)
EndProcedure

Procedure.i getNote(note.s)
Protected valnote.i

  Select note
    Case "---": valnote = -1

    Case "C2" : valnote = C2
    Case "C#2": valnote = Cd2
    Case "D2" : valnote = D2
    Case "D#2": valnote = Dd2
    Case "E2" : valnote = E2
    Case "F2" : valnote = F2
    Case "F#2": valnote = Fd2
    Case "G2" : valnote = G2
    Case "G#2": valnote = Gd2
    Case "A2" : valnote = A2
    Case "A#2": valnote = Ad2
    Case "B2" : valnote = B2

    Case "C3" : valnote = C3
    Case "C#3": valnote = Cd3
    Case "D3" : valnote = D3
    Case "D#3": valnote = Dd3
    Case "E3" : valnote = E3
    Case "F3" : valnote = F3
    Case "F#3": valnote = Fd3
    Case "G3" : valnote = G3
    Case "G#3": valnote = Gd3
    Case "A3" : valnote = A3
    Case "A#3": valnote = Ad3
    Case "B3" : valnote = B3

    Case "C4" : valnote = C4
    Case "C#4": valnote = Cd4
    Case "D4" : valnote = D4
    Case "D#4": valnote = Dd4
    Case "E4" : valnote = E4
    Case "F4" : valnote = F4
    Case "F#4": valnote = Fd4
    Case "G4" : valnote = G4
    Case "G#4": valnote = Gd4
    Case "A4" : valnote = A4
    Case "A#4": valnote = Ad4
    Case "B4" : valnote = B4

    Case "C5" : valnote = C5
    Case "C#5": valnote = Cd5
    Case "D5" : valnote = D5
    Case "D#5": valnote = Dd5
    Case "E5" : valnote = E5
    Case "F5" : valnote = F5
    Case "F#5": valnote = Fd5
    Case "G5" : valnote = G5
    Case "G#5": valnote = Gd5
    Case "A5" : valnote = A5
    Case "A#5": valnote = Ad5
    Case "B5" : valnote = B5

    Case "C6" : valnote = C6
    Case "C#6": valnote = Cd6
    Case "D6" : valnote = D6
    Case "D#6": valnote = Dd6
    Case "E6" : valnote = E6
    Case "F6" : valnote = F6
    Case "F#6": valnote = Fd6
    Case "G6" : valnote = G6
    Case "G#6": valnote = Gd6
    Case "A6" : valnote = A6
    Case "A#6": valnote = Ad6
    Case "B6" : valnote = B6
  EndSelect

  ProcedureReturn valnote
EndProcedure

Global DURATION.i
Global Duree.i

;- *** Main ***
InitSound()

Global note1.i, note2.i, note3.i, note4.i
Global NewList channel.TNOTE()

Restore zelda:
; Restore pacman:

Read.i DURATION
Read.i Duree

InitInstrument(DURATION*Duree)

Read.s tmp$
While tmp$ <> "END"
  Read.s tmp1$
  Read.s tmp2$
  Read.s tmp3$

  AddElement(channel())
    channel()\note1  = tmp$
    channel()\note2  = tmp1$
    channel()\note3  = tmp2$
    channel()\note4  = tmp3$
  Read.s tmp$
Wend

OpenConsole()

ForEach channel()
  note1 = getNote(channel()\note1)
  note2 = getNote(channel()\note2)
  note3 = getNote(channel()\note3)
  note4 = getNote(channel()\note4)

  PrintN(LSet(channel()\note1,3," ")+" "+LSet(channel()\note2,3," ")+" "+LSet(channel()\note3,3," ")+" "+LSet(channel()\note4,3," "))

  If note1 >= 0
    PlaySound(note1,#PB_Sound_MultiChannel)
  EndIf

  If note2 >= 0
    PlaySound(note2,#PB_Sound_MultiChannel)
  EndIf

  If note3 >= 0
    PlaySound(note3,#PB_Sound_MultiChannel)
  EndIf

  If note4 >= 0
    PlaySound(note4,#PB_Sound_MultiChannel)
  EndIf

  Delay(DURATION*duree)
Next

Print("Hit a key"):Input()
CloseConsole()
End

DataSection
;-zelda:
zelda:
    Data.i 60,1
; Legend Of Zelda Twilight Princess
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "A4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "E4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "E4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "A4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "G4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "F4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "G4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "A4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "E4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "E4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "A4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "G4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "F4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "G4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "A4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "D4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "D4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "A4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "G4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "F4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "E4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "C4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "D4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "A4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "F4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "F4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","C5" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "E4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "D4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "E4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "A3" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "A#3","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","C4" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","D4" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","E4" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","F4" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","G4" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","A4" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","D4" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","D4" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","A4" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","G4" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","F4" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","E4" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "C4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "D4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "E4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "F4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "E4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "F4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "G4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "F4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "G4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","C5" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "G4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "F4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "G4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","C5" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","C5" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","D5" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "D4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "A4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "E4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "D4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "A4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "E4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "D4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "A4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "F4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "G4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "F4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "E4" ,"---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;

    Data.s "END"

;-pacman:
pacman:
    Data.i 60,1
    Data.s "B2" ,"B4" ,"---","---"    ;0
    Data.s "---","---","---","---"    ;1
    Data.s "---","B5" ,"---","---"    ;2
    Data.s "---","---","---","---"    ;3
    Data.s "B3" ,"F#5","---","---"    ;4
    Data.s "---","---","---","---"    ;5
    Data.s "---","D5" ,"---","---"    ;6
    Data.s "---","---","---","---"    ;7
    Data.s "B2" ,"---","---","---"    ;8
    Data.s "---","B5" ,"---","---"    ;9
    Data.s "---","---","---","---"    ;0
    Data.s "---","F#5","---","---"    ;1
    Data.s "B3" ,"---","---","---"    ;2
    Data.s "---","D5" ,"---","---"    ;3
    Data.s "---","---","---","---"    ;4
    Data.s "---","---","---","---"    ;5
    Data.s "---","C5" ,"---","---"    ;6
    Data.s "C3" ,"---","---","---"    ;7
    Data.s "---","C6" ,"---","---"    ;8
    Data.s "---","---","---","---"    ;9
    Data.s "---","G6" ,"---","---"    ;0
    Data.s "C4" ,"---","---","---"    ;1
    Data.s "---","E6" ,"---","---"    ;2
    Data.s "---","---","---","---"    ;3
    Data.s "---","---","---","---"    ;4
    Data.s "C3" ,"C6" ,"---","---"    ;5
    Data.s "---","---","---","---"    ;6
    Data.s "---","G6" ,"---","---"    ;7
    Data.s "---","---","---","---"    ;8
    Data.s "C4" ,"E6" ,"---","---"    ;9
    Data.s "---","---","---","---"    ;0
    Data.s "---","---","---","---"    ;1
    Data.s "---","---","---","---"    ;2
    Data.s "B2" ,"B4" ,"---","---"    ;3
    Data.s "---","---","---","---"    ;4
    Data.s "---","B5" ,"---","---"    ;5
    Data.s "---","---","---","---"    ;6
    Data.s "B3" ,"F#5","---","---"    ;7
    Data.s "---","---","---","---"    ;8
    Data.s "---","D#5","---","---"    ;9
    Data.s "---","---","---","---"    ;0
    Data.s "B3" ,"---","---","---"    ;1
    Data.s "---","B5" ,"---","---"    ;2
    Data.s "---","---","---","---"    ;3
    Data.s "---","F#5","---","---"    ;4
    Data.s "B3" ,"---","---","---"    ;5
    Data.s "---","D#5","---","---"    ;6
    Data.s "---","---","---","---"    ;7
    Data.s "---","---","---","---"    ;8
    Data.s "F#3","D#5","---","---"    ;9
    Data.s "---","E5" ,"---","---"    ;0
    Data.s "---","F5" ,"---","---"    ;1
    Data.s "---","F5" ,"---","---"    ;2
    Data.s "G#3","F#5","---","---"    ;3
    Data.s "---","---","---","---"    ;4
    Data.s "---","G5" ,"---","---"    ;5
    Data.s "---","G5" ,"---","---"    ;6
    Data.s "A#3","G#5","---","---"    ;7
    Data.s "---","---","---","---"    ;8
    Data.s "---","A5" ,"---","---"    ;9
    Data.s "---","A5" ,"---","---"    ;0
    Data.s "B3" ,"A#5","---","---"    ;1
    Data.s "---","B2" ,"---","---"    ;2
    Data.s "---","---","---","---"    ;3
    Data.s "---","---","---","---"    ;4
    Data.s "END"
EndDataSection


(code changed to x64 compatibility by Rings)

_________________
“Fear is a reaction. Courage is a decision.” - WC


Last edited by flaith on Sun May 31, 2009 8:31 am, edited 3 times in total.

Top
 Profile  
 
 Post subject:
PostPosted: Mon Feb 23, 2009 8:42 pm 
Offline
Addict
Addict
User avatar

Joined: Fri Sep 21, 2007 5:52 am
Posts: 2506
Location: New Zealand
I'm sure people can have some fun with that.


Last edited by idle on Tue Feb 24, 2009 1:23 am, edited 1 time in total.

Top
 Profile  
 
 Post subject:
PostPosted: Mon Feb 23, 2009 11:59 pm 
Offline
Enthusiast
Enthusiast
User avatar

Joined: Sun Jun 01, 2003 10:55 pm
Posts: 211
Location: Austria, Vienna
Absolutly cool!!!

_________________
Current project: Retro-X (available from my homepage), BorIDE, BMP2SCR EXP Plus
My PC: Bulldozer FX 6100 3.3 GHz, 8 GB DDR3 1600 RAM, Radeon 5750 1 GB GDDR5, Win7 x64 (My other PC with Athlon X2 4850e died recently)


Top
 Profile  
 
 Post subject:
PostPosted: Tue Feb 24, 2009 12:39 am 
Offline
Addict
Addict
User avatar

Joined: Thu Jun 24, 2004 2:44 pm
Posts: 4739
Location: Berlin - Germany
cool sound and code :D

change the TWAVE structure to:
Code:
Structure TWAVE
  wFormatTag.w
  nChannels.w
  nSamplesPerSec.l
  nAvgBytesPerSec.l
  nBlockAlign.w
  wBitsPerSample.w
  cbSize.w
EndStructure

and the code works also on x64

greetings
Thomas

_________________
PureBasic 5.11 | Windows 7 SP1 (x64) | Linux Mint 15 (x64) | RealSource

The use of EnableExplicit is free of charge and avoids errors.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Feb 24, 2009 6:38 pm 
Offline
Enthusiast
Enthusiast
User avatar

Joined: Mon Apr 25, 2005 9:28 pm
Posts: 558
Location: $300:20 58 FC 60 - Vietnam
Thanks guys :D

Code changed a little (added Zelda) and added data (Duration and Delay)

:wink:

mario:
Code:
mario:
    Data.i 75,1
; 4|--c--------------|---e-g-a-f-g-e-c-d---|-
; 3|--e-g-e--a-b-A-a-|-g-----f-c-e-c-----b-|-
; 3|----c----f-g-F-f-|-e-------------------|-
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","E3" ,"C4" ,"---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "C3" ,"G3" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","E3" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "F3" ,"A3" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "G3" ,"B3" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "F#3","A#3","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "F3" ,"A3" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "E3" ,"G3" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","E4" ,"---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","G4" ,"---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","F3" ,"A4" ,"---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","C3" ,"F4" ,"---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","E3" ,"G4" ,"---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","C3" ,"E4" ,"---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","C4" ,"---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","---","D4" ,"---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "---","B3" ,"---","---"    ;
    Data.s "---","---","---","---"    ;
    Data.s "END"

_________________
“Fear is a reaction. Courage is a decision.” - WC


Top
 Profile  
 
 Post subject:
PostPosted: Wed Feb 25, 2009 1:05 am 
Offline
PureBasic Protozoa
PureBasic Protozoa
User avatar

Joined: Fri Apr 25, 2003 3:08 pm
Posts: 3011
When I first tried this, it played on the speaker attached to my motherboard and it reminded me of the games I used to play a long time ago, fun.

Now it plays through my sound card and doesn't sound retro any more. Is there any way to force it back to the original speaker?

_________________
Resist FaceBorg or have your ass laminated!


Top
 Profile  
 
 Post subject:
PostPosted: Wed Feb 25, 2009 12:39 pm 
Offline
Enthusiast
Enthusiast
User avatar

Joined: Mon Apr 25, 2005 9:28 pm
Posts: 558
Location: $300:20 58 FC 60 - Vietnam
Fangbeast wrote:
When I first tried this, it played on the speaker attached to my motherboard and it reminded me of the games I used to play a long time ago, fun.

Now it plays through my sound card and doesn't sound retro any more. Is there any way to force it back to the original speaker?


try with #SAMPLE_RATE to 11025 in line 31:
Code:
#SAMPLE_RATE      = 11025                 ; 8000, 11025, 22050, or 44100

and change line 108 by :
Code:
SoundValue = 32 + 127 * Sin(i * w / #SAMPLE_RATE)

:wink:

_________________
“Fear is a reaction. Courage is a decision.” - WC


Top
 Profile  
 
 Post subject:
PostPosted: Wed Feb 25, 2009 1:31 pm 
Offline
PureBasic Protozoa
PureBasic Protozoa
User avatar

Joined: Fri Apr 25, 2003 3:08 pm
Posts: 3011
Thanks, will do.

_________________
Resist FaceBorg or have your ass laminated!


Top
 Profile  
 
 Post subject:
PostPosted: Sun May 31, 2009 2:38 am 
Offline
Enthusiast
Enthusiast
User avatar

Joined: Wed Jun 02, 2004 10:17 pm
Posts: 112
Location: New Caledonia (South Pacific)
Your code won't work if the "Unicode" option is set ON.

You can correct this using the following procedure:


Code:
Procedure PokeStringWithUnicodeMode (*adr,str$)
  For ct = 1 To Len(str$)
    PokeB(*adr+ct-1,Asc(Mid(str$,ct,1)))
  Next
EndProcedure


and then replace each "POKES" in your code by "PokeStringWithUnicodeMode"

Then it will work with Unicode ON or OFF


Code:

_________________
Don't try - DO it !


Top
 Profile  
 
 Post subject:
PostPosted: Sun May 31, 2009 8:35 am 
Offline
Enthusiast
Enthusiast
User avatar

Joined: Mon Apr 25, 2005 9:28 pm
Posts: 558
Location: $300:20 58 FC 60 - Vietnam
:D Nice one Zapman, thanks
*** Code modified ***

_________________
“Fear is a reaction. Courage is a decision.” - WC


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 10 posts ] 

All times are UTC + 1 hour


Who is online

Users browsing this forum: No registered users and 5 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  

 


Powered by phpBB © 2008 phpBB Group
subSilver+ theme by Canver Software, sponsor Sanal Modifiye