FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» number_mouse_up
Bienvenue clavecin Emptypar jjn4 Aujourd'hui à 11:59

» Aide de PANORAMIC
Bienvenue clavecin Emptypar jjn4 Aujourd'hui à 11:16

» trop de fichiers en cours
Bienvenue clavecin Emptypar lepetitmarocain Aujourd'hui à 10:43

» Je teste PANORAMIC V 1 beta 1
Bienvenue clavecin Emptypar papydall Aujourd'hui à 4:17

» select intégrés
Bienvenue clavecin Emptypar jjn4 Hier à 18:33

» PANORAMIC V 1
Bienvenue clavecin Emptypar Klaus Hier à 9:53

» bouton dans autre form que 0
Bienvenue clavecin Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Bienvenue clavecin Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
Bienvenue clavecin Emptypar Klaus Lun 6 Mai 2024 - 10:23

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Bienvenue clavecin Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
Bienvenue clavecin Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
Bienvenue clavecin Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Bienvenue clavecin Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Bienvenue clavecin Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Bienvenue clavecin Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
-20%
Le deal à ne pas rater :
-20% Récupérateur à eau mural 300 litres (Anthracite)
79 € 99 €
Voir le deal

 

 Bienvenue clavecin

Aller en bas 
5 participants
Aller à la page : 1, 2  Suivant
AuteurMessage
bignono

bignono


Nombre de messages : 1127
Age : 66
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Bienvenue clavecin Empty
MessageSujet: Bienvenue clavecin   Bienvenue clavecin EmptyJeu 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 +. Wink  Wink  Wink
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
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin EmptyJeu 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 Very Happy
Revenir en haut Aller en bas
clavecin




Nombre de messages : 3
Date d'inscription : 09/04/2015

Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin EmptyJeu 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...
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7006
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin EmptyJeu 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 king

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! Laughing

L'instrument est choisi au hasard. Si ça ne vous plaît pas, relancez le programme, il en choisira un autre.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin EmptyJeu 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 Wink

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 ============================================================================
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7006
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin EmptyJeu 9 Avr 2015 - 23:31

Tu as bien fais, Jicehel.
Attendons maître Bignono!
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin EmptyVen 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.
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7006
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin EmptyVen 10 Avr 2015 - 13:24

Je l'ai déjà fait.
C'est ici

Je 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
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin EmptyVen 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   Very Happy
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 ...  Wink   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
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7006
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin EmptyVen 10 Avr 2015 - 13:39

Une sorte de karaoké !
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin EmptyVen 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 ?) Very Happy
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7006
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin EmptyVen 10 Avr 2015 - 13:50

Eh bien, voila un bon sujet pour ceux qui sont en manque d’idées, n’est-ce pas ?
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin EmptySam 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
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin EmptySam 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
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7006
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin EmptySam 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. Embarassed
Ça s’appelle comme ça ces chinoiseries musicales, n’est-ce pas ? Shocked

Bignono, AU SECOUUURS !
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
bignono

bignono


Nombre de messages : 1127
Age : 66
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin EmptySam 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+ Wink Wink Wink
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin EmptySam 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.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin EmptyDim 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.
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7006
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin EmptyDim 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 ==============================================
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
clavecin




Nombre de messages : 3
Date d'inscription : 09/04/2015

Bienvenue clavecin Empty
MessageSujet: Aléatoire...   Bienvenue clavecin EmptyDim 12 Avr 2015 - 18:12

Sympa le langage mais il change beaucoup du GFA Basic que j'utilisais... Je m'adapterai...  study
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
  
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin EmptyDim 12 Avr 2015 - 18:16

Bienvenue sur le forum ! cheers
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 ! Bienvenue clavecin 08
Revenir en haut Aller en bas
http://nardo26.lescigales.org
papydall

papydall


Nombre de messages : 7006
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin EmptyDim 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.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin EmptyDim 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. Bienvenue clavecin 07
Revenir en haut Aller en bas
http://nardo26.lescigales.org
papydall

papydall


Nombre de messages : 7006
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin EmptyLun 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.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
clavecin




Nombre de messages : 3
Date d'inscription : 09/04/2015

Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin EmptyLun 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
Revenir en haut Aller en bas
Contenu sponsorisé





Bienvenue clavecin Empty
MessageSujet: Re: Bienvenue clavecin   Bienvenue clavecin Empty

Revenir en haut Aller en bas
 
Bienvenue clavecin
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Bienvenu
» Bienvenue à PRO Positif Plus !
» Bienvenue à Cmo !
» Bienvenue (new)
» Bienvenue à ~KeV~

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Présentation et bavardage-
Sauter vers: