Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Bienvenue clavecin | |
| | |
Auteur | Message |
---|
bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Bienvenue clavecin Jeu 9 Avr 2015 - 7:55 | |
| Bonjour à tous, et particulièrement au nouveau! clavecin! Bel instrument de musique! Comme cela fait un moment que je n'ai rien publié sur le forum, que je veux te souhaiter la bienvenue, voici un petit programme jouant de la musique aléatoire!!! Le programme choisit au hasard un nombre entre 1 et 128. Il le transforme ensuite en un nombre de base 2 c'est à dire en une suite de 1 et de 0. Ensuite, on compte bêtement le nombre de 1 et de 0 dans ce chiffre. Et je fais: 1 seul 1, on joue la note do, deux 1 on joue la note ré, trois 1 on joue mi, etc... jusqu'à sept 1 où on jouera la note si! le nombre de 0 représentera la durée de la note. Voilà, je te souhaite plein de beau programme panoramic, un langage simple et puissant. A +. - Code:
-
' Datas des instruments midis data "001 Bright Acoustic Piano","002 Electric grand Piano","003 Honky Tonk Piano","004 Electric Piano 1","005 Electric Piano 2" data "006 Harpsicord","007 Clavinet","008 Celesta","009 Glockenspiel","010 Music Box" data "011 Vibraphone","012 Marimba","013 Xylophone","014 Tubular bells","015 Dulcimer" data "016 Drawbar Organ","017 Percussive Organ","018 Rock Organ","019 Church Organ","020 Reed Organ" data "021 Accordion","022 Harmonica","023 Tango Accordion","024 Nylon Acoustic Guitar","025 Steel Acoustic Guitar" data "026 Jazz Electric Guitar","027 Clean Electric Guitar","028 Muted Electric Guitar","029 Overdrive Guitar","030 Distorted Guitar" data "031 Guitar Harmonics","032 Acoustic Bass","033 Electric Fingered Bass","034 Electric Picked Bass","035 Fretless Bass" data "036 Slap Bass 1","037 Slap Bass 2","038 Syn Bass 2","039 Syn Bass 1","040 Violin" data "041 Viola","042 Cello","043 Contrabass","044 Tremolo Strings","045 Pizzicato Strings" data "046 Orchestral Harp","047 Timpani","048 String Ensemble 1","049 String Ensemble 2","050 Syn Strings 1" data "051 Syn Strings 2","052 Choir Aahs","053 Voice Oohs","054 Syn Choir","055 Orchestral Hit" data "056 Trumpet","057 Trombone","058 Tuba","059 Muted Trumpet","060 French Horn" data "061 Brass Section","062 Syn Brass 1","063 Syn Brass 2","064 Soprano Sax","065 Alto Sax" data "066 Tenor Sax","067 Baritone Sax","068 Oboe","069 English Horn","070 Bassoon" data "071 Clarinet","072 Piccolo","073 Flute","074 Recorder","075 Pan Flute" data "076 Bottle Blow","077 Shakuhachi","078 Whistle","079 Ocarina","080 Syn Square Wave" data "081 Syn Sawtooth Wave","082 Syn Calliope","083 Syn Chiff","084 Syn Charang","085 Syn Voice" data "086 Syn Fifths Sawtooth Wave","087 Syn Brass & Lead","088 New Age Syn Pad","089 Warm Syn Pad","090 Polysynth Syn Pad" data "091 Choir Syn Pad","092 Bowed Syn Pad","093 Metal Syn Pad","094 Halo Syn Pad","095 Sweep Syn Pad" data "096 SFX Rain","097 SFX Soundtrack","098 SFX Crystal","099 SFX Atmosphere","100 SFX Brightness" data "101 SFX Goblins","102 SFX Echoes","103 SFX Sci-Fi","104 Sitar","105 Banjo" data "106 Shamisen","107 Koto","108 Kalimba","109 Bag Pipe","110 Fiddle" data "111 Shanai","112 Tinkle Bell","113 Agogo","114 Steel Drums","115 Woodblock" data "116 Taiko Drum","117 Melodic Tom","118 Syn Drum","119 Reverse Cymbal","120 Guitar Fret Noise" data "121 Breath Noise","122 Seashore","123 Bird Tweet","124 Telephone Ring","125 Helicopter" data "126 Applause","127 Gun Shot"
dim n%,i%,r,bin$,z%,u%,note,inst$,inst,dur,x,y,cr,cv:cr=99:cv=199:x=4 label instrument color 0,0,0,0 init():midi_on:midi_instrument 46:inst=46 jeu():midi_off terminate END
instrument: inst=val(left$(item_read$(3,item_index(3)),3)) caption 0,item_read$(3,inst):midi_instrument inst return
sub jeu() while scancode<>27 n%=rnd(128):r=n%:bin$="" if r=0 bin$="0" else while r<>0:bin$=str$(mod(r,2))+bin$:r=r/2:r=int(r):end_while end_if u%=0:z%=0 for i%=1 to len(bin$) if mid$(bin$,i%,1)="1" then u%=u%+1 if mid$(bin$,i%,1)="0" then z%=z%+1 next i% select u% case 1:note=60 case 2:note=62 case 3:note=64 case 4:note=65 case 5:note=67 case 6:note=69 case 7:note=71 end_select select z% case 0:dur=4 case 1:dur=6 case 2:dur=8 case 3:dur=10 case 4:dur=10 case 5:dur=8 case 6:dur=6 case 7:dur=4 end_select if u%=0 and z%=1 then dur=4:note=59 ' if right$(bin$,1)="0" then note=note+1 cr=cr+((inst/dur)*2):if cr>255 then cr=cr-255 cv=cv+(note/dur):if cv>255 then cv=cv-255 2d_pen_color cr,cv,100:2d_line x,y+(100-note),x+dur,y+(100-note) midi_play note,dur x=x+dur+2:if x>width(0)-20 then x=4:y=y+12:caption 0,y if y>360 then exit_while end_while end_sub
sub init() form 2 border_hide 2:left 2,width(0)+left(0):top 2,top(0) width 2,175:height 2,height(0):command_target_is 2
list 3 full_space 3:height 3,height(3)-50 for i%=1 to 127:read inst$:item_add 3,inst$:next i% cursor_point 3:on_click 3,instrument end_sub
| |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Bienvenue clavecin Jeu 9 Avr 2015 - 14:23 | |
| Je n'ai pas testé le programme de Bignono (je le fais ce soir) mais bienvenu Clavecin. N'hésite pas à en dire un peu plus sur toi, tes attentes par rapport à Panoramic, tes passions, ce que tu sais faire etc ... ET n'hésite pas à t'exprimer: le fait d'être nouveau n'est pas grave mais moins tu parles plus tu restera anonyme et nouveau longtemps | |
| | | clavecin
Nombre de messages : 3 Date d'inscription : 09/04/2015
| Sujet: Re: Bienvenue clavecin Jeu 9 Avr 2015 - 20:32 | |
| Bonjour,
je découvre le panoramic, j'étais un amateur passionné du basic il y a plus de 20 ans, j'essaie de me remettre tranquillement à la programmation, merci pour le petit listing, je vais tester de suite... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Bienvenue clavecin Jeu 9 Avr 2015 - 21:29 | |
| Bienvenue clavecin. Tu dis que tu étais amateur passionné du basic. Eh bien, ça tombe bien ! Tu n’auras pas de difficulté à t’adapter à Panoramic, langage simple et puissant ! Ici, nous sommes tous des amateurs passionnés et on s’amuse énormément ! Alors, j’espère que tu seras actif sur le Forum et souviens-toi que tu peux poser, ici, toute sorte de question (concernant la programmation en général et Panoramic en particulier), si tu as une quelconque difficulté. Je te souhaite une bonne programmation en Panoramic. @Bignono Belle trouvaille cette musique aléatoire ! Tu sais bien que je suis NUL en musique ; d’ailleurs je n’y comprends presque rien ; j’aime seulement écouter la bonne musique. Alors je vais faire l’apprenti devant le maître et je t’invite à écouter mon chef d’œuvre - Code:
-
rem ============================================================================ dim note$,n$,t,i, inst inst = int(rnd(100)) midi_on : midi_instrument inst : caption 0,"An clair de la lune : <CLICK> pour arrêter" read note$ :t = 6 while note$ <> "FIN" if note$ = "do" then midi_play 60,t : else : if note$ = "ré" then midi_play 62,t : else : if note$ = "mi" then midi_play 64,t : else : if note$ = "fa" then midi_play 65,t : else : if note$ = "sol" then midi_play 67,t : else : if note$ = "la" then midi_play 69,t : else : if note$ = "si" then midi_play 71,t i = i + 1 : if mod(i,11) = 0 then pause 1000 read note$ if scancode <> 0 then midi_off : terminate end_while midi_off for i = 500 to 50 step -10 height 0,i : pause 100 next i terminate rem ============================================================================ data "do", "do", "do" ,"ré", "mi", "ré", "do", "mi", "ré", "ré", "do" ' "au clair de la lu- ne mo- n a- mi pie- rrot" data "do", "do", "do", "ré", "mi", "ré", "do", "mi", "ré", "ré", "do" ' "prê- te moi ta plu- me pou- r e- cri- re un mot" data "ré", "ré", "ré", "ré", "la", "la", "ré", "do", "si", "la", "sol" ' "ma chan- delle est mor- te je n'ai plus de feu" data "do", "do", "do", "ré", "mi", "ré", "do", "mi", "ré", "ré", "do" ' "ou- vre moi ta por- te pour l'a- mour de Dieu" data "FIN" rem ============================================================================
Remarquez la série de IF ... THEN ... ELSE sans END_IF et qui fonctionne correctement! L'instrument est choisi au hasard. Si ça ne vous plaît pas, relancez le programme, il en choisira un autre. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Bienvenue clavecin Jeu 9 Avr 2015 - 22:57 | |
| Bravo Bignono, super ton programme de musique aléatoire. C'est tout à fait écoutable. Ca parait facile comme ça de faire de la musique Papydall, j'ai un peu modifié ton programme: - Code:
-
rem ============================================================================ dim note$,n$,t,i, inst inst = 82 midi_on : midi_instrument inst : caption 0,"Au clair de la lune : <CLICK> pour arrêter" read note$ : read t while note$ <> "FIN" if note$ = "do" then midi_play 60,t : else : if note$ = "ré" then midi_play 62,t : else : if note$ = "mi" then midi_play 64,t : else : if note$ = "fa" then midi_play 65,t : else : if note$ = "sol" then midi_play 67,t : else : if note$ = "la" then midi_play 69,t : else : if note$ = "si" then midi_play 71,t if note$ = "silence" then pause 100 * t read note$ : read t if scancode <> 0 then midi_off : terminate end_while midi_off for i = 500 to 50 step -1 height 0,i : pause 5 next i terminate rem ============================================================================ data "sol", 6, "sol", 6, "sol", 6,"la", 6, "si",4 , "la", 4 ' "Au clair de la Lu- ne" data "sol", 6, "si", 6, "la", 6, "la", 6, "sol", 5, "silence", 10 ' "mon a - mi Pier - rot" data "sol", 6, "sol", 6, "sol", 6,"la", 6, "si",4 , "la", 4 ' "Prê- te moi ta plu- me" data "sol", 6, "si", 6, "la", 6, "la", 6, "sol", 5, "silence", 10 ' "pour é- crire un mot" data "la", 6, "la", 6, "la", 6,"la", 6, "mi",4 , "mi", 4 ' "Ma chan - delle est mor - te," data "la", 6, "sol", 6, "fa", 6, "mi", 6, "ré", 2 ' "je n'ai plus de feu" data "sol", 6, "sol", 6, "sol", 6,"la", 6, "si",4 , "la", 4 ' "Ou - vre moi ta por - te" data "sol", 6, "si", 6, "la", 6, "la", 6, "sol", 5, "silence", 10 ' "pour l'a - mour de Dieu" data "sol", 6, "sol", 6, "sol", 6,"la", 6, "si",4 , "la", 4 ' "Au clair de la lu- ne" data "sol", 6, "si", 6, "la", 6, "la", 6, "sol", 5, "silence", 10 ' "Pier - rot ré - pon - dit" data "sol", 6, "sol", 6, "sol", 6,"la", 6, "si",4 , "la", 4 ' "Je n'ai pas de plu - me," data "sol", 6, "si", 6, "la", 6, "la", 6, "sol", 5, "silence", 10 ' "je suis dans mon lit" data "la", 6, "la", 6, "la", 6,"la", 6, "mi",4 , "mi", 4 ' "Va chez la voi - si - ne" data "la", 6, "sol", 6, "fa", 6, "mi", 6, "ré", 2 ' "je crois qu'elle y est" data "sol", 6, "sol", 6, "sol", 6,"la", 6, "si",4 , "la", 4 ' "car dans sa cui - si - ne" data "sol", 6, "si", 6, "la", 6, "la", 6, "sol", 5, "silence", 10 ' "on bat le bri - quet" data "FIN", 0 rem ============================================================================ | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Bienvenue clavecin Jeu 9 Avr 2015 - 23:31 | |
| Tu as bien fais, Jicehel. Attendons maître Bignono! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Bienvenue clavecin Ven 10 Avr 2015 - 8:00 | |
| Sinon un exercice simple pour quelqu'un qui débute, rajouter les paroles dans les data et afficher le texte pendant la lecture de la musique. C'est juste un exercice pour les débutant puisque l'on lit juste une variable texte en plus que l'on affiche dans un objet de type alpha. Mais si aucun nouveau n'est tenté d'ici quelques jours, je le ferais juste histoire de terminé le programme. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Bienvenue clavecin Ven 10 Avr 2015 - 13:24 | |
| Je l'ai déjà fait. C'est iciJe rappelle le code - Code:
-
rem ============================================================================ rem A ma petite-fille rem Au clair de la lune rem ============================================================================ label arrete
width 0, screen_x/2 : height 0,560 : top 0, 100 : left 0,200 color 0,230,210,65 : caption 0,"<CLICK> pour arrêter" : on_click 0,arrete
alpha 1 : top 1,2 : left 1,260 : font_name 1,"comic sans ms" : font_size 1,24 font_bold 1 : font_color 1, 0,0,255 : caption 1,"Au clair de la lune"
picture 2 : left 2,150 : top 2 ,5 : width 2,60 : height 2,33 : file_load 2,"lune1_g.bmp" picture 3 : left 3,width(0)-200 : top 3 ,5 :width 3,60 : height 3,33 : file_load 3,"lune1_d.bmp" picture 4 : left 4,050 : top 4,200 : width 4,300 : height 4,262 : file_load 4, "lune2_g.bmp" picture 5 : left 5,450 : top 5,200 : width 5,300 : height 5,262 : file_load 5, "lune2_d.bmp" display 2d_pen_color 255,255,0 : 2d_pen_width 10 : 2d_rectangle 50,50,width(0)-50,150 2d_pen_color 150,050,0 : 2d_pen_width 10 : 2d_fill_color 230,210,65 : 2d_rectangle 60,60,width(0)-60,140
alpha 20 :left 20,65 : top 20,65 : font_bold 20 : font_size 20,34 color 20, 230,210,65 : font_name 20,"arial" : font_color 20,100,150,200
sound 30 : file_load 30,"Au_clair_de_la_lune.wav" : play 30 Afficher()
arrete: terminate rem ============================================================================ SUB Afficher() dim_local t$,spc$ ,p,i p = 3000-50 : spc$ = string$(7," ") pause 5000 : read t$ while upper$(t$) <> "FIN" t$ = spc$ + t$ : caption 20,t$ : pause p : read t$ end_while pause 5000 for i = height(0) to 0 step -10 height 0, i : pause 100 next i END_SUB rem ============================================================================ data "Au clair de la lune," data "Mon ami Pierrot," data "Prête-moi ta plume" data "Pour écrire un mot," data "Ma chandelle est morte," data "Je n'ai plus de feu," data "Ouvre-moi ta porte" data "Pour l'amour de Dieu." data "mmm....mmm....mmm...." data "mmm....mmm....mmm...." data "Au clair de la lune," data "Pierrot répondit :" data "Je n'ai pas de plume," data "Je suis dans mon lit." data "Va chez la voisine, " data "Je crois qu'elle y est," data "Car dans sa cuisine," data "On bat le briquet." data "mmm....mmm....mmm...." data "mmm....mmm....mmm...." data "Au clair de la lune," data "S'en fut Arlequin" data "Frapper chez la brune" data "Elle répond soudain" data "- Qui frappe de la sorte ?" data "Il dit à son tour :" data "Ouvrez votre porte," data "Pour le Dieu d'amour !" data "mmm....mmm....mmm...." data "mmm....mmm....mmm...." data "Au clair de la lune," data "On n'y voit que peu." data "On chercha la plume," data "On chercha du feu." data "En cherchant d'la sorte," data "Je n'sais c'qu'on trouva" data "Mais je sais qu'la porte" data "Sur eux se ferma." data "mmm....mmm....mmm...." data "mmm....mmm....mmm...."
data "FIN" rem ============================================================================
Mais vous devez disposer des fichiers suivants que vous pouvez télécharger sur mon webdav: lune1_g.bmp lune1_d.bmp lune2_g.bmp lune2_d.bmp Au_clair_de_la_lune.wav | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Bienvenue clavecin Ven 10 Avr 2015 - 13:33 | |
| Pas tout à fait, là, l'idée c'est de l'intégrer au programme puisque l'on joue les notes une à une et d'afficher le mot en même temps que l'on joue la note, mais c'était déjà très simple à faire à partir du programme existant, alors en plus en s'appuyant sur ce que tu avais fait, c'est presque trop facile même pour un débutant Le truc le plus long, c'est de remettre les mots aux bons endroits dans les DATA, mais il y a des moyens d'aller plus vite , par exemple en recopiant les data de ton programme, en les mettant en forme (séparer par des virgules, ajouter des tirets, etc ...) et en les chargeant dans un tableau que l'on balayera à chaque lecture de note. Une amélioration sympa aussi vu la structure d'Au Clair de la lune et de ne garder que 2 phrases musicales avec les notes puis de créer le morceau en disant que l'on joue 2 fois la phrase 1 puis 1 fois la phrase 2 puis 1 fois la phrase 1 et de le faire 4 fois pour correspondre à la chanson complète dont tu as mis le texte. Après on peut aussi utiliser la méthode JL35 pour avoir un bloc de datas marqué par des étiquettes ("Paroles", "Phrase 1", "Phrase 2","Séquence"). Bref, rien qu'avec un programme comme ça, on peut s'amuser ... Un nouvel arrivant va-t-il relever le défit pour voir s'il y arrive et pour que l'on puisse l'aider s'il rencontre des difficultés ?
Dernière édition par Jicehel le Sam 11 Avr 2015 - 16:57, édité 3 fois | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Bienvenue clavecin Ven 10 Avr 2015 - 13:39 | |
| | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Bienvenue clavecin Ven 10 Avr 2015 - 13:45 | |
| Exactement. Ca permet de faire un karaoké et on peut le faire pour quelques chansons dont on connait les notes et les paroles. Dans les autres améliorations, si un format de data est définit, on peut aussi sortir les datas dans un fichier (avec l'extension .kar par exemple ou .mus et laisser l'utilisateur choisir quelle musique il veut jouer pour son karaoké. De quoi amuser quelques petits enfants, non ?) | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Bienvenue clavecin Ven 10 Avr 2015 - 13:50 | |
| Eh bien, voila un bon sujet pour ceux qui sont en manque d’idées, n’est-ce pas ? | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Bienvenue clavecin Sam 11 Avr 2015 - 12:27 | |
| Pour ceux qui voudraient créer des partitions, vous pouvez vous faire un petit éditeur adapté. Par exemple celui ci dessous vous permet de choisir la durée de la note puis de cliquer sur celle que vous souhaitez ajouter. Ici, on l'affiche juste dans le titre de la fenêtre mais après c'est à adapter pour être sauvegardé dans un fichier par exemple. Je ne l'ai pas fait car tout dépend du format sous lequel vous souhaiteriez enregistrer ces données. - Code:
-
LABEL CLICK
DIM I%, OBJ%, OBJ2% DIM ESPACEMENT_V% : ESPACEMENT_V% = 50 DIM BORD% : BORD% = 10 DIM NOTE$(20),DUREE$(6) DIM DUREE_SELECTIONNEE%
HEIGHT 0,600 : WIDTH 0,810 : COLOR 0,200,200,200 PICTURE 1 : FULL_SPACE 1 : 2D_TARGET_IS 1 : TOP 1, -1000 : COLOR 1,200,200,200
DUREE_SELECTIONNEE% = 3
FOR I% = -1 TO 5 2D_TARGET_IS 1 OBJ% = 10 + I% : PICTURE OBJ% : WIDTH OBJ%, ESPACEMENT_V% : HEIGHT OBJ%, ESPACEMENT_V% LEFT OBJ%,(ESPACEMENT_V%+BORD%)*I% + 2*(BORD%+ESPACEMENT_V%) - ESPACEMENT_V%/2 TOP OBJ%, (5-I%)*ESPACEMENT_V% +3*BORD% - ESPACEMENT_V%/2 : COLOR OBJ%,200,200,200 ON_CLICK OBJ%,CLICK
OBJ2% = OBJ% + 20 : ALPHA OBJ2% WIDTH OBJ2%, 0.75 * ESPACEMENT_V% : HEIGHT OBJ2%, 20 : TOP OBJ2%,TOP(OBJ%) + 0.5 * ESPACEMENT_V% - 8 READ NOTE$(I% + 1) : LEFT OBJ2%, LEFT(OBJ%) + 14 + 3 * (3-LEN(NOTE$(I% + 1))): COLOR OBJ2%,255,255,255 CAPTION OBJ2%, NOTE$(I% + 1) : ON_CLICK OBJ2%,CLICK
2D_TARGET_IS OBJ% : 2D_CIRCLE 0.5 * ESPACEMENT_V%,0.5 * ESPACEMENT_V% , ESPACEMENT_V%/2 - 0.5 IF I% > -1 2D_TARGET_IS 1 OBJ% = 20 + I% : PICTURE OBJ% : WIDTH OBJ%, ESPACEMENT_V% : HEIGHT OBJ%, ESPACEMENT_V% - 2 LEFT OBJ%,(ESPACEMENT_V%+BORD%)*I% + 4*(BORD%+ESPACEMENT_V%) - ESPACEMENT_V%/2 TOP OBJ%, (5.5-I%)*ESPACEMENT_V% +3*BORD% - ESPACEMENT_V%/2 +1 : COLOR OBJ%,200,200,200 ON_CLICK OBJ%,CLICK
OBJ2% = OBJ% + 20 : ALPHA OBJ2% WIDTH OBJ2%, 0.75 * ESPACEMENT_V% : HEIGHT OBJ2%, 20 : TOP OBJ2%,TOP(OBJ%) + 0.5 * ESPACEMENT_V% - 8 READ NOTE$(I% + 11) : LEFT OBJ2%, LEFT(OBJ%) + 14 + 3 * (3-LEN(NOTE$(I% + 11))): COLOR OBJ2%,255,255,255 CAPTION OBJ2%, NOTE$(I% + 11) : ON_CLICK OBJ2%,CLICK
2D_TARGET_IS OBJ% : 2D_CIRCLE 0.5 * ESPACEMENT_V%,0.5 * ESPACEMENT_V% , ESPACEMENT_V%/2 - 0.5 2D_CIRCLE 0.5 * ESPACEMENT_V%,0.5 * ESPACEMENT_V% -1, ESPACEMENT_V%/2 - 0.5 END_IF NEXT I% 2D_TARGET_IS 1 FOR I% = 1 TO 5 2D_LINE BORD%,I%*ESPACEMENT_V% + 3*BORD%, WIDTH(1) - BORD%,I%*ESPACEMENT_V% + 3*BORD% NEXT I%
2D_TARGET_IS 1
OBJ% = 16 : PICTURE OBJ% : WIDTH OBJ%, ESPACEMENT_V% : HEIGHT OBJ%, ESPACEMENT_V% - 5 LEFT OBJ%,(ESPACEMENT_V%+BORD%)*4 + 2*(BORD%+ESPACEMENT_V%) TOP OBJ%, 5*ESPACEMENT_V% + 3*BORD% + 3 : COLOR OBJ%,255,255,255 : ON_CLICK OBJ%,CLICK 2D_TARGET_IS OBJ% : 2D_LINE 0,0, WIDTH(OBJ%),0 : 2D_LINE WIDTH(OBJ%)-1,0,WIDTH(OBJ%)-1,HEIGHT(OBJ%) 2D_LINE 0,HEIGHT(OBJ%)-1,WIDTH(OBJ%),HEIGHT(OBJ%)-1 : 2D_LINE 0,0,0, HEIGHT(OBJ%)
OBJ2% = OBJ% + 20 : ALPHA OBJ2% WIDTH OBJ2%, 0.75 * ESPACEMENT_V% : HEIGHT OBJ2%, 20 : TOP OBJ2%,TOP(OBJ%) + 0.5 * ESPACEMENT_V% - 8 READ NOTE$(7) : LEFT OBJ2%, LEFT(OBJ%) + 14 + 3 * (3-LEN(NOTE$(7))): COLOR OBJ2%,255,255,255 CAPTION OBJ2%, NOTE$(7) : ON_CLICK OBJ2%,CLICK
FOR I% = 0 TO 5 OBJ% = 50 + I% : PICTURE OBJ% : WIDTH OBJ%, 120: HEIGHT OBJ%, 24 LEFT OBJ%,(120+BORD%)*I% + BORD% : TOP OBJ%, 7*ESPACEMENT_V% + 3*BORD% + 3 : COLOR OBJ%,255,255,255 : ON_CLICK OBJ%,CLICK 2D_TARGET_IS OBJ% : 2D_LINE 0,0, WIDTH(OBJ%),0 : 2D_LINE WIDTH(OBJ%)-1,0,WIDTH(OBJ%)-1,HEIGHT(OBJ%) 2D_LINE 0,HEIGHT(OBJ%)-1,WIDTH(OBJ%),HEIGHT(OBJ%)-1 : 2D_LINE 0,0,0, HEIGHT(OBJ%)
OBJ2% = OBJ% + 10 : ALPHA OBJ2% WIDTH OBJ2%,0 : HEIGHT OBJ2%, HEIGHT(OBJ%) - 8 : TOP OBJ2%,TOP(OBJ%) + 6 READ DUREE$(I%) : LEFT OBJ2%, LEFT(OBJ%) + BORD% + 3*(15 - LEN(DUREE$(I%))): COLOR OBJ2%,255,255,255 CAPTION OBJ2%, DUREE$(I%) : WIDTH OBJ2%, WIDTH(OBJ%) - 2*BORD% - 3*(15 - LEN(DUREE$(I%))) : ON_CLICK OBJ2%,CLICK NEXT I%
OBJ% = 17 : CHECK OBJ% : TOP OBJ%, 7*ESPACEMENT_V% + 5*BORD% +24 : LEFT OBJ%, BORD% CAPTION OBJ%,"POINTEE"
TOP 1, 0 END
DATA "DO","MI","RE","SOL","FA","SI","LA","RE2","DO2","FA2","MI2","LA2","SOL2","SILENCE" DATA "RONDE","BLANCHE","NOIRE","CROCHE","DOUBLE CROCHE","TRIPLE CROCHE"
CLICK: IF NUMBER_CLICK < 46 IF NUMBER_CLICK > 8 AND NUMBER_CLICK < 26 THEN CAPTION 0, NOTE$(NUMBER_CLICK - 9) IF NUMBER_CLICK > 28 AND NUMBER_CLICK < 46 THEN CAPTION 0, NOTE$(NUMBER_CLICK - 29) CAPTION 0,CAPTION$(0) + " DUREE : " + DUREE$(INT(DUREE_SELECTIONNEE% / 2)) IF CHECKED(17)=1 THEN CAPTION 0,CAPTION$(0) + " POINTEE" ELSE COLOR INT(DUREE_SELECTIONNEE% / 2)+50, 255,255,255 COLOR INT(DUREE_SELECTIONNEE% / 2)+60, 255,255,255 IF NUMBER_CLICK < 56 DUREE_SELECTIONNEE% = (NUMBER_CLICK - 50) * 2 ELSE DUREE_SELECTIONNEE% = (NUMBER_CLICK - 60) * 2 END_IF DUREE_SELECTIONNEE% = DUREE_SELECTIONNEE% + 1 COLOR INT(DUREE_SELECTIONNEE% / 2)+50, 0,200,100 COLOR INT(DUREE_SELECTIONNEE% / 2)+60, 0,200,100 END_IF RETURN | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Bienvenue clavecin Sam 11 Avr 2015 - 16:59 | |
| Un début de ce que je ne continuerais pas car ce n'est selon moi pas la bonne solution: l'intégration des mots dans les datas pour faire la version karaoké: - Code:
-
rem ============================================================================ rem Au Clair de la Lune joué en midi avec les paroles qui s affichent rem écrit en Panoramic par Papydall et Jicehel rem correction musicale par Bignono rem Version 1.0 du 11/04/2015 rem ============================================================================ dim note$,n$,t,i, inst, mot$ height 0, 80 : inst = 82 alpha 1 : font_size 1, 20 : height 1, 24 midi_on : midi_instrument inst : caption 0,"Au clair de la lune : <CLICK> pour arrêter" read note$ : read t : read mot$ : caption 1, mot$ while note$ <> "FIN" if note$ = "do" then midi_play 60,t : else : if note$ = "ré" then midi_play 62,t : else : if note$ = "mi" then midi_play 64,t : else : if note$ = "fa" then midi_play 66,t : else : if note$ = "sol" then midi_play 67,t : else : if note$ = "la" then midi_play 69,t : else : if note$ = "si" then midi_play 71,t if note$ = "silence" then pause 100 * t read note$ : read t : read mot$ caption 1, mot$ if scancode <> 0 then midi_off : terminate end_while midi_off for i = 80 to 20 step -1 height 0,i : pause 5 next i terminate rem ============================================================================ data "sol", 6,"Au" ,"sol", 6,"clair", "sol", 6,"de", "la", 6,"la", "si", 4,"Lu-" , "la", 4,"-ne" data "sol", 6,"mon" ,"si" , 6,"a-", "la" , 6,"-mi", "la", 6,"Pier-","sol",5,"-rot" , "silence", 10," " data "sol", 6,"Prê-","sol", 6,"te", "sol", 6,"moi" ,"la", 6,"ta", "si", 4,"plu-" , "la", 4,"-me" data "sol", 6,"pour", "si", 6,"é-", "la" , 6,"crire" ,"la", 6,"un", "sol",5,"mot" , "silence", 10," " data "la" , 6,"Ma" , "la", 6,"chan-", "la" , 6,"-delle","la", 6,"est", "mi", 4,"mort-", "mi", 4,"-te," data "la" , 6,"je" ,"sol", 6,"n'ai", "fa" , 6,"plus", "mi", 6,"de" , "ré", 2,"feu" data "sol", 6,"Ou-", "sol", 6,"-vre", "sol", 6,"moi", "la", 6,"ta", "si", 4,"por-" , "la", 4,"-te" data "sol", 6,"pour", "si", 6,"l'a-", "la" , 6,"-mour", "la", 6,"de", "sol", 5,"Dieu" , "silence", 10, " " data "sol", 6,"Au", "sol", 6,"clair", "sol", 6,"de", "la", 6,"la", "si", 4,"Lu-" , "la", 4,"-ne" data "sol", 6,"Pier-","si", 6,"rot", "la", 6,"ré-", "la", 6,"-pon-","sol",5,"-dit" , "silence", 10," " data "sol", 6,"Je" , "sol", 6,"n'ai", "sol", 6,"pas", "la", 6,"de", "si", 4,"plu-" , "la", 4,"-me" data "sol", 6,"je" , "si" , 6,"suis", "la" , 6,"dans" , "la", 6,"mon", "sol", 5,"lit" , "silence", 10," " data "la" , 6,"Va" , "la" , 6,"chez" , "la" , 6,"la", "la", 6,"voi-", "mi", 4,"-si-" , "mi", 4, "-ne" data "la" , 6,"je", "sol", 6,"crois", "fa" , 6,"qu'elle","mi",6,"y", "ré", 2,"est" data "sol", 6,"car", "sol", 6,"dans", "sol", 6,"sa", "la", 6,"cui-", "si", 4,"-si-", "la", 4,"-ne" data "sol", 6,"on", "si" , 6,"bat", "la" , 6,"le", "la", 6,"bri-", "sol",5,"-quet", "silence", 10," " data "FIN", 0, "fin" rem ============================================================================
Dernière édition par Jicehel le Sam 11 Avr 2015 - 20:18, édité 1 fois | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Bienvenue clavecin Sam 11 Avr 2015 - 18:34 | |
| Merci Jicehel pour la création des partitions. Mais il y a au moins deux choses que je ne comprendrais jamais : le Chinois et les … partitions. Ça s’appelle comme ça ces chinoiseries musicales, n’est-ce pas ? Bignono, AU SECOUUURS ! | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Bienvenue clavecin Sam 11 Avr 2015 - 19:38 | |
| Bonjour à tous, Oui, oui! Pas mal tout ça! @ Jicehel, Il faut juste rectifier dans ton programme ceci: - Code:
-
if note$ = "fa" then midi_play 65,t : else : par cela: - Code:
-
if note$ = "fa" then midi_play 66,t : else : Je crois qu'il s'agit d'un fa# et non d'un fa dans la gamme que tu utilises. Ça devrait mieux sonner à l'oreille maintenant. A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Bienvenue clavecin Sam 11 Avr 2015 - 20:18 | |
| Merci bignono, je corrige dans le listing au dessus tout de suite Edit: La version karaoké de base est corrigée et en effet c'est beaucoup plus agréable à l'oreille. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Bienvenue clavecin Dim 12 Avr 2015 - 0:40 | |
| Bon pendant The Voice, j'ai mis en pratique ce que je disais pour les séquences qui se répètent. Ca donne: - Code:
-
rem ============================================================================ rem Au Clair de la Lune joué en midi avec les paroles qui s affichent rem écrit en Panoramic par Papydall et Jicehel rem correction musicale par Bignono rem Version 2.0 du 11/04/2015 rem ============================================================================
dim paroles$(500), parole$ dim notes$(500), note$ dim durees$(500),duree dim chansson(50) dim i%,j%,t, tmp$, s$ dim inst : inst = 82
height 0, 80 : alpha 1 : font_size 1, 20 : height 1, 24
' "PAROLES" read parole$ : i% = 0 while parole$ <> "FIN" paroles$(i%) = parole$ i%=i%+1 : read parole$ end_while data "Au", "clair", "de", "la", "Lu-", "-ne", "mon", "a-", "-mi", "Pier-", "-rot", " " data "Prê-", "te", "moi", "ta", "plu-", "-me", "pour", "é-", "crire", "un", "mot", " " data "Ma", "chan-", "-delle", "est", "mort-", "-te,", "je", "n'ai", "plus", "de", "feu" data "Ou-", "-vre", "moi", "ta", "por-", "-te", "pour", "l'a-", "-mour", "de", "Dieu", " " data "Au", "clair", "de", "la", "Lu-", "-ne", "Pier-", "rot", "ré-", "-pon-", "-dit", " " data "Je", "n'ai", "pas", "de", "plu-", "-me", "je", "suis", "dans", "mon", "lit", " " data "Va", "chez", "la", "voi-", "-si-", "-ne", "je", "crois", "qu'elle", "y", "est" data "car", "dans", "sa", "cui-", "-si-", "-ne", "on", "bat", "le", "bri-", "-quet", " " data "Au", "clair", "de", "la", "Lu-", "-ne", "s'en", "fut", "Ar-", "-le-", "-quin", " " data "frap-","-per", "chez", "la", "bru-", "-ne.","Elle", "ré-", "-pond", "sou-", "-dain"," " data "Qui", "frappe", "de", "la", "sor-", "-te ?", "Il", "dit", "à", "son", "tour :" data "Ou-", "-vrez", "vo-", "-tre", "por-", "te,","Pour", "le", "Dieu", "d'a-", "mour !"," " data "Au", "clair", "de", "la", "Lu-", "-ne", "on", "n'y", "voit", "que", "peu.", " " data "On", "cher-", "-cha", "la", "plu-", "-me,", "On", "cher-", "-cha", "du", "feu."," " data "En", "cher-", "chant", "d'la", "sor-", "-te,", "je", "n'sais", "c'qu'on", "trou-", "-va" data "Mais", "je", "sais", "qu'la", "por-", "-te", "sur", "eux", "se", "fer-", "-ma."," " data "FIN"
' "CHANSSON" - Echainement de séquences read t : i% = 0 while t <> 0 chansson(i%) = t i%=i%+1 : read t end_while data 1,1,2,1,1,1,2,1,1,1,2,1,1,1,2,1,0
i% = 0 : j% = 0 : midi_on : midi_instrument inst caption 0,"Au clair de la lune : <CLICK> pour arrêter"
while chansson(i%) <> 0 s$= "SEQUENCE "+ str$(chansson(i%)) restore read tmp$ while tmp$<> s$ read tmp$ end_while read note$ : read t while note$ <> "FIN" caption 1, paroles$(j%) if note$ = "do" then midi_play 60,t : else : if note$ = "ré" then midi_play 62,t : else : if note$ = "mi" then midi_play 64,t : else : if note$ = "fa" then midi_play 66,t : else : if note$ = "sol" then midi_play 67,t : else : if note$ = "la" then midi_play 69,t : else : if note$ = "si" then midi_play 71,t : else : if note$ = "do2" then midi_play 72,t : else : if note$ = "ré2" then midi_play 74,t : else : if note$ = "mi2" then midi_play 76,t : else : if note$ = "fa2" then midi_play 77,t : else : if note$ = "sol2" then midi_play 78,t : else : if note$ = "la2" then midi_play 80,t : else : if note$ = "silence" then pause 100 * t read note$ : read t : j% = j%+1 if scancode <> 0 then midi_off : terminate end_while i% = i%+1 end_while
midi_off for i% = 80 to 20 step -1 height 0,i% : pause 5 next i%
terminate
data "SEQUENCE 1" data "sol", 6, "sol", 6, "sol", 6,"la", 6, "si",4 , "la", 4 data "sol", 6, "si", 6, "la", 6, "la", 6, "sol", 5, "silence", 10 data "FIN", 0
data "SEQUENCE 2" data "la", 6, "la", 6, "la", 6,"la", 6, "mi",4 , "mi", 4 data "la", 6, "sol", 6, "fa", 6, "mi", 6, "ré", 2 data "FIN", 0 C'est un peu plus complexe à comprendre, mais c'est plus facile pour remplir la partition. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Bienvenue clavecin Dim 12 Avr 2015 - 2:08 | |
| Et ma mini-retouche. - Code:
-
rem ============================================================================ rem Au Clair de la Lune joué en midi avec les paroles qui s affichent rem écrit en Panoramic par Papydall et Jicehel rem correction musicale par Bignono rem Version 2.0 du 11/04/2015 rem ============================================================================
dim paroles$(500), parole$ dim notes$(500), note$ dim durees$(500),duree dim chanson(50) dim i%,j%,t, tmp$, s$ dim inst : inst = 82
height 0, 80 : alpha 1 : font_size 1, 24 : height 1, 24 : font_color 1,0,0,250 top 0,300 : left 0,300
' "PAROLES" read parole$ : i% = 0 while parole$ <> "FIN" paroles$(i%) = parole$ i%=i%+1 : read parole$ end_while data "Au", "clair", "de", "la", "Lu-", "-ne", "mon", "a-", "-mi", "Pier-", "-rot", " " data "Prê-", "te", "moi", "ta", "plu-", "-me", "pour", "é-", "crire", "un", "mot", " " data "Ma", "chan-", "-delle", "est", "mort-", "-te,", "je", "n'ai", "plus", "de", "feu" data "Ou-", "-vre", "moi", "ta", "por-", "-te", "pour", "l'a-", "-mour", "de", "Dieu", " " data "Au", "clair", "de", "la", "Lu-", "-ne", "Pier-", "rot", "ré-", "-pon-", "-dit", " " data "Je", "n'ai", "pas", "de", "plu-", "-me", "je", "suis", "dans", "mon", "lit", " " data "Va", "chez", "la", "voi-", "-si-", "-ne", "je", "crois", "qu'elle", "y", "est" data "car", "dans", "sa", "cui-", "-si-", "-ne", "on", "bat", "le", "bri-", "-quet", " " data "Au", "clair", "de", "la", "Lu-", "-ne", "s'en", "fut", "Ar-", "-le-", "-quin", " " data "frap-","-per", "chez", "la", "bru-", "-ne.","Elle", "ré-", "-pond", "sou-", "-dain"," " data "Qui", "frappe", "de", "la", "sor-", "-te ?", "Il", "dit", "à", "son", "tour :" data "Ou-", "-vrez", "vo-", "-tre", "por-", "te,","Pour", "le", "Dieu", "d'a-", "mour !"," " data "Au", "clair", "de", "la", "Lu-", "-ne", "on", "n'y", "voit", "que", "peu.", " " data "On", "cher-", "-cha", "la", "plu-", "-me,", "On", "cher-", "-cha", "du", "feu."," " data "En", "cher-", "chant", "d'la", "sor-", "-te,", "je", "n'sais", "c'qu'on", "trou-", "-va" data "Mais", "je", "sais", "qu'la", "por-", "-te", "sur", "eux", "se", "fer-", "-ma."," " data "FIN"
' "chanson" - Echainement de séquences read t : i% = 0 while t <> 0 chanson(i%) = t i%=i%+1 : read t end_while data 1,1,2,1,1,1,2,1,1,1,2,1,1,1,2,1,0
i% = 0 : j% = 0 : midi_on : midi_instrument inst caption 0,"Au clair de la lune : <CLICK> pour arrêter"
while chanson(i%) <> 0 s$= "SEQUENCE "+ str$(chanson(i%)) restore read tmp$ while tmp$<> s$ read tmp$ end_while read note$ : read t while note$ <> "FIN" caption 1,string$(25," ")+ paroles$(j%) if note$ = "do" then midi_play 60,t : else : if note$ = "ré" then midi_play 62,t : else : if note$ = "mi" then midi_play 64,t : else : if note$ = "fa" then midi_play 66,t : else : if note$ = "sol" then midi_play 67,t : else : if note$ = "la" then midi_play 69,t : else : if note$ = "si" then midi_play 71,t : else : if note$ = "do2" then midi_play 72,t : else : if note$ = "ré2" then midi_play 74,t : else : if note$ = "mi2" then midi_play 76,t : else : if note$ = "fa2" then midi_play 77,t : else : if note$ = "sol2" then midi_play 78,t : else : if note$ = "la2" then midi_play 80,t : else : if note$ = "silence" then pause 100 * t read note$ : read t : j% = j%+1
if scancode <> 0 then midi_off : terminate end_while i% = i%+1 end_while
midi_off for i% = 80 to 0 step -1 height 0,i% :width 0, 4*i% : pause 30 next i% terminate
rem ============================================================================ data "SEQUENCE 1" data "sol", 6, "sol", 6, "sol", 6,"la", 6, "si",4 , "la", 4 data "sol", 6, "si", 6, "la", 6, "la", 6, "sol", 5, "silence", 10 data "FIN", 0
data "SEQUENCE 2" data "la", 6, "la", 6, "la", 6,"la", 6, "mi",4 , "mi", 4 data "la", 6, "sol", 6, "fa", 6, "mi", 6, "ré", 2 data "FIN", 0 rem ======================= F I N ==============================================
| |
| | | clavecin
Nombre de messages : 3 Date d'inscription : 09/04/2015
| Sujet: Aléatoire... Dim 12 Avr 2015 - 18:12 | |
| Sympa le langage mais il change beaucoup du GFA Basic que j'utilisais... Je m'adapterai... J'ai tellement à découvrir sur le langage et sur le forum ! Un petit essai de tirage aléatoire de nombres pour voir... - Code:
-
rem routine de tirage aléatoire de nombres de numéros sans répétition
dim cart%,tab
cart%=54: rem quantité de nombres à tirer (de 1 à 169 maximum) tab=sqr(cart%) if tab<>int(tab) then tab=tab+1
dim a%(tab*tab): rem tableau des nombres triés dim b%(tab*tab): rem tableau de confirmation de tri dim c%,d%,e,f% dim x%,y%,xx%,yy%,xc%,yc% dim x1,y1,x2,y2 dim k$: rem touche finale ! dim r,s,cpt%,a$
label deb
rem ouverture d un form de taille de moitié de l écran et centré
x%=screen_x y%=screen_y xx%=x%/4:yy%=y%/4:xc%=x%/2:yc%=y%/2 top 0,yy%:left 0,xx%:width 0,x%-xc%:height 0,y%-yc% a$="Tirage aléatoire d'une serie de nombres de 1 à "+str$(cart%)+"." caption 0,a$
rem Boucle de tirage des numéros aléatoires
for c%=1 to cart%
deb: e=rnd(1) d%=int(e*cart%)+1 if b%(d%)=1 then goto deb a%(c%)=d% b%(d%)=1 next c%
rem création de la grille d affichage
r=xx%-((tab/2)*50) s=yy%-((int(tab/2)+1)*20)
cpt%=1 for f%=1 to tab for c%=1 to tab x1=r+((c%-1)*50) y1=s+((f%-1)*20) x2=r+((c%-1)*50)+50 y2=s+((f%-1)*20)+20 2d_rectangle x1,y1,x2,y2 print_locate x1+25-(len(str$(a%(cpt%)))*4),y1+3 if a%(cpt%)<>0 print a%(cpt%) else 2d_line x1,y1,x2,y2 2d_line x1,y2,x2,y1 end_if cpt%=cpt%+1 next c% next f%
rem touche finale ! print_locate xx%,yc%-50 print "Appuyez sur une touche pour quitter..."
repeat k$=inkey$ until k$<>""
wait 50 terminate | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Bienvenue clavecin Dim 12 Avr 2015 - 18:16 | |
| Bienvenue sur le forum ! La dernière fois que j'ai utilisé le GFA c'était en.... heu... j'avais à l'époque un atari 520STF que j'avais gonflé en 1024 en soudant les RAM avec un fer à souder prévu pour tout sauf pour de l'électronique ! | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Bienvenue clavecin Dim 12 Avr 2015 - 19:59 | |
| Salut clavecin - clavecin a écrit:
- Sympa le langage mais il change beaucoup du GFA Basic que j'utilisais...
En effet, ce n’est pas la même philosophie. Panoramic permet tout type de programmation. • Programmation Spaghettis : logique de saut « GOTO » ; absence totale d’entités autonomes et modifiables indépendamment du reste du programme. • Programmation structurée : Structures de contrôle remplaçant les sauts ; Notion de sous-programmes (entités autonomes). • Programmation événementielle : Le programme est principalement défini par ses réactions aux différents événements pouvant se produire. C’est une technique où l’application a une boucle principale qui se compose de deux sections : la première pour détecter les événements, la seconde pour les gérer. Avec Panoramic, on peut programmer comme on le faisait avec les anciens BASIC, mais comme les choses évoluent, on doit en faire autant. Il vaut mieux s’adapter à Panoramic que faire en sorte que Panoramic s’adapte à nous ! La quasi majorité de ce Forum a connu les BASIC anciens (QBASIC, GWBASIC, GFABASIC, et mêmes leurs ancêtres…) Maintenant, analysons ton programme. Ligne 7 - Code:
-
if tab<>int(tab) then tab=tab+1
Tab vaut la racine carrée de 54 qui est 7.348… donc pas une valeur entière et en lui ajoutant 1, on obtient toujours une valeur décimale. Les lignes d’après - Code:
-
dim a%(tab*tab): rem tableau des nombres triés dim b%(tab*tab): rem tableau de confirmation de tri
Tab*tab vaut 69.6969 , donc la dimension de a% et b% sera 69 ( une DIM est toujours convertie en entier). Maintenant la boucle de tirage des numéros aléatoires à partie de le ligne 30 : Tu utilises - Code:
-
if b%(d%)=1 then goto deb
Ça fonctionne parfaitement, mais l’utilisation de la commande GOTO c’est la négation de toute programmation structurée ! On peut très facilement s’en débarrasser : Panoramic nous fourni plusieurs manières (étendre la structure à IF … ELSE …END_IF ; utiliser la structure REPEAT …. UNTIL ; utiliser la structure WHILE … END_WHILE , etc.) Par exemple, voici une manière de faire - Code:
-
rem Boucle de tirage des numéros aléatoires
for c%=1 to cart% repeat e=rnd(1) d%=int(e*cart%)+1 until b%(d%) <> 1 a%(c%)=d% b%(d%)=1
next c%
Pour quitter le programme, tu utilises - Code:
-
repeat k$=inkey$ until k$<>""
Et ça marche ! Mais souviens-toi que INKEY$ n’est reconnu par Panoramic que dans l’esprit de rester compatible avec les anciens BASIC. Personnellement, je ne l’utilise plus dans mes codes, et tu va bientôt l’oublier (et c’est mieux !) - Code:
-
REPEAT UNTIL SCANCODE <> 0
Cette boucle va attendre l’appui sur une touche du clavier ou un click de souris. On voit que tu n'es pas un novice en programmation. J'espère que tu prendras beaucoup de plaisir avec Panoramic. Au plaisir de te lire. | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Bienvenue clavecin Dim 12 Avr 2015 - 23:32 | |
| Au sujet du GOTO - Papydall a écrit:
- Ça fonctionne parfaitement, mais l’utilisation de la commande GOTO c’est la négation de toute programmation structurée !
On peut très facilement s’en débarrasser : Panoramic nous fourni plusieurs manières (étendre la structure à IF … ELSE …END_IF ; utiliser la structure REPEAT …. UNTIL ; utiliser la structure WHILE … END_WHILE , etc.)
Tu as tout à fait raison Papydall mais dans certains cas, le GOTO n'est pas forcement à proscrire. Tu as par exemple les commandes "break" ou "continue" que l'on retrouve en C/PHP/... qui sont absentes en Panoramic. Elles sont surtout très utile pour alléger le code et diminuer le nombre d'imbrication de "if". Dans ce cas et uniquement dans ce cas, le "GOTO" peut être un moyen pour contourner ce pb. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Bienvenue clavecin Lun 13 Avr 2015 - 1:29 | |
| Oui, Nardo26. Depuis longtemps, j’ai juré de ne jamais utiliser GOTO, sauf s’il n’y a aucune autre issue. | |
| | | clavecin
Nombre de messages : 3 Date d'inscription : 09/04/2015
| Sujet: Re: Bienvenue clavecin Lun 13 Avr 2015 - 3:28 | |
| Merci pour ces conseils, j'en prend bonne note...
Pour le dimensionnement du tableau, c'est juste pour l'affichage dans la grille qui est calculée en fonction du nombres de numéros à mélanger, avec un carré parfait toutes les cases sont remplies, avec un carré imparfait, le nombre de cases est fonction du carré parfait supérieur, donc je grise les cases pour ne pas les laisser vides...
Avec 54, la partie entière de la racine carrée est de 7, donc 7 x 7 aurait été insuffisant pour faire tenir les 54 numéros, donc je fais une grille de 64 cases ( 8 x huit - il me met un smiley si je met un "8" aprés le " x " ) avec un tableau de dimensionnement supérieur pour être sur de ne pas sortir du tableau en cas d'erreur de programmation...
En attendant de m'adapter au basic, c'est l'astuce que j'ai trouvé... J'aurai pu tenter l'instruction GRID pour l'affichage, mais je ne l'avais pas vu sur le coup !! A bientôt | |
| | | Contenu sponsorisé
| Sujet: Re: Bienvenue clavecin | |
| |
| | | | Bienvenue clavecin | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |