audiotest.monkey2 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. Namespace myapp
  2. #Import "<std>"
  3. #Import "<mojo>"
  4. '#import "fine_morning.wav"
  5. #import "fine_morning.ogg"
  6. Using std..
  7. Using mojo..
  8. Class MyWindow Extends Window
  9. Field sound:Sound
  10. Field channel:Channel
  11. Method New()
  12. ' sound=Sound.Load( "asset::fine_morning.wav" )
  13. sound=Sound.Load( "asset::fine_morning.ogg" )
  14. channel=New Channel
  15. #if __TARGET__<>"emscripten"
  16. 'SineWave()
  17. #endif
  18. End
  19. #if __TARGET__<>"emscripten"
  20. Method SineWave()
  21. New Fiber( Lambda()
  22. Const len:=1024
  23. Local sine:=New UByte[len]
  24. Local sineData:=New AudioData( len,AudioFormat.Mono8,22050,Cast<UByte Ptr>( sine.Data ) )
  25. For Local i:=0 Until len
  26. sine[i]=Sin( Float(i)/len * Pi*2 * 16 ) * 127.5 + 127.5
  27. Next
  28. Local sineChan:=New Channel
  29. Repeat
  30. If Keyboard.KeyDown( Key.Up )
  31. sineChan.Rate*=1.00125
  32. Else If Keyboard.KeyDown( Key.Down )
  33. sineChan.Rate/=1.00125
  34. Endif
  35. sineChan.Queue( sineData )
  36. Forever
  37. End )
  38. End
  39. #endif
  40. Method OnRender( canvas:Canvas ) Override
  41. App.RequestRender()
  42. canvas.DrawText( "1:Play, 2:Loop, 3:Pause, 4:Stop, 5/6:Volume 7/8:Rate 9/0:Pan",0,0 )
  43. canvas.DrawText( "Playing="+Int( channel.Playing ),0,24 )
  44. canvas.DrawText( "Paused="+Int( channel.Paused ),0,40 )
  45. canvas.DrawText( "Volume="+channel.Volume,0,56 )
  46. canvas.DrawText( "Rate="+channel.Rate,0,72 )
  47. canvas.DrawText( "Pan="+channel.Pan,0,88 )
  48. End
  49. Method OnKeyEvent( event:KeyEvent ) Override
  50. Select event.Type
  51. Case EventType.KeyDown
  52. Select event.Key
  53. Case Key.Key1
  54. channel.Play( sound )
  55. Case Key.Key2
  56. channel.Play( sound,True )
  57. Case Key.Key3
  58. channel.Paused=Not channel.Paused
  59. Case Key.Key4
  60. channel.Stop()
  61. Case Key.Key5
  62. channel.Volume-=.125
  63. Case Key.Key6
  64. channel.Volume+=.125
  65. Case Key.Key7
  66. channel.Rate*=1.125
  67. Case Key.Key8
  68. channel.Rate/=1.125
  69. Case Key.Key9
  70. channel.Pan-=.25
  71. Case Key.Key0
  72. channel.Pan+=.25
  73. End
  74. End
  75. End
  76. End
  77. Function Main()
  78. New AppInstance
  79. New MyWindow
  80. App.Run()
  81. End