GOSUB dialog("PAN RESET","Which setting do you want?||- Standard : as on a ProTracker|module, L-R-R-L-L-R...|- Mono","Standard|Mono|Cancel",MOUSEX,MOUSEY)
ON ss_menu% GOSUB affiche_icones_disk,affiche_icones_tools,affiche_icones_instr,affiche_icones_sample,affiche_icones_enveloppe,affiche_icones_control,affiche_icones_midi
GOSUB affiche_cadre_voies
GOSUB affiche_info_song
GOSUB affiche_info_sample
GOSUB affiche_info_preset
GOSUB affiche_barre_info
GOSUB affchaine_trans("CPU",144,142,10)
IF play%=0
debut_temps%=TIMER
ENDIF
GOSUB affiche_temps
SHOWM
GOSUB bee(FALSE)
ELSE
GOSUB affiche_panneau_sample
IF NOT se.pas_sous_menu!
ON ss_menu% GOSUB affiche_icones_disk,affiche_icones_tools,affiche_icones_instr,affiche_icones_sample,affiche_icones_enveloppe,affiche_icones_control,affiche_icones_midi
ENDIF
ENDIF
RETURN
PROCEDURE affiche_please_register
GOSUB dialog("SHAREWARE","This is a demonstration version of|GRAOUMF TRACKER. If you like it or|if you use it frequently, please|register to get the complete version.|See documentation for more details.","Please register soon",MOUSEX,MOUSEY)
RETURN
PROCEDURE affiche_graoumf_logo
LOCAL high%,nbr_l%,nbr_h%,width%,x_logo%,x_cpt%,x_offset%,y_logo%,y_cpt%,y_offset%
IF LEN(graoumf_logo$)>0
nbr_l%=DIV(scr_larg%,320)
nbr_h%=DIV(scr_haut%,120)
width%=DIV(scr_larg%,nbr_l%)
high%=DIV(scr_haut%,nbr_h%)
x_offset%=SHR(SUB(width%,320),1)
y_offset%=SHR(SUB(high%,120),1)
FOR y_cpt%=0 TO PRED(nbr_h%)
FOR x_cpt%=0 TO PRED(nbr_l%)
x_logo%=ADD(MUL(x_cpt%,width%),x_offset%)
y_logo%=ADD(MUL(y_cpt%,high%),y_offset%)
IF ADD(y_logo%,120)<160 OR y_logo%>=ADD(170,MUL(haut_lig%,6))
IF (a% AND 3)=1 OR (LEFT$(chk$,2)="FA" AND VAL(RIGHT$(chk$,2))>0) OR (RIGHT$(chk$,3)="CHN" AND VAL(LEFT$(chk$,1))>0) OR (RIGHT$(chk$,2)="CH" AND VAL(LEFT$(chk$,2))>0)
GOSUB load_module_mod_mem
ELSE IF LONG{V:header$}=&H4D4D4431
' Format OCTAmed Amiga
GOSUB load_module_octamed_mem
ELSE IF CARD{V:header$}=&H6966
' Foramt 669
GOSUB load_module_669_mem
ELSE IF MID$(header$,1,3)="MTM"
' Format MTM
GOSUB load_module_mtm_mem
ELSE IF MID$(header$,&H2D,4)="SCRM"
' Format Scream Tracker 3
GOSUB load_module_s3m_mem
ELSE IF LEFT$(header$,12)="MAS_UTrack_V"
' Format Ultra Tracker
GOSUB load_module_ult_mem
ELSE IF LEFT$(header$,4)="D.T."
' Format Digital Tracker
GOSUB load_module_dtm_mem
ELSE IF LEFT$(header$,17)="Extended Module: "
' Format FastTracker 2
GOSUB load_module_xm_mem
ELSE
' Autre format ?
' GOTO ld_module2_disk -- bug /sjx 0.8773 (there wasn't a label for this, caused jmp 0!)
' Trafique le code clavier et identifie la fonction
'
a%=FN key_trafique_code_clavier(clavier%)
clavier%=LONG{a%}
numero_touche%=CARD{ADD(a%,4)}
IF INT{ADD(a%,6)}<>-1
fonction_trouvee!=TRUE
numero_fonction%=CARD{ADD(a%,6)}
ELSE
fonction_trouvee!=FALSE
ENDIF
asciicode%=clavier% AND 255 ! Remise a jour apres les modifs
scancode%=SHR(clavier%,16) AND 255 ! Idem
'
' Sauts aux sous-routines
'
IF fonction_trouvee!
SELECT numero_fonction%
CASE 0 TO 7
ON SUCC(numero_fonction%) GOSUB key_cursor_left,key_cursor_right,key_prev_line,key_next_line,key_prev_octave,key_next_octave,key_prev_column,key_next_column
CASE 8 TO 15
ON SUB(numero_fonction%,7) GOSUB key_prev_bar,key_next_bar,key_prev_songpos,key_next_songpos,key_prev_preset,key_next_preset,key_dec_step,key_inc_step
CASE 16 TO 23
ON SUB(numero_fonction%,15) GOSUB key_dec_high,key_inc_high,key_play_line,key_play_song,key_cont_song,key_play_pattern,key_cont_pattern,key_stop_edit
CASE 24 TO 31
ON SUB(numero_fonction%,23) GOSUB key_prev_instr,key_next_instr,key_prev_sample,key_next_sample,key_expand,key_cpu_time,key_replay_freq,key_interpolation_one_track
CASE 32 TO 39
ON SUB(numero_fonction%,31) GOSUB key_interpolation_all_tracks,key_load_module,key_save_module,key_resync_screen,key_snapshot,key_samplepad_drumpad,key_help,key_block_start
CASE 40 TO 47
ON SUB(numero_fonction%,39) GOSUB key_block_end,key_instr_under_cursor,key_clear_note,key_clear_effect,key_clear_volume,key_clear_whole_note,key_copy_block_track,key_copy_block_pattern
CASE 48 TO 51
ON SUB(numero_fonction%,47) GOSUB key_copy_block_preset,key_copy_block_track_cursor,key_insert_line_pattern,key_insert_line_track
CASE 52 TO 55
ON SUB(numero_fonction%,51) GOSUB key_insert_line_preset,key_insert_line_pattern_rotate,key_insert_line_track_rotate,key_insert_line_preset_rotate
CASE 56 TO 63
ON SUB(numero_fonction%,55) GOSUB key_delete_line_pattern,key_delete_line_track,key_delete_line_preset,key_delete_line_pattern_rotate,key_delete_line_track_rotate,key_delete_line_preset_rotate,key_line,key_line
CASE 64 TO 71
ON SUB(numero_fonction%,63) GOSUB key_line,key_line,key_line,key_line,key_line,key_line,key_line,key_line
CASE 72 TO 79
ON SUB(numero_fonction%,71) GOSUB key_select_preset,key_select_preset,key_rec_preset,key_rec_preset,key_instr_sample_drum,key_instr_sample_drum,key_rec_instr_sample_drum,key_rec_instr_sample_drum
CASE 80 TO 87
ON SUB(numero_fonction%,79) GOSUB key_track_onoff,key_track_onoff,key_rec_track_onoff,key_rec_track_onoff,rien,rien,rien,rien
ENDSELECT
ELSE
'
' Si aucune fonction speciale trouvee, c'est peut-etre une note
'
GOSUB teste_touches_notes
ENDIF
ENDIF
RETURN
FUNCTION key_trafique_code_clavier(clavier%)
' Trafique le code du clavier et trouve la bonne fonction
IF tttt%=0 OR (tttt%=1 AND ((cla%>47 AND cla%<58) OR (cla%>64 AND cla%<71))) OR (tttt%=2 AND cla%>47 AND cla%<58) OR (tttt%=3 AND ((cla%>47 AND cla%<58) OR (cla%=46 AND INSTR(aaaa$,".")=0)))
GOSUB affchaine_notrans(FN pourcent$(se.mix_param%(2,i%),32768),ADD(orc%,ADD(divbi&(0,ADD(j%,1),6),6)),ADD(ory%,ADD(divbi&(1,ADD(j%,1),6),2)),1) ! Volume de debut
GOSUB affchaine_notrans(FN pourcent$(se.mix_param%(3,i%),32768),ADD(orc%,ADD(divbi&(0,ADD(j%,2),6),4)),ADD(ory%,ADD(divbi&(1,ADD(j%,2),6),2)),1) ! Volume de fin
GOSUB affiche_icone_b(ADD(i%,13),8,orc%,ory%,se.mark_selected% AND SHL(1,i%))
GOSUB affchaine_notrans(se.mark$(i%),ADD(orc%,divbi&(0,ADD(23,DIV(i%,5)),8)),ADD(ory%,ADD(ADD(divbi&(1,ADD(23,DIV(i%,5)),8),MUL(i% MOD 5,10)),2)),1)
GOSUB affchaine_notrans(HEX$(se.mark%(0,i%),6),ADD(orc%,divbi&(0,ADD(25,DIV(i%,5)),8)),ADD(ory%,ADD(ADD(divbi&(1,ADD(25,DIV(i%,5)),8),MUL(i% MOD 5,10)),2)),1)
GOSUB affchaine_notrans(HEX$(se.mark%(1,i%),6),ADD(orc%,divbi&(0,ADD(27,DIV(i%,5)),8)),ADD(ory%,ADD(ADD(divbi&(1,ADD(27,DIV(i%,5)),8),MUL(i% MOD 5,10)),2)),1)
GOSUB dialog("STOP","Block too small. It must be greater than 64 Ko.|If you have a slow hard drive, the buffer must be as big|as possible, and select the lower recording speed.","Cancel",MOUSEX,MOUSEY)
GOSUB affiche_panneau_sample
ELSE IF freq_buffer%<12000
GOSUB dialog("STOP","Recording frequency must be greater than 12 KHz.|For a low recording frequency, please select a low|recording speed.","Cancel",MOUSEX,MOUSEY)
GOSUB affiche_panneau_sample
ELSE
ok!=TRUE
IF se.s2d_monitor! AND freq_buffer%<DIV(DIV(98340,SUCC(se.s2d_prediv%)),3)
GOSUB dialog("WARNING","Please select a lower recording frequency|to avoid bugs.","Continue|Cancel",MOUSEX,MOUSEY)
DATA "Mr et Mme BRICOT ont un fils,|comment l'appellent-ils ?||R : Judas","*"
DATA "Mr et Mme POTDANLAPOCHE ont une fille,|comment l'appellent-ils ?||R : Jessica","*"
DATA "Mr et Mme PEULAFENETRE ont trois fils,|comment les appellent-ils ?||R : Geoffroy, Angele, Firmin","*"
DATA "Mr et Mme HERGEBEL ont un fils,|comment l'appellent-ils ?||R : Octave","*"
DATA "Mr et Mme PAFROI ont sept fils,|comment les appellent-ils ?||R : Eva, Aude, Anne, Marc, Sanson, Gilles et Ella","*"
DATA "Mr et Mme PROVISTSAPU ont trois fils,|comment les appellent-ils ?||R : Quentin, Gaspard, Alain","*"
DATA "Mr et Mme LIOTEKDAKAJOU ont un fils,|comment l'appellent-ils ?||R : Habib","*"
DATA "Mr et Mme REMORD ont un fils,|comment l'appellent-ils ?||R : Yves","*"
DATA "Mr et Mme POURLAVERLCARLAGE ont un fils,|comment l'appellent-ils ?||R : Vladimir","*"
DATA "Mr et Mme CREMENT ont un fils,|comment l'appellent-ils ?||R : Alex","*"
DATA "Mr et Mme TANANANANANANA ont deux fils,|comment les appellent-ils ?||R : Starsky et Hutch","*"
DATA "Mr et Mme LFRIGO ont cinq fils,|comment les appellent-ils ?||R : Steve, Eude, Hubert, Yann, Adam","*"
DATA "Mr et Mme ERVITMONSLIP ont un fils,|comment l'appellent-ils ?||R : Jean-Philippe","*"
DATA "Mr et Mme ZELPOURMONMOTEUR ont un fils,|comment l'appellent-ils ?||R : Didier","*"
DATA "Mr et Mme MAIJAVALPA ont un fils,|comment l'appellent-ils ?||R : Jesus","*"
DATA "Mr et Mme MAROLEX ont une fille,|comment l'appellent-ils ?||R : Eleonore","*"
DATA "Mr et Mme PONSABLDUMATOS ont une fille,|comment l'appellent-ils ?||R : Therese","*"
DATA "Mr et Mme LUTFINALE ont une fille,|comment l'appellent-ils ?||R : Sheila","*"
DATA "Mr et Mme CHMONFILS ont un fils,|comment l'appellent-ils ?||R : Thierry","*"
DATA "Mr et Mme BIENUNPTICASCROUTE ont un fils,|comment l'appellent-ils ?||R : Humphrey","*"
DATA "Mr et Mme BISTROJAISOIF ont un fils,|comment l'appellent-ils ?||R : Alonzo","*"
DATA "Mr et Mme CONERY ont une fille,|comment l'appellent-ils ?||R : Aretha","*"
DATA "Mr et Mme PUDBIERDANLFRIGO ont un fils,|comment l'appellent-ils ?||R : Roger","*"
DATA "Mr et Mme ITZEGOUDWAITOUZESTATION ont une fille,|comment l'appellent-ils ?||R : Eloise","*"
DATA "Mr et Mme POURIEN ont trois fils,|comment les appellent-ils ?||R : Yvon, Paul et Mickey","*"
DATA "Mr et Mme AMAR ont cinq fils,|comment les appellent-ils ?||R : Ella, Pacome, Ancel, Helene,|Nadege","*"
DATA "Mr et Mme NAIBOURREDAITA ont trois fils,|comment les appelent-ils ?||R : Derek, Tom, Jean","*"
DATA "Mr et Mme ORER ont un fils,|qui est l'ami du fils de|Mr et Mme JEUNER. Comment|s'appelle le fils des ORER ?||R : Rick|Car Rick ORER, l'ami du petit des JEUNER","*"
DATA "Mr et Mme MACOUVERTURMEGRAT ont une fille,|comment l'appellent-ils ?||R : Sandra","*"
DATA "Mr et Mme SURLELITETPASSURLECANAPE ont un chien,|comment l'appelent-ils ?||R : Medor","*"
DATA C'est un chat|qui se fait eventrer|par John Borg|qui a besoin de|nouvelles|cordes.||Le chat dit :|"C'est du racket!"
DATA "*","C'est deux Corses qui se promenent.|Tout d'un coup, l'un deux se retourne"
DATA "et ecrase un escargot. L'autre :|- Ben pourquoi t'as fait ca ?"
DATA "- Ca faisait un quart d'heure|que cette bestiole nous suivait!","*"
DATA "2 vieilles dames discutent|sur la terrasse d'un cafe :"
DATA "- J'ai l'impression que l'homme la-bas,|il nous regarde avec envie."
DATA "- Tu m'etonnes, c'est l'antiquaire!","*"
DATA "Saviez-vous qu'il y a deux|sortes de Pastis ?|- Le Pastis 51 au gout d'anis|- Le Pastis 69 au gout d'anus","*"
DATA "C'est un type qui veut se suicider."
DATA "Pour son dernier jour, il se lave, se coiffe,"
DATA "se relave, met du Petrol Hane, du parfum,"
DATA "enfile ses plus beaux habits."
DATA "Il monte en haut de la Tour Eiffel, et saute."
DATA "Le corps s'ecrase, suivi plusieurs secondes"
DATA "apres de ses cheveux.|Pourquoi ?|"
DATA "R : parceque Petrol Hane ralentit|la chute des cheveux...","*"
DATA "C'est un gars qui a une moumoute et|qui va chez le coiffeur"
DATA "La, rien a faire, les ciseaux|n'arrivent pas a couper les cheveux.|Pourquoi ?|"
DATA "R : parceque les faux tifs ne sont pas coupables","*"
DATA "Pourquoi les Somaliens ne prennent-|ils pas de medicament ?||R : C'est marque dessus :|"A prendre apres chaque repas","*"
DATA "Qu'est-ce qui est le plus|dur a manger dans|un legume ?||R : la chaise roulante","*"
DATA "Quel est le point commun entre|un myopathe et un spaghetti ?||R : Le spaghetti bouge quand|on le suce...","*"
DATA "Qu'est-ce qui est vert|et qui devient rouge|quand on appuie sur|un bouton ?||R : Une grenouille dans un mixer","*"
DATA "Qu'est-ce qui est vert|et qui pue au fond des bois ?||R : Un scout mort","*"
DATA "Qu'est-ce qui est rouge|et qui a plus de cervelle|que Kurt Cobain ?||R : Son plafond","*"
DATA "Qu'est-ce qui est petit, rouge,|et qui avance en faisant|beaucoup de bruit ?||R : Un bebe sucant des lames de rasoir","*"
DATA "Qu'est-ce qui est petit, rouge,|et qui ne tourne pas dans|les couloirs ?||R : Un enfant avec un javelot|dans la tete.","*"
DATA "Qu'est-ce qu'une boite jaune a|l'exterieur et noire a l'interieur ?||R : Une R4 de la Poste","*"
DATA "Qu'y a-t-il de pire qu'un|bebe dans une poubelle ?||R : Un bebe dans deux poubelles","*"
DATA "Qu'est-ce qu'un combat|d'eunuques ?||R : c'est un combat sanglant","*"
DATA "C'est J.C. Vandame qui rentre|dans sa bagnole et qui|fout l'contact","*"
DATA "C'est Stallone qui va au|bal et qui se rend beau","*"
DATA "C'est un mec qui rentre|dans un cafe et PLOUF!","*"
DATA "C'est un sanglier qui|croise un cochon:|- Ca se passe bien pour|toi la chimiotherapie ?","*"
DATA "Vous connaissez l'histoire|de Paf le chien ?||C'est un chien qui traverse|l'autoroute et PAF le chien!","*"
DATA "Vous connaissez l'histoire|de Scroutch l'escargot ?||C'est un escargot qui passe|sous un rouleau compresseur|et SCROUTCH l'escargot!","*"
DATA "Vous connaissez l'histoire|de Zip le pingouin ?||C'est un pingouin qui se promene|sur la banquise et ZIP le pingouin!","*"
DATA "Vous connaissez l'histoire|de Flip-Flop la girafe ?||C'est un helicoptere qui fait du|rase-motte et FLIP-FLOP la girafe!","*"
DATA "Vous connaissez l'histoire|de Tiens la vieille ?||C'est une vieille qui se fait|frapper et TIENS la vieille!","*"