home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 10: Diskmags / nf_archive_10.iso / MAGS / LEDGERS / LEDG_07B.MSA / SOURCE / MR_MUSIC.V2 / SETCONVT.GFA (.txt) < prev    next >
GFA-BASIC Atari  |  1985-11-20  |  4KB  |  124 lines

  1. '
  2. ' Quartet Voiceset to Mr music seperate sample convertor!
  3. ' by Griff (C) November 1990
  4. '
  5. CLS
  6. PRINT AT(23,2);"-----------------------------------------"
  7. PRINT AT(23,3);"Quartet .SET to Mr Music .EIT Convertor!!"
  8. PRINT AT(23,5);"       Written in GFA Basic V3.02!"
  9. PRINT AT(23,6);"           By Martin Griffiths"
  10. PRINT AT(23,7);"-----------------------------------------"
  11. PRINT AT(25,22);"- Please Press any key to Continue -"
  12. i&=INP(2)
  13. DIM voiceset_buf%(45000)                        !200k voiceset buffer
  14. DIM loop_flag&(19),voice_length&(19),loop_offy&(19),voice_addr%(19),voice_name$(19)
  15. empty_buf$=STRING$(1402,128)
  16. fillr_buf$=STRING$(1402,128)
  17. voice$=STRING$(32500,0)
  18. voiceset_ptr%=V:voiceset_buf%(0)
  19. CLS
  20. PRINT AT(19,1);"Please Select a Quartet .SET file to Convert"
  21. PRINT AT(19,2);"--------------------------------------------"
  22. FILESELECT "\*.SET",voiceset_name$,voiceset_name$
  23. IF voiceset_name$=""
  24.   END
  25. ENDIF
  26. BLOAD voiceset_name$,voiceset_ptr%
  27. voice_freq&=PEEK(voiceset_ptr%)
  28. no_voices&=PEEK(voiceset_ptr%+1)-1
  29. j%=voiceset_ptr%+3
  30. FOR i&=0 TO no_voices&-1
  31.   voice_name$(i&)=""
  32.   FOR j&=0 TO 3
  33.     voice_name$(i&)=voice_name$(i&)+CHR$(PEEK(j%))
  34.     INC j%
  35.   NEXT j&
  36.   ADD j%,3
  37.   i%=voiceset_ptr%+LPEEK(voiceset_ptr%+&H8E+SHL(i&,2))
  38.   voice_addr%(i&)=i%+8
  39.   voice_length&(i&)=DPEEK(i%+4)
  40.   IF DPEEK(i%)=65535
  41.     loop_flag&(i&)=FALSE
  42.     loop_offy&(i&)=0
  43.   ELSE
  44.     loop_flag&(i&)=TRUE
  45.     loop_offy&(i&)=voice_length&(i&)-DPEEK(i%)
  46.   ENDIF
  47. NEXT i&
  48. CLS
  49. PRINT AT(27,1);"Quartet Voiceset Statistics";
  50. PRINT AT(27,2);"---------------------------";
  51. PRINT AT(46,7);"Voiceset Filename : ";voiceset_name$;
  52. PRINT AT(46,8);"Voiceset length   : ";voiceset_length%;
  53. PRINT AT(46,9);"Voiceset frequency: ";voice_freq&;"Khz";
  54. PRINT AT(46,10);"No. of instruments: ";no_voices&;
  55. PRINT AT(1,4);"Sample Name    Sample length    Loop offset"
  56. PRINT AT(1,5);"-----------    -------------    -----------"
  57. FOR i&=0 TO no_voices&-1
  58.   j&=6+i&
  59.   PRINT AT(4,j&);voice_name$(i&);
  60.   PRINT AT(20,j&);voice_length&(i&);
  61.   IF loop_flag&(i&)=TRUE
  62.     PRINT AT(36,j&);loop_offy&(i&);
  63.   ELSE
  64.     PRINT AT(35,j&);"No loop";
  65.   ENDIF
  66. NEXT i&
  67. PRINT AT(24,25);"- Press any key to continue -";
  68. i&=INP(2)
  69. CLS
  70. PRINT "                     Select Name for .EIT Voiceset "
  71. PRINT "                     -----------------------------"
  72. FILESELECT "\*.EIT",vname$,vname$
  73. IF vname$=""
  74.   END
  75. ENDIF
  76. PRINT "Please note the Samples will be converted to 11khz!"
  77. PRINT
  78. i&=INP(2)
  79. handle&=GEMDOS(&H3C,L:V:vname$,0)   !f_create
  80. CLR cum%
  81. frac#=11/voice_freq&
  82. FOR i&=0 TO no_voices&-1
  83.   voice_length&(i&)=voice_length&(i&)*frac#
  84.   loop_offy&(i&)=loop_offy&(i&)*frac#
  85.   VOID GEMDOS(&H40,handle&,L:4,L:V:cum%)
  86.   VOID GEMDOS(&H40,handle&,L:2,L:V:voice_length&(i&))
  87.   VOID GEMDOS(&H40,handle&,L:2,L:V:loop_offy&(i&))
  88.   cum%=cum%+voice_length&(i&)+1400
  89. NEXT i&
  90. i&=-1
  91. VOID GEMDOS(&H40,handle&,L:2,L:V:i&)
  92. frac#=voice_freq&/11
  93. FOR i&=0 TO no_voices&-1
  94.   length%=voice_length&(i&)
  95.   IF loop_flag&(i&)=TRUE
  96.     offset%=loop_offy&(i&)
  97.   ELSE
  98.     CLR offset%
  99.   ENDIF
  100.   ' Convert frequency
  101.   j%=voice_addr%(i&)
  102.   CLR dest#
  103.   FOR j&=0 TO length%-1
  104.     POKE V:voice$+j&,PEEK(j%+dest#)
  105.     ADD dest#,frac#
  106.   NEXT j&
  107.   PRINT "Adding:";voice_name$(i&)
  108.   VOID GEMDOS(&H40,handle&,L:length%,L:V:voice$)  !f_write
  109.   IF offset%=0
  110.     VOID GEMDOS(&H40,handle&,L:1400,L:V:empty_buf$)  !tag 1400 "-128" bytes
  111.   ELSE
  112.     j%=V:voice$+offset%
  113.     factor&=length%-offset%
  114.     FOR j&=0 TO 1399
  115.       POKE V:fillr_buf$+j&,PEEK(j%+(j& MOD factor&))
  116.     NEXT j&
  117.     VOID GEMDOS(&H40,handle&,L:1400,L:V:fillr_buf$)  !f_write
  118.   ENDIF
  119. NEXT i&
  120. VOID GEMDOS(&H3E,handle&)                      !f_close
  121. PRINT AT(26,25);"- Press any key to Restart -";
  122. i&=INP(2)
  123. RUN
  124.