Page 8 sur 11

Publié : mer. 15/sept./2004 14:50
par Backup
je ne maitrise pas trop les structures , mais bon, faudrai que Jacobus soit d'accord, car c'est lui qui va programmer l'editeur de partition
et la c'est a lui de voir !! c'est pas mon code a la base ! (non! non! je me defile pas !! :lol: )

pour la banque de violon, c'est faisable, mais une question me titille

quel genre de violon , un violon seul ou un ensemble (nappe) de violons ?

:D

Publié : mer. 15/sept./2004 21:31
par ZapMan
Un violon seul. Les nappes, ça se trouve un peu partout.

Publié : mer. 15/sept./2004 22:45
par Backup
pas de probleme !!

je vais allez fouiller dans mon grenier , il doit bien y avoir un ou deux
stradivarius qui trainent !! :D


rajout des banks

Violon
Flute
Orgue rock (style Armond)

:D

Publié : ven. 17/sept./2004 5:32
par ZapMan
Merci Dobro ! Tu es choux !

J'ai copié les nouvelles banques sur freesoundeditor.com

Publié : ven. 17/sept./2004 9:11
par Backup
j'ai refait ma bank Violon , qui etait de tres mauvaise qualité , sorry !!

donc a retelecharger la bank violon !! :? :D

Publié : mar. 21/sept./2004 9:33
par ZapMan
En attendant un coup de main du Soldat pour intégrer sa Toolbar dans SoundEditor, je viens de revisiter le code de Mon Piano et je lui ai fait suivre un régime : il a perdu prés de 1000 lignes.

J'en ai profité pour revoir la gestion des touches que je ne trouvais pas pratique (les octaves ne s'alignaient pas sur les rangées de touches).

J'ai aussi corrigé le partitioneur qui n'indiquait pas les bonnes valeurs de touches frappées (les dièses avaient été oubliées).

Je vais continuer sur le partitioneur et sur l'histoire des "Clacs"

Code : Tout sélectionner

;MonPiano version 1.12 par Jacobus 09/2004 et Dobro (modifs) et Zapman (modifs)
;   PureBasic 3.91 / 3.90 (voir ligne 25)
;Utilisation de la Librairie MoreProgressBarGadget de Denis (Top comme Lib!)
;Destination : SoundEditor, projet de ZapMan
;A intégrer
;
;Reste à intégrer un recorder (Flype?) pour transférer les créations dans SE
;Partitionneur à base d'un éditorgadget (en cours quand j'ai le temps, comme le player))

;les idées, critiques, optimisations et autres sont bienvenues.
;
;Déjà avec ça on peut... vous pouvez vous amuser
;@+ Jacobus
;
;BMP, ico, et banques de sons disponibles sur freesoundeditor.com

;Si vous préférez l'exe, demandez moi


;-Declaration des procedures
Declare.s ApplicationDir()
Declare   Load_Sounds(Chemin$)
Declare   Enregistrer_part()

Procedure IsSound(son) ; COMPATIBILITE PureBasic 3.90
  ProcedureReturn 1   ; Commenter ces 3 lignes pour
EndProcedure          ; la version 3.91 et plus

InitSound()
Enumeration 
  #window = 0
EndEnumeration 

Enumeration
  ;- constantes images 
  #Image1
  #Image2
  #Image3
  #Image4
  #Image5
  #Image6
  #touche_blanche
  #touche_noire
  ;
  ;- constantes panel
  #panel_1
  #SHORTCUTS
  #Btn_load
  #Text_load
  #frame1
  #frame2
  #frame3
  #frame4
  #Text_Acces
  #Text_Info
  #Text_concept
  #ProgBar_1
  #ProgBar_38
  
  #editor_part
  #frame5
  #btn_clear
  #btn_compte
  #text_compte
  #btn_enregistrer
  #frame6
  #ProgBar_39
  #ProgBar_40
  #ProgBar_41
  #ProgBar_42
  #frame7
  #ProgBar_43
  #ProgBar_44
  #CBankChoice
  
EndEnumeration

Global appli_dir$ ; varialble contenant le chemin de l'application
Global son_charge
;
;-catch images
Image1 = CatchImage(1, ?Image1)
Image2 = CatchImage(2, ?Image2)
Image3 = CatchImage(3, ?Image3)
Image4 = CatchImage(4, ?Image4)
Image5 = CatchImage(5, ?Image5)
Image6 = CatchImage(6, ?Image6)
Image7 = CatchImage(7, ?Image7)
ToucheB = CatchImage(8, ?ToucheB)
ToucheN = CatchImage(9, ?ToucheN)
Image10 = CatchImage(10, ?Image10)

DataSection 
;-Data images
  Image0  : IncludeBinary "Images\AUTOLOAD.ico"
  Image1  : IncludeBinary "Images\About.ico"
  Image2  : IncludeBinary "Images\Bal_droite.ico"
  Image3  : IncludeBinary "Images\Bal_gauche.ico"
  Image4  : IncludeBinary "Images\level.ico"
  Image5  : IncludeBinary "Images\level_01.ico"
  Image6  : IncludeBinary "Images\level_02.ico"
  Image7  : IncludeBinary "Images\level_03.ico"
  ToucheB : IncludeBinary "Images\argent.BMP"
  ToucheN : IncludeBinary "Images\noire.BMP"
  Image10 : IncludeBinary "Images\icon2.ico"
;
; Type de notes
Notes:
  Data$ "Do_1","B","#226" ; <>
  Data$ "Do#_1","N","W"
  Data$ "Ré_1","B","X"
  Data$ "Ré_#1","N","C"
  Data$ "Mi_1","B","V"
  Data$ "Fa_1","B","B"
  Data$ "Fa#_1","N","N"
  Data$ "Sol_1","B","#188" ; ,?
  Data$ "Sol#_1","N","#190" ; ;.
  Data$ "La_1","B","#191" ; :/
  Data$ "La#_1","N","#223" ; !§
  Data$ "Si_1","B","#16"
  Data$ "Do_2","B","Q"
  Data$ "Do#_2","N","S"
  Data$ "Ré_2","B","D"
  Data$ "Ré_#2","N","F"
  Data$ "Mi_2","B","G"
  Data$ "Fa_2","B","H"
  Data$ "Fa#_2","N","J"
  Data$ "Sol_2","B","K"
  Data$ "Sol#_2","N","L"
  Data$ "La_2","B","M"
  Data$ "La#_2","N","#192" ; ù%
  Data$ "Si_2","B","Rt"
  Data$ "Do_3","B","A"
  Data$ "Do#_3","N","Z"
  Data$ "Ré_3","B","E"
  Data$ "Ré_#3","N","R"
  Data$ "Mi_3","B","T"
  Data$ "Fa_3","B","Y"
  Data$ "Fa#_3","N","U"
  Data$ "Sol_3","B","I"
  Data$ "Sol#_3","N","O"
  Data$ "La_3","B","P"
  Data$ "La#_3","N","#221" ; ^¨
  Data$ "Si_3","B","#186" ; $£
  Data$ "Do_4","B","#222" ; ²
EndDataSection
;**************************
;creations des directory
If ExamineDirectory(0, "Mes Partitions", "") = 0
  CreateDirectory("Mes Partitions")
EndIf
If ExamineDirectory(0, "BANKS", "") = 0
  CreateDirectory("BANKS")
EndIf

appli_dir$=ApplicationDir() ; appli_dir$ renvoie le chemin ou se trouve l'application piano !!
;

;***************************************
;
;- fenetre principale
If OpenWindow(0,0,0,745,425,#PB_Window_SystemMenu|#PB_Window_ScreenCentered| #PB_Window_MinimizeGadget| #PB_Window_Invisible,"MonPiano 1.0") And CreateGadgetList(WindowID(0)) 
  
  CouleurFond = CreateSolidBrush_(RGB(0, 0, 0)); fond noir pour la ToolBar
  SetClassLong_(WindowID(0), #GCL_HBRBACKGROUND, CouleurFond) 
  DeleteObject_(CouleurFond) 
  HideWindow(0, 0)
  
  ;-Barre outils
  If CreateToolBar(0,WindowID()) 

    ToolBarImageButton(1, Image1)
    ToolBarToolTip(1,"Info")
    
    ToolBarSeparator()
    
    ToolBarImageButton(2, Image4)
    ToolBarToolTip(2,"Mode mute")
    
    ToolBarImageButton(3, Image5)
    ToolBarToolTip(3,"Volume niveau 1")
    
    ToolBarImageButton(4, Image6)
    ToolBarToolTip(4,"Volume niveau 2")
    
    ToolBarImageButton(5, Image7)
    ToolBarToolTip(5,"Volume niveau 3")
    
    ToolBarSeparator()
    
    ToolBarImageButton(6, Image3)
    ToolBarToolTip(6,"Balance tout le son sur Haut parleur gauche")
    
    ToolBarImageButton(7, Image2)
    ToolBarToolTip(7,"Balance tout le son sur Haut parleur droit")
    
    ToolBarImageButton(8, Image10)
    ToolBarToolTip(8,"Retour en Stéréo")
    
    ToolBarSeparator()
    
  EndIf 
  
  ;-Marquage frappe
  Frame3DGadget(#frame5,5,290,210,130,"Touches frappées")
  EditorGadget(#editor_part, 10,310,100,110,Text)
  ButtonGadget(#btn_clear,120,310,90,20,"Clear list")
  ButtonGadget(#btn_compte,120,335,90,20,"Count Items")      
  Compteur=CountGadgetItems(#editor_part)
  If Compteur = 0
    TextGadget(#text_compte,120,360,90,30,"0 touche frappée",#PB_Text_Border)
  Else 
    TextGadget(#text_compte,120,360,90,30,""+ Str(CountGadgetItems(#editor_part))+"  Touches frappées",#PB_Text_Border)
  EndIf
  
  ButtonGadget(#btn_enregistrer,120,395,90,20,"Enregistrer")
  
  ;-Visual volume
  Frame3DGadget(#frame6,240,290,100,130,"Volume actuel");activé par la toolbar
  ProgressBarGadget(#ProgBar_39, 250,310,20,100, 0,100,#PB_ProgressBar_Vertical):SetProgressBarColor(#ProgBar_39, #Blue, #Black)
  SetGadgetState(#ProgBar_39, 40)
  ProgressBarGadget(#ProgBar_40, 270,310,20,100, 0,100,#PB_ProgressBar_Vertical):SetProgressBarColor(#ProgBar_40, #Green, #Black)
  SetGadgetState(#ProgBar_40, 60)
  ProgressBarGadget(#ProgBar_41, 290,310,20,100, 0,100,#PB_ProgressBar_Vertical):SetProgressBarColor(#ProgBar_41, #Yellow, #Black)
  SetGadgetState(#ProgBar_41, 80)
  ProgressBarGadget(#ProgBar_42, 310,310,20,100, 0,100,#PB_ProgressBar_Vertical):SetProgressBarColor(#ProgBar_42, #Red, #Black)
  SetGadgetState(#ProgBar_42, 100)
  ;-Visual balance
  Frame3DGadget(#frame7,350,290,85,130,"Balance");activé par la toolbar
  ProgressBarGadget(#ProgBar_43, 360,310,30,100, 0,100,#PB_ProgressBar_Vertical):SetProgressBarColor(#ProgBar_43, #Green, #Black)
  SetGadgetState(#ProgBar_43, 100)
  ProgressBarGadget(#ProgBar_44, 395,310,30,100, 0,100,#PB_ProgressBar_Vertical):SetProgressBarColor(#ProgBar_44, #Green, #Black)
  SetGadgetState(#ProgBar_44, 100)
  ;- panel gadget   
  PanelGadget(#panel_1,0,25,745,260); création de la boîte à onglets
  
  ;-Clavier   
  OpenGadgetList(#panel_1 ,"PANEL 1") ; Ajout d'un onglet 
  AddGadgetItem (#panel_1,-1,"CLAVIER SYNTHE");nomination de l'onglet
  ;
  ; Initialisation des notes
  Structure Notes
    Nom.s
    CouleurTouche.s
    ToucheClavierPC.l
    Son.l
  EndStructure

  Dim Notes.Notes(37)
  Restore Notes
  ;
  For ct = 0 To 36
    Read Nom$
    Notes(ct)\Nom = Nom$
    Read Couleur$
    Notes(ct)\CouleurTouche = Couleur$
    Read TouchePC$
    If TouchePC$="Sp"
      Notes(ct)\ToucheClavierPC = #PB_Shortcut_Space
    ElseIf TouchePC$="Rt"
      Notes(ct)\ToucheClavierPC = #PB_Shortcut_Return
    ElseIf Left(TouchePC$,1)="#"
      Notes(ct)\ToucheClavierPC = Val(Right(TouchePC$,Len(TouchePC$)-1))
    Else
      Notes(ct)\ToucheClavierPC = Asc(TouchePC$)
    EndIf
    ;
    If Notes(ct)\CouleurTouche = "B"
      CImage = ToucheB;touche blanche
      Color1 = #Blue
      Color2 = #White
    Else
      CImage = ToucheN;touche noire
      Color1 = #Green
      Color2 = #Black
    EndIf
    ButtonImageGadget(ct+100,ct*20,0,20,100,CImage )
    ;Merci à Denis pour sa Lib MoreProgressBarGadget, en couleurs, extra !
    ProgressBarGadget(ct+200, ct*20,180,20,50, 0,100,#PB_ProgressBar_Vertical):SetProgressBarColor(ct+200, Color1, Color2)
  Next
  ;
  ;Inscription des touches de raccourcis correspondantes sous les touches, 
  ;leur position est étudiée en fonction de l'affichage, 
  ;donc à ne pas modifier pour la correspondance. (évite un textgadget pour chaque)        
  TextGadget(#SHORTCUTS, 0, 102, 740, 20," <     W    X    C    V     B    N    ?      .     /     §  Shift  Q    S    D    F    G     H    J     K    L    M    %   Ret  A     Z    E    R     T    Y    U     I     O    P     ^     £     ²")
  ;
  Frame3DGadget(#frame1,5,123,730,45,"Load Sounds"); pour faire joli
  ComboBoxGadget(#CBankChoice,14,140,150,100)
  GadgetToolTip(#CBankChoice,"Chargement d'une banque de sons")
  ProgressBarGadget(#ProgBar_1, 180,140,250,20, 0,100);barre de chargement des fichiers sons
  SetProgressBarColor(#ProgBar_1, #Yellow, #Black);colorisation de la barre de chargement
  ExamineDirectory(0, "BANKS", "")
  While NextDirectoryEntry() = 2
    If DirectoryEntryName()<>"." And DirectoryEntryName()<>".."
      AddGadgetItem (#CBankChoice,-1,DirectoryEntryName())
    EndIf 
  Wend
  SetGadgetState(#CBankChoice,0)
  Load_Sounds("BANKS\"+GetGadgetText(#CBankChoice)+"\")

  ;
  ;-Obtention de banques
  OpenGadgetList(#panel_1 ,"PANEL 2"); ajout d'un nouvel onglet, idem suivants
  AddGadgetItem (#panel_1,-1,"Obtenir d'autres sonorités")      
  Frame3DGadget(#frame2,5,10,730,220,"Les banques sons, Comment les obtenir")
  TextGadget(#Text_Acces, 20, 30, 700, 180,"Un certain nombre de banques sont livrées avec la version de base de MonPiano et vous pouvez les charger et jouer à votre guise. "+Chr(13)+""+Chr(13)+" Si vous souhaitez obtenir plus de banques et ainsi augmenter vôtre créativité musicale, n'hésitez pas à vous rendre sur : "+Chr(13)+""+Chr(13)+"                           http://www.freesoundeditor.com  "+Chr(13)+""+Chr(13)+" Là vous trouverez les dernières nouveautés en matière de sonorités. Les banques sont composées de 36 sons chacune correspondant aux 36 touches du clavier. Vous pourrez acquérir chaque banque ou des lots de banques sons pour une somme modique. Les capacités de stockage des banques sons dépendent uniquement de la taille de votre disque dur et de votre intérêt pour la musique. Alors à bientôt sur freesoundeditor.com."+Chr(13)+""+Chr(13)+"Vous pouvez créer vous-même vos banques sons en composant des dossiers de 36 fichiers wav que vous aurez renommé, son1;son2; son3 etc..."+Chr(13)+"ASTUCE : Vous pouvez y mettre par exemple 12 Bass; 12 Beats; 12 guitares ... ensemble et jouer de 3 instruments en même temps. ")
  CloseGadgetList()
  
  ;-Info   
  OpenGadgetList(#panel_1 ,"PANEL 3")  
  AddGadgetItem (#panel_1,-1,"Utilisation")      
  Frame3DGadget(#frame3,5,10,730,220,"Usage et destination")
  TextGadget(#Text_Info, 20, 30, 700, 180,"Cet instrument est conçu pour accompagner SoundEditor, le meilleur logiciel d'édition de sons du moment."+Chr(13)+""+Chr(13)+" Ainsi vous pouvez créer votre mélodie à partir de ce piano, simple à appréhender dans son fonctionnement, et générer des fichiers wav que vous pourrez modifier, triturer, agrémenter... d'effets divers dans SoundEditor."+Chr(13)+""+Chr(13)+" Dans une prochaine version, il vous sera possible d'écrire votre partition en même temps que vous jouerez, sans rien faire d'autre que taper les touches de votre piano. De cette façon votre mélodie sera sauvegardée sous forme de fichier texte si vous le souhaitez, et si une mélodie que vous avez joué vous plaît, vous n'aurez qu'à éditer cette partition pour la conserver et donc vous en rappeler sans rechercher dans vos souvenirs sur quelles touches vous aviez frappé.."+Chr(13)+""+Chr(13)+" ASTUCES : - Le clavier de votre piano réagit de deux façons: Soit avec la souris et le curseur que vous pointez sur la touche en faisant un clic gauche. Soit en pianotant directement sur les touches de votre clavier d'ordinateur (AZERTY). Vous pouvez aussi faire les deux en même temps, de la main gauche vous pianotez et de la main droite vous utilisez la souris.")        
  CloseGadgetList()
  
  ;-Concept   
  OpenGadgetList(#panel_1 ,"PANEL 4")  
  AddGadgetItem (#panel_1,-1,"Conception et Développement")
  Frame3DGadget(#frame4,5,10,730,220,"MonPiano - Développement")
  TextGadget(#Text_concept, 20, 30, 700, 180,"- Jacobus 09/2004 - PB 3.91 - Windows Me -  */ Lib MoreProgressBarGadget de Denis /*  For ZapMan Project, SoundEditor "+Chr(13)+" - Dobro: Auteur/Compositeur de Banques de sons, "+Chr(13)+" - Ben...suffit de rajouter vos noms si ça vous dit de poursuivre le développement avec moi. "+Chr(13)+""+Chr(13)+" Reste à faire :  Intégration d'un recorder - Partitionneur (en cours) - Optimisation de l'interface -  Autres idées à germer -")        
  CloseGadgetList()
  
  ;-boucle event
  MemSoundBank = 0
  Repeat 
    EventID.l = WaitWindowEvent()
    Touche = 0
    ct = 0
    If EventID.l = #WM_KEYDOWN
      Touche = EventwParam()
      ct = 0
      While Notes(ct)\ToucheClavierPC<>Touche And ct<36 : ct + 1 : Wend
    EndIf
    ;
    If son_charge And (EventID.l = #PB_EventGadget Or Notes(ct)\ToucheClavierPC=Touche)
      If EventID.l = #PB_EventGadget
        notouche = EventGadgetID() - 100
      Else
        notouche = ct
      EndIf
      If notouche>-1 And notouche <37
        ;On vérifie que chaque son ait été correctement initialisé pour chaque touche/bouton
        ;et si oui le son est joué dès qu'on enfonce une touche/bouton
        ;Dans le même temps on rempli la ProgressBar attitrée pendant 200 ms puis on la vide
        ;On obtient ainsi l'effet d'équalizer et on peut visualiser ce que l'on fait.
        For t=0 To 36
          If t<>notouche
            StopSound(Notes(t)\Son)
          EndIf
        Next t
        Resultat0 = IsSound(Notes(notouche)\Son) :If Resultat0<>0 :PlaySound(Notes(notouche)\Son,0) :EndIf 
        SetGadgetState(notouche + 200, 100) :Delay(200) :SetGadgetState(notouche  + 200, 0)
        AddGadgetItem(#editor_part, -1, Notes(notouche)\Nom)
      EndIf
    EndIf
    ;
    ;- Evènements Gadgets
    If EventID.l = #PB_EventGadget   
      If son_charge<>1
        MessageRequester("alerte!", "aucune banque son n'a été chargée !",#PB_MessageRequester_Ok  ) 
        Load_Sounds("") 
      EndIf
      Select EventGadgetID()
       
        Case #CBankChoice 
          If GetGadgetState(#CBankChoice) < 0     
            SetGadgetState(#CBankChoice,0)
          EndIf
          If GetGadgetState(#CBankChoice) <> MemSoundBank
            SetGadgetState(#ProgBar_1,0); remise à zéro de la barre de chargement
            Load_Sounds("BANKS\"+GetGadgetText(#CBankChoice)+"\")
            MemSoundBank = GetGadgetState(#CBankChoice)
          EndIf
          
        Case #btn_compte
          Compteur=CountGadgetItems(#editor_part)
          If Compteur = 0
            TextGadget(#text_compte,120,360,90,30,"0 touche frappée")
          Else 
            TextGadget(#text_compte,120,360,90,30,""+ Str(CountGadgetItems(#editor_part))+"  Touches frappées",#PB_Text_Border)
          EndIf
          
        Case #btn_clear
          ClearGadgetItemList(#editor_part) 
          TextGadget(#text_compte,120,360,90,30,""+ Str(CountGadgetItems(#editor_part))+"  Touches frappées",#PB_Text_Border)
          
        Case #btn_enregistrer
          ;create_MesPartitions()
          Enregistrer_part()
      EndSelect 
    EndIf
    
    ;-Evènement Menus   
    If EventID.l = #PB_EventMenu
      Select EventID 
        Case #PB_EventMenu
          Select EventMenuID()
            
            Case 0 ;Load
              SetGadgetState(#ProgBar_1,0)  
              
              
            Case 1 ;Info
              
              MessageRequester("MonPiano V1.1", "MonPiano version 1.1 par Jacobus 09/2004 "+Chr(13)+" Généré avec : PureBasic 3.91 "+Chr(13)+" Système Windows Me ",#MB_ICONINFORMATION | #PB_MessageRequester_Ok)
              
            Case 2 ; mute 
              
              SetGadgetState(#ProgBar_39, 40)                      
              SetGadgetState(#ProgBar_40, 0)                          
              SetGadgetState(#ProgBar_41, 0)                           
              SetGadgetState(#ProgBar_42, 0)
              
              SetGadgetState(#ProgBar_43, -100)
              SetGadgetState(#ProgBar_44, -100)
              
              ;Ce bouton sert à couper le volume de chaque son, donc...    
              For t=0 To 36
                SoundVolume(Notes(t)\son, 0);son_0 ramené au volume 0
              Next t
              
              
            Case 3 ; level 1
              
              SetGadgetState(#ProgBar_39, 40)                      
              SetGadgetState(#ProgBar_40, 60)            
              SetGadgetState(#ProgBar_41, 0)            
              SetGadgetState(#ProgBar_42, 0)
              
              SetGadgetState(#ProgBar_43, 100)
              SetGadgetState(#ProgBar_44, 100)
              
              ;Bouton permettant de ramener le volume au 1/3 du général, donc... 
              For t=0 To 36
                SoundVolume(Notes(t)\son, 33);;son_0 ramené à 33% du volume max
              Next t
              
              
            Case 4 ; level 2 
              SetGadgetState(#ProgBar_39, 40)                        
              SetGadgetState(#ProgBar_40, 60)                        
              SetGadgetState(#ProgBar_41, 80)           
              SetGadgetState(#ProgBar_42, 0)
              
              SetGadgetState(#ProgBar_43, 100)
              SetGadgetState(#ProgBar_44, 100)
              
              For t=0 To 36
                SoundVolume(Notes(t)\son, 66);;son_0 ramené à 66% du volume max
              Next t
              
              
            Case 5 ; level 3
              
              SetGadgetState(#ProgBar_39, 40)                      
              SetGadgetState(#ProgBar_40, 60)                         
              SetGadgetState(#ProgBar_41, 80)                         
              SetGadgetState(#ProgBar_42, 100)
              
              SetGadgetState(#ProgBar_43, 100)
              SetGadgetState(#ProgBar_44, 100)
              
              ; volume max pour chaque son
              For t=0 To 36
                SoundVolume(Notes(t)\son, 100);;son_0 ramené à 100% du volume max
              Next t
              
              
            Case 6 ; balance HP gauche
              SetGadgetState(#ProgBar_43, 100)
              SetGadgetState(#ProgBar_44, -100)
              
              For t=0 To 36
                SoundPan(Notes(t)\son, -100); a gauche
              Next t
              
              
            Case 7 ; balance HP droit
              SetGadgetState(#ProgBar_43, -100)
              SetGadgetState(#ProgBar_44, 100)
              For t=0 To 36
                SoundPan(Notes(t)\son, 100); a droite
              Next t
              
            Case 8;Stéréo
              SetGadgetState(#ProgBar_43, 100)
              SetGadgetState(#ProgBar_44, 100)
              For t=0 To 36
                SoundPan(Notes(t)\son, 0); balle au centre remise en jeux ... jeu je m'egare la !! :-D
              Next t
              
            EndSelect
          
        Case #PB_Event_CloseWindow     
          Quit=1
      EndSelect 
    EndIf        
  Until EventID=#PB_Event_CloseWindow 
  Quit=1
EndIf 
 
End



Procedure Load_Sounds(NomChemin$)
  son_charge=1  
  
  Contenu = FileSize(NomChemin$)
  If Contenu = -1 ;s'il n'y a rien dans le dossier Bank...
    MessageRequester("Répertoire vide !", "IL N'Y A AUCUN FICHIER WAV DANS VOTRE BANQUE ("+NomChemin$+")",#MB_ICONEXCLAMATION | #PB_MessageRequester_Ok)
    son_charge = 0
  EndIf
  ;
  ;Initialisation et chargement de chaque son dans le tableau "Notes()\son"
  ;
  For t=0 To 36
    nomson$ =NomChemin$+"son"+Str(t)+".wav"
    If FileSize(nomson$)<1
      nomson$ =NomChemin$+"sound"+Str(t)+".wav"
    EndIf
    If FileSize(nomson$)<1
      MessageRequester("Y a comme un Blème !", "Ce dossier ne contient pas tous les fichiers requis ("+nomson$+")")
      t = 36
    Else
      LoadSound(t,nomson$)
      ;
      Notes(t)\son=t 
      SetGadgetState(#ProgBar_1, t*3); ProgressBar chargée à 100% 
    EndIf
  Next t 
EndProcedure
;
Procedure Enregistrer_part()
  Fichier.s = SaveFileRequester("Enregistrer Ma partition ","Mes Partitions\ ","Partition |*.txt", 0)
  If Fichier = ""     
  Else   
    If GetExtensionPart(Fichier) = ""  
      Fichier = Fichier + ".txt"
    EndIf    
    Partition.s = GetFilePart(Fichier.s)
    EnregistreFichier = #True
    
    If FileSize(Fichier.s)>0 
      Reponse = MessageRequester("Cette partition a déjà été enregistrée !","Voulez-vous remplacer :   " + Partition + " ?  Elle a déjà été enregistrée !" ,#MB_ICONEXCLAMATION |#PB_MessageRequester_YesNo ) 
      If Reponse = 6
        a$ + "Yes"
      ElseIf Reponse = 7
        a$ + "No"
      Else 
        a$ + "Cancel"   
        If Reponse <> 6 
          EnregistreFichier = #False 
        EndIf 
      EndIf
    EndIf 
  EndIf 
  
  If EnregistreFichier       
    If CreateFile(0,Fichier.s)
      Nombre_de_touches_frappees = CountGadgetItems(#editor_part)
      For n = 0 To Nombre_de_touches_frappees -1
        ItemsText.s = GetGadgetItemText(#editor_part,n,0)
        WriteStringN(ItemsText)
      Next              
      CloseFile(0) 
    EndIf            
  EndIf 
EndProcedure 


Procedure.s ApplicationDir()
  ; astuce publiée par le Soldat inconnu !!
  appdir$ = Space(255)
  GetCurrentDirectory_(255, @appdir$)
  If Right(appdir$, 1) <> "\" ; si l'adresse ne finit pas par "\"
    appdir$ = appdir$ + "\" ; on rajoute le "\"
  EndIf
  ProcedureReturn appdir$
EndProcedure

Publié : mar. 21/sept./2004 10:20
par Backup
COOL !

aviez vous remarqué que le son "accordeon" de ma bank sonne comme
de son qui annonce la fermeture des Portes du Metro parisien ??? :lol: :lol:

Publié : mar. 21/sept./2004 11:20
par ZapMan
Je viens de réactualiser le code ci-dessus et ça donne ça :

Image

Désormais, toutes les banques de son doivent être stockées dans le dossier BANKS (au même niveau que "Mon Piano"). Toutes les banques trouvées viennent s'inscrire dans le ComboBox et le changement de son est super simple. Le dossier UseBank n'existe plus.

Le fichier http://www.freesoundeditor.com/download ... npiano.zip contient désormais une banque son échantillonée à 8000 hz/8bits qui permet d'essayer tout de suite le programme. Le tout ne pèse que 400 Ko.

Publié : mar. 21/sept./2004 17:33
par Oliv
C'est cool :D
Quand on appuie trop vite sur les touches il joue tout seul :D mais on ne peu plus quitter du coup :?

Publié : mar. 21/sept./2004 20:13
par Jacobus
:D Salut,

@ZapMan
Vraiment épatant ! 8O Quelle Optime !
Quelques idées que je n'ai pas le temps de concrétiser pour le moment, donc vu que t'es dessus et si ça te dit.
Pour le partitionneur qui est très limité à l'heure actuelle, il serait mieux de faire l'editor un peu plus long afin de permettre l'écriture sur une ligne puis sur la suivante, etc... ça réduirait le nombre de pages en cas d'impression ( sinon bonjour, à environ 65 notes par page t'imagine une symphonie ! :lol: ) j'avais donc pensé laissé celui en place et en rajouter un sur un autre onglet. En attendant de pouvoir dessiner les croches et doubles croches sur une portée, mais là pas simple.

Dobro a eu l'idée d'utiliser la position de la souris pour jouer les notes et permettre le glissando dont tu parlais, je pense que l'idée est a concrétiser car intéressante. En gardant ça sous forme d'option, déclenchée par bouton ou raccourci.

Autre idée à concrétiser, qui m'est venue avec le post d'Oliv... faire des petits programmes basés sur le déplacement seul du curseur de la souris. En programmant des mélodies toutes prêtes (pour les novices ou les fainéants :mrgreen: ) Là aussi en combobox tu choisis l'air que tu veux entendre et avec la souris, le piano joue tout seul. Il ya même un topic sur cette possibilité...Hein Oliv :D

Bon, bah j'arrête là sinon vous allez râler parceque je vous donne du boulot :? ...Mais c'est juste des idées comme ça... si ça vous tente.. :mrgreen:

Pour l'instant j'ai pas le temps de m'amuser avec vous :cry:
et là il faut que je me sauve, donc
:wink:
@+ Jacobus
(et encore Chapeau !)

Publié : mar. 21/sept./2004 20:45
par Oliv
Oui :D , vous me dites quelles touches faire je moccupe du reste

Publié : mar. 21/sept./2004 21:29
par Jacobus
:D Ca boum !
Tiens te voilà une mélodie archi-connue et très belle.
Ce sera un plaisir de la mettre en forme.

Je te liste les notes à la suite, tel qu'il faut les faire jouer.
Par contre vois suivant le clavier remodelé par ZapMan
Je te mets les numéros des touches (en commençant par la gauche)

la souris devra se rendre successivement sur les touches :
15 17 18 17 18 22
15 17 18 17 18 22
18 17 15 17 18 20
20 22 23 22 23 27
20 22 23 22 23 26
23 22 20 22 23 25
Pour la jouer, utilises la jolie flûte de pan de Dobro et ce sera un émerveillement, snirfl ! j'en suis tout ému ! :oops:

@+ Jacobus

Publié : mar. 21/sept./2004 21:33
par Oliv
je te fais ça demain. Mais je vais plutot emuler le clavier, se qui permettra de laisser la souris libre, enfin comme vous voulez

Publié : mar. 21/sept./2004 21:41
par Jacobus
Fais comme tu le sens.
Déjà, si tu repères les notes que j'ai indiqué
tu peux jouer le morceau pour toi tout seul.

Publié : mer. 22/sept./2004 6:28
par Oliv
Et les deux au choix :mrgreen: , avec des compositions par l'utilisateur qui le souhaite :D , je pense savoir comment faire