Pure Ear trainer

Programmation d'applications complexes
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Pure Ear trainer

Message par bombseb »

Bonjour,

Voici un petit programme pour les musiciens voulant s'entrainer à reconnaitre les intervalles.
Le programmes joue deux notes en même temps grace aux fonctions midi de la carte son, puis apres un petit délai la voix du synthétiseur vocal prononce le nom de l'intervalle.

Il faut au préalable télécharger une voix francaise pour que ce prog puisse marcher correctement :
celle ci par exemple : http://download.microsoft.com/download/ ... French.zip

EDIT : ah oui j'oubliais, il faut aussi la lib TTS....

la lib winlib.pb :

Code : Tout sélectionner

;
; PureBasic Visual Designer v3.92 build 1460


;- Window Constants
;
Enumeration
  #Window_Options
  #Window_main
EndEnumeration

;- Gadget Constants
;
Enumeration
  ; Options
  #GroupBoxIntervalles
  #CheckBox_SecondeMajeure
  #CheckBox_SecondeMineure
  #CheckBox_TierceMajeure
  #CheckBox_TierceMineure
  #CheckBox_QuarteJuste
  #CheckBox_QuinteAugmentee
  #CheckBox_SixteMajeure
  #CheckBox_SeptiemeMineure
  #CheckBox_Octave
  #CheckBox_SeptiemeMajeure
  #CheckBox_QuinteJuste
  #CheckBox_QuarteAugmentee
  #FondamentaleFixe
  #RndDeuxiemeNote
  #Liste
  #LabelListe
  #Button_valider
  #Button_Annuler
  #GroupBoxVoxSynth
  
  ; Fenêtre principale
  #Button_startend
  #Button_quitter
  #Button_Options
  #Hyperlink
  ;#Button_about
EndEnumeration

;- Fonts
Global FontID1, FontID2
FontID1 = LoadFont (1, "Arial", 8)
FontID2 = LoadFont (2, "Arial", 8, #PB_Font_Underline)

;#PB_Font_Bold       : La police de caractère sera en gras
;#PB_Font_Italic     : La police de caractère sera en italique
;#PB_Font_Underline  : La police de caractère sera soulignée
;#PB_Font_StrikeOut  : La police de caractère sera barrée
;#PB_Font_HighQuality: La police de caractère sera en qualité supérieure (plus lent)

; BalloonTip Constants
#TOOLTIP_NO_ICON      = 0
#TOOLTIP_INFO_ICON    = 1
#TOOLTIP_WARNING_ICON = 2
#TOOLTIP_ERROR_ICON   = 3

Procedure BalloonTip(WindowID, Gadget, Text$ , Title$, Icon)
  
  ToolTip=CreateWindowEx_(0,"ToolTips_Class32","",#WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON,0,0,0,0,WindowID,0,GetModuleHandle_(0),0)
  SendMessage_(ToolTip,#TTM_SETTIPTEXTCOLOR,GetSysColor_(#COLOR_INFOTEXT),0)
  SendMessage_(ToolTip,#TTM_SETTIPBKCOLOR,GetSysColor_(#COLOR_INFOBK),0)
  SendMessage_(ToolTip,#TTM_SETMAXTIPWIDTH,0,180)
  Balloon.TOOLINFO\cbSize=SizeOf(TOOLINFO)
  Balloon\uFlags=#TTF_IDISHWND | #TTF_SUBCLASS
  Balloon\hWnd=GadgetID(Gadget)
  Balloon\uId=GadgetID(Gadget)
  Balloon\lpszText=@Text$
  SendMessage_(ToolTip, #TTM_ADDTOOL, 0, Balloon)
  If Title$ > ""
    SendMessage_(ToolTip, #TTM_SETTITLE, Icon, @Title$)
  EndIf
  
EndProcedure

Procedure Open_Window_Options ()
  If OpenWindow (#Window_Options, 351, 148, 554, 300,  "Options", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar)
    If CreateGadgetList(WindowID (#Window_Options))

      OpenPreferences (PreferencesFile$)
      
      Frame3DGadget (#GroupBoxIntervalles, 10, 10, 390, 215, "Intervalles")

      CheckBoxGadget (#CheckBox_SecondeMajeure, 160, 30, 120, 20, "Seconde majeure")
      SetGadgetFont (#CheckBox_SecondeMajeure, FontID1)
      Flag = ReadPreferenceLong ("SecondeMajeure", 0)
      SetGadgetState(#CheckBox_SecondeMajeure, Flag)

      CheckBoxGadget (#CheckBox_SecondeMineure, 20, 30, 120, 20, "Seconde mineure")
      SetGadgetFont (#CheckBox_SecondeMineure, FontID1)
      Flag = ReadPreferenceLong ("SecondeMineure", 0)
      SetGadgetState(#CheckBox_SecondeMineure, Flag)

      CheckBoxGadget (#CheckBox_TierceMajeure, 160, 50, 110, 20, "Tierce majeure")
      SetGadgetFont (#CheckBox_TierceMajeure, FontID1)
      Flag = ReadPreferenceLong ("TierceMajeure", 0)
      SetGadgetState(#CheckBox_TierceMajeure, Flag)

      CheckBoxGadget (#CheckBox_TierceMineure, 20, 50, 116, 20, "Tierce mineure")
      SetGadgetFont (#CheckBox_TierceMineure, FontID1)
      Flag = ReadPreferenceLong ("TierceMineure", 0)
      SetGadgetState(#CheckBox_TierceMineure, Flag)

      CheckBoxGadget (#CheckBox_QuarteJuste, 20, 70, 110, 20, "Quarte juste")
      SetGadgetFont (#CheckBox_QuarteJuste, FontID1)
      Flag = ReadPreferenceLong ("QuarteJuste", 0)
      SetGadgetState(#CheckBox_QuarteJuste, Flag)

      CheckBoxGadget (#CheckBox_QuinteAugmentee, 160, 90, 200, 20, "Quinte augmentée / Sixte mineure")
      SetGadgetFont (#CheckBox_QuinteAugmentee, FontID1)
      Flag = ReadPreferenceLong ("QuinteAugmentee", 0)
      SetGadgetState(#CheckBox_QuinteAugmentee, Flag)

      CheckBoxGadget (#CheckBox_SixteMajeure, 20, 110, 110, 20, "Sixte majeure")
      SetGadgetFont (#CheckBox_SixteMajeure, FontID1)
      Flag = ReadPreferenceLong ("SixteMajeure", 0)
      SetGadgetState(#CheckBox_SixteMajeure, Flag)

      CheckBoxGadget (#CheckBox_SeptiemeMineure, 20, 130, 110, 20, "Septième mineure")
      SetGadgetFont (#CheckBox_SeptiemeMineure, FontID1)
      Flag = ReadPreferenceLong ("SeptiemeMineure", 0)
      SetGadgetState(#CheckBox_SeptiemeMineure, Flag)

      CheckBoxGadget (#CheckBox_Octave, 20, 150, 110, 20, "Octave")
      SetGadgetFont (#CheckBox_Octave, FontID1)
      Flag = ReadPreferenceLong ("Octave", 0)
      SetGadgetState(#CheckBox_Octave, Flag)

      CheckBoxGadget (#CheckBox_SeptiemeMajeure, 160, 130, 110, 20, "Septième majeure")
      SetGadgetFont (#CheckBox_SeptiemeMajeure, FontID1)
      Flag = ReadPreferenceLong ("SeptiemeMajeure", 0)
      SetGadgetState(#CheckBox_SeptiemeMajeure, Flag)

      CheckBoxGadget (#CheckBox_QuinteJuste, 20, 90, 110, 20, "Quinte juste")
      SetGadgetFont (#CheckBox_QuinteJuste, FontID1)
      Flag = ReadPreferenceLong ("QuinteJuste", 0)
      SetGadgetState(#CheckBox_QuinteJuste, Flag)

      CheckBoxGadget (#CheckBox_QuarteAugmentee, 160, 70, 230, 20, "Quarte augmentée / Quinte diminuée")
      SetGadgetFont (#CheckBox_QuarteAugmentee, FontID1)
      Flag = ReadPreferenceLong ("QuarteAugmentee", 0)
      SetGadgetState(#CheckBox_QuarteAugmentee, Flag)

      CheckBoxGadget (#FondamentaleFixe, 20, 180, 200, 20, "Toujours la même fondamentale (C)")
      SetGadgetFont (#FondamentaleFixe, FontID1)
      Flag = ReadPreferenceLong ("FondamentaleFixe", 0)
      SetGadgetState(#FondamentaleFixe, Flag)

      CheckBoxGadget (#RndDeuxiemeNote, 20, 200, 200, 20, "Deuxième note : Octave au hasard")
      SetGadgetFont (#RndDeuxiemeNote, FontID1)
      Flag = ReadPreferenceLong ("RndDeuxiemeNote", 0)
      SetGadgetState(#RndDeuxiemeNote, Flag)


      ButtonGadget (#Button_valider, 410, 30, 110, 29, "Valider")
      SetGadgetFont (#Button_valider, FontID1)

      ButtonGadget (#Button_Annuler, 410, 70, 110, 30, "Annuler")
      SetGadgetFont (#Button_Annuler, FontID1)

      
      Frame3DGadget (#GroupBoxVoxSynth, 10, 230, 390, 50, "Synthétiseur vocal")

      
      TextGadget (#LabelListe, 20, 252,125, 20, "Utiliser la voix suivante :")
      ComboBoxGadget (#Liste, 145,250, 150, 150)
      
      ; liste des voix
      For i = 0 To Voices
        name$ = TTSEngName (i) ; Retrieve each voice name.
        language$ = TTSEngLang (i) ; arg1.l = voice index
        AddGadgetItem (#Liste , -1, language$ ) ; ajoute dans la liste les noms trouvé+nationalité
      Next i
      
      Voice = ReadPreferenceLong ("Voice", 0)
      name$ = TTSEngName (Voice) ; cherche le nom
      language$ = TTSEngLang (Voice) ; cherche le nom+nationalité
      SetGadgetState (#Liste , Voice) ; active la voix lu par defaut dans la liste
      ClosePreferences ()
      
    EndIf
  EndIf
EndProcedure



Procedure Open_Window_main()
  If OpenWindow(#Window_main, 454, 268, 196, 170,  "Pure ear trainer v0.1", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
    If CreateGadgetList(WindowID(#Window_main))

      ButtonGadget(#Button_startend, 20, 20, 150, 30, "Lancer l'exercice")
      SetGadgetFont(#Button_startend, FontID1)
      
      ButtonGadget(#Button_Options, 20, 60, 150, 30, "Options...")
      SetGadgetFont(#Button_Options, FontID1)

      ButtonGadget(#Button_quitter, 20, 100, 152, 30, "Quitter")
      SetGadgetFont(#Button_quitter, FontID1)

      HyperLinkGadget(#Hyperlink, 60, 140,250,20,"Par Bombseb", RGB (0,0,255), #PB_Font_Underline)
      SetGadgetFont(#Hyperlink, FontID2)
      
     ; ButtonGadget(#Button_about, 20, 100, 150, 30, "A propos....")
     ; SetGadgetFont(#Button_about, FontID1)
      
    EndIf
  EndIf
EndProcedure
le prog principal pure ear trainer.pb :

Code : Tout sélectionner

; PureBasic Visual Designer v3.92 build 1460


Global PreferencesFile$
Global ExerciceEnCours
Global Voices

ExericeEnCours = 0
PreferencesFile$ = "PureEarTrainer.ini"


;{******** INIT DE LA LIB TTS ********
type = TTSInit(0,0,0) ; First we initialize the tts support.
;Debug type

Voices.l = TTSEngCount () ; Get the highest voice index.
If Voices > -1 ; If there are any voice installed...
  ; Debug "Il y a " + Str (voices + 1)+ " voix installées sur votre système"
   ;Remember that voice index starts from 0
   For i=0 To Voices
    name$ = TTSEngName(i) ; Retrieve each voice name.
 ;   Debug "Voice index = " + Str (i)+ " , Voice name = " +name$
   Next i
Else
   MessageRequester ( "Erreur" , "Il n'y a pas de voix" + Chr (10)+ "installées sur votre système" , #PB_MessageRequester_Ok)
   End
EndIf
;}***********************************


IncludeFile "winlib.pb"

Declare Options (WindowMain)
Declare Exercice ()
Declare GetRandomIntervalle ()
Declare GetRandomOctave ()

; **** Declarations pour le midi ****
Global m_hMidiOut,m_MIDIOpen.b
Declare SendMIDIMessage (nStatus.l,nCanal.l,nData1.l,nData2.l)
Declare MIDIOpen ()
Declare PlayNoteMidi (Canal.b,Note.b,VelociteDown.b,VelociteUp.b)
Declare ChargeInstrument (Canal.b,Instrument.b)
; ***********************************

;{*** Création du .ini s'il n'existe pas ***
If FileSize(PreferencesFile$) < 0
  CreatePreferences (PreferencesFile$)
  WritePreferenceLong ("SecondeMajeure", 0)
  WritePreferenceLong ("SecondeMineure", 0)
  WritePreferenceLong ("TierceMajeure", 1)
  WritePreferenceLong ("TierceMineure", 1)
  WritePreferenceLong ("QuarteJuste", 0)
  WritePreferenceLong ("QuinteAugmentee", 0)
  WritePreferenceLong ("SixteMajeure", 0)
  WritePreferenceLong ("SeptiemeMineure", 0)
  WritePreferenceLong ("Octave", 0)
  WritePreferenceLong ("SeptiemeMajeure", 0)
  WritePreferenceLong ("QuinteJuste", 0)
  WritePreferenceLong ("QuarteAugmentee", 0)
  WritePreferenceLong ("FondamentaleFixe", 1)
  WritePreferenceLong ("RndDeuxiemeNote", 0)
  WritePreferenceLong ("Voice", 0)
  ClosePreferences ()
EndIf
;}*******************************************
  
Open_Window_Main ()


;{ -------- Boucle d'evenement de la fenêtre principale ---------
Repeat
  EventID = WaitWindowEvent ()
  
    
  ; ****************************
  ; **** Fenêtre principale ****
  ; ****************************
  Select EventID
    Case #PB_Event_Gadget
      Select EventGadget ()
        Case #Button_startend
          
        If ExerciceEnCours = 0
          ;** On lance l'exercice **
          
          SetGadgetText(#Button_startend, "Stopper l'exercice")
          MIDIOpen ()
          ChargeInstrument(0,0)
          ExerciceEnCours = 1
          CreateThread (@Exercice(), 0)
        
        Else
          ; ** On arrete l'exercice **
          SetGadgetText(#Button_startend, "Lancer l'exercice")
          ExerciceEnCours = 0
        
        EndIf
        
        Case #Button_Options ; ***** Options *****
          Open_Window_Options ()
          Options (#Window_Main)
        Case #Button_Quitter ; *****   Quit..*****
          EventID = #PB_Event_CloseWindow
          
        Case #Hyperlink
          RunProgram("http:\\bombseb.free.fr")
          
      EndSelect
  EndSelect
 
Until EventID = #PB_Event_CloseWindow
;}-------- Boucle d'evennement de la fenêtre principale ---------


Procedure Options (ParentWindow)

  EnableWindow_(WindowID (ParentWindow), #False)

  Repeat
    EventID = WaitWindowEvent ()
    ; ****************************
    ; ****      Options       ****
    ; ****************************
    If EventID = #PB_Event_Gadget
      Select EventGadget ()
        Case #Button_Annuler ; *****   Quitter les options..*****
          EventID = #PB_Event_CloseWindow 

        Case #Button_valider
          ; Sauvegarde dans le .ini
          CreatePreferences (PreferencesFile$)
          WritePreferenceLong ("SecondeMajeure", GetGadgetState (#CheckBox_SecondeMajeure))
          WritePreferenceLong ("SecondeMineure", GetGadgetState (#CheckBox_SecondeMineure))
          WritePreferenceLong ("TierceMajeure", GetGadgetState (#CheckBox_TierceMajeure))
          WritePreferenceLong ("TierceMineure", GetGadgetState (#CheckBox_TierceMineure))
          WritePreferenceLong ("QuarteJuste", GetGadgetState (#CheckBox_QuarteJuste))
          WritePreferenceLong ("QuinteAugmentee", GetGadgetState (#CheckBox_QuinteAugmentee))
          WritePreferenceLong ("SixteMajeure", GetGadgetState (#CheckBox_SixteMajeure))
          WritePreferenceLong ("SeptiemeMineure", GetGadgetState (#CheckBox_SeptiemeMineure))
          WritePreferenceLong ("Octave", GetGadgetState (#CheckBox_Octave))
          WritePreferenceLong ("SeptiemeMajeure", GetGadgetState (#CheckBox_SeptiemeMajeure))
          WritePreferenceLong ("QuinteJuste", GetGadgetState (#CheckBox_QuinteJuste))
          WritePreferenceLong ("QuarteAugmentee", GetGadgetState (#CheckBox_QuarteAugmentee))
          WritePreferenceLong ("FondamentaleFixe", GetGadgetState (#FondamentaleFixe))
          WritePreferenceLong ("RndDeuxiemeNote", GetGadgetState (#RndDeuxiemeNote))
          WritePreferenceLong ("Voice", GetGadgetState (#Liste))
          ClosePreferences ()
          
          EventID = #PB_Event_CloseWindow
               
     EndSelect     
    EndIf
    Until EventID = #PB_Event_CloseWindow
  
    CloseWindow (#Window_Options)
    EnableWindow_(WindowID (ParentWindow), #True)
    SetActiveWindow (ParentWindow)

EndProcedure
Procedure Exercice ()

  Dim IntervalleName$ (12)
  
  IntervalleName$ (1) = "Seconde mineure"
  IntervalleName$ (2) = "Seconde majeure"
  IntervalleName$ (3) = "Tierce mineure"
  IntervalleName$ (4) = "Tierce majeure"
  IntervalleName$ (5) = "Quarte juste"
  IntervalleName$ (6) = "Quarte augmentée"
  IntervalleName$ (7) = "Quinte juste"
  IntervalleName$ (8) = "Quinte augmentée"
  IntervalleName$ (9) = "Sixte majeure"
  IntervalleName$ (10) = "Septième mineure"
  IntervalleName$ (11) = "Septième majeure"
  IntervalleName$ (12) = "Octave"

  note = 1
  Repeat



    OpenPreferences (PreferencesFile$)
    Flag = ReadPreferenceLong ("FondamentaleFixe", 0)
    If Flag = 1
      Fondamentale = 0
    Else
      Fondamentale = Random (11)
    EndIf

    DeuxiemeNote = GetRandomIntervalle ()
    NomNote$ = IntervalleName$ (DeuxiemeNote)

    OpenPreferences (PreferencesFile$)
    Flag = ReadPreferenceLong ("RndDeuxiemeNote", 0)
    If Flag = 1
      DeuxiemeNote = DeuxiemeNote + Random (1) * 12
    EndIf

    OpenPreferences (PreferencesFile$)
    voix = ReadPreferenceLong ("Voice", 0)
    
    ClosePreferences ()

    ;Debug "Intervalle :" + NomNote$ + " -> " + Str (DeuxiemeNote) + " demi tons"
    
    
    PlayNoteMIDI (0, 48 + Fondamentale, 127,127)
    PlayNoteMIDI (0, 48 + Fondamentale + DeuxiemeNote, 127,127)
    Delay (2000)
    
    TTSInit(0,0,0) ; First we initialize the tts support.
    TTSSelect (voix)
    TTSSetVolume (50)
    TTSSetSpeed (0) ; vitesse de diction -50=lent ; +50= tres rapide
    TTSSetPitch (0)
    TTSSpeak (NomNote$) ; Speak!

    Delay (2000)

  Until ExerciceEnCours = 0

EndProcedure
Procedure GetRandomIntervalle ()

  Dim IntervallesChoisies (12)

  OpenPreferences (PreferencesFile$)

  Index = 1

  Flag = ReadPreferenceLong ("SecondeMineure", 0)
  If Flag = 1:IntervallesChoisies (Index) = 1:Index = Index + 1:EndIf
  
  Flag = ReadPreferenceLong ("SecondeMajeure", 0)
  If Flag = 1:IntervallesChoisies (Index) = 2:Index = Index + 1:EndIf

  Flag = ReadPreferenceLong ("TierceMineure", 0)
  If Flag = 1:IntervallesChoisies (Index) = 3:Index = Index + 1:EndIf

  Flag = ReadPreferenceLong ("TierceMajeure", 0)
  If Flag = 1:IntervallesChoisies (Index) = 4:Index = Index + 1:EndIf

  Flag = ReadPreferenceLong ("QuarteJuste", 0)
  If Flag = 1:IntervallesChoisies (Index) = 5:Index = Index + 1:EndIf

  Flag = ReadPreferenceLong ("QuarteAugmentee", 0)
  If Flag = 1:IntervallesChoisies (Index) = 6:Index = Index + 1:EndIf

  Flag = ReadPreferenceLong ("QuinteJuste", 0)
  If Flag = 1:IntervallesChoisies (Index) = 7:Index = Index + 1:EndIf

  Flag = ReadPreferenceLong ("QuinteAugmentee", 0)
  If Flag = 1:IntervallesChoisies (Index) = 8:Index = Index + 1:EndIf

  Flag = ReadPreferenceLong ("SixteMajeure", 0)
  If Flag = 1:IntervallesChoisies (Index) = 9:Index = Index + 1:EndIf

  Flag = ReadPreferenceLong ("SeptiemeMineure", 0)
  If Flag = 1:IntervallesChoisies (Index) = 10:Index = Index + 1:EndIf

  Flag = ReadPreferenceLong ("SeptiemeMajeure", 0)
  If Flag = 1:IntervallesChoisies (Index) = 11:Index = Index + 1:EndIf

  Flag = ReadPreferenceLong ("Octave", 0)
  If Flag = 1:IntervallesChoisies (Index) = 12:Index = Index + 1:EndIf

  ClosePreferences ()

  ProcedureReturn IntervallesChoisies (Random (Index - 2) + 1)
EndProcedure
Procedure GetRandomOctave ()
  ProcedureReturn Random (1)
EndProcedure


; ********************* Gestion du MIDI ****************************
Procedure SendMIDIMessage(nStatus.l,nCanal.l,nData1.l,nData2.l)
  dwFlags.l = nStatus | nCanal | (nData1 << 8) | (nData2 << 16)
  temp.l = midiOutShortMsg_(m_hMidiOut,dwFlags);
  If temp<>0
    MessageRequester("Problème", "Erreur dans l'envoi du message MIDI",0)
  EndIf
EndProcedure
Procedure MIDIOpen()
  If m_MIDIOpen = 0
    If midiOutOpen_(@m_hMidiOut,MIDIMAPPER,0,0,0) <> 0
      MessageRequester("Problème", "Impossible d'ouvrir le périphérique MIDI",0)
    Else
      SendMIDIMessage($C0,0,0,0)
      m_MIDIOpen = 1
    EndIf
  EndIf
EndProcedure
Procedure PlayNoteMIDI(Canal.b,Note.b,VelociteDown.b,VelociteUp.b)
  If m_MIDIOpen
    SendMIDIMessage($80 | Canal,0,Note,VelociteDown)
    SendMIDIMessage($90 | Canal,0,Note,VelociteUp)
  EndIf         
EndProcedure
Procedure ChargeInstrument(Canal.b,Instrument.b)
  If m_MIDIOpen
    SendMIDIMessage($C0 | Canal,0,Instrument,0)
  EndIf         
EndProcedure
; ******************************************************************

; *** Pour info : ***
;Dim Notes (36)
;Notes (1) = 48     ;C     ---
;Notes (2) = 49     ;C#
;Notes (3) = 50     ;D
;Notes (4) = 51     ;D#
;Notes (5) = 52     ;E
;Notes (6) = 53     ;F
;Notes (7) = 54     ;F#
;Notes (8) = 55     ;G
;Notes (9) = 56     ;G#
;Notes (10) = 57     ;A
;Notes (11) = 58     ;A#
;Notes (12) = 59     ;B
;Notes (13) = 60     ;C    ---
;Notes (14) = 61     ;C#
;Notes (15) = 62     ;D
;Notes (16) = 63     ;D#
;Notes (17) = 64     ;E
;Notes (18) = 65     ;F
;Notes (19) = 66     ;F#
;Notes (20) = 67     ;G
;Notes (21) = 68     ;G#
;Notes (22) = 69     ;A
;Notes (23) = 70     ;A#
;Notes (24) = 71     ;B
;Notes (25) = 72     ;C    ---
;Notes (26) = 73     ;C#
;Notes (27) = 74     ;D
;Notes (28) = 75     ;D#
;Notes (29) = 76     ;E
;Notes (30) = 77     ;F
;Notes (31) = 78     ;F#
;Notes (32) = 79     ;G
;Notes (33) = 80     ;G#
;Notes (34) = 81     ;A
;Notes (35) = 82     ;A#
;Notes (36) = 83     ;B
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

ta denomination de quarte augmenté est fausse
il sagit bien de Quinte diminué !!

pareil pour tes "secondes " majeur ou mineur, ça ne se dit pas
on parle de 9em ou de 9em diminué ..

a par ça , cela me parait interressant comme programme
bravo pour l'idée :D
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

hmmmm non non les dénominations ne sont pas fausse...
en tout cas j'ai repris l'un de mes anciens cours de musique pour justement éviter de mettre de bétises....

Sinon pour la quarte augmentée / quinte diminuée j'aurais pu rajouter "triton" car c'est la même chose aussi


EDIT : Dans le doute j'ai vérifié sur le web : http://www.theoriedelamusique.com/intervalles1.html

Il y a beaucoup plus de dénominations en fait....
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

en fait on ne parle pas de la meme chose , moi je donne le nom des notes employés pour faire un accords (3 notes minimum)
alors que ta denomination sert a désigner l'eccart entre 2 notes (l'intervalle) :D

d'ailleurs je trouve que tu devrais accer ton prg sur les accords, plutot que sur les intervalles de 2 sons, car en pratique un accord mineur
par exemple est constitué de sa (fondamentale, tierce mineur, quinte juste)
ce qui sert dans la vie de tout les jour d'un musicos :D

ce programme deviendrai bien plus utile pour aider a reconaitre d'oreille
le type d'accords (9em,13em,7em,majeur,mineur,augmenté,diminué)

voila voila , sinon encore bravo pour l'idée :D
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

ce programme deviendrai bien plus utile pour aider a reconaitre d'oreille
le type d'accords (9em,13em,7em,majeur,mineur,augmenté,diminué)
oui j'y avais pensé... mais bon
c'est du boulot :D [/quote]
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Hey hi, hey ho....

Message par Huitbit »

[EDIT] j'ai trouvé le fichier exe sur ton site :D :D :D :D :D :D :D :D :D
Well done Boy! Good job!


Comme prévu, je n'arrive pas à faire fonctionner tout ça :mad:
J'ai tout téléchargé, j'ai tout mis dans un dossier "Bombseb"(en espérant que tu ne sois ni trop corse ni trop basque :lol: ) .
La french voix de "Virginie"(c'est qui celle là d'abord?!), la TTS de Coolman(sur un topic du forum)...

Sur mon PC, je n'ai d'installé que les versions 3.94 et 4 de PureBasic(j'ai découvert PB en décembre 2005 #hello ).

Je vois un 3.92 en haut d'un des programmes :twisted: , est-ce pour cela que je n'arrive pas à faire tourner la bête?

Si tu as le temps, poste un mode d'emploi pour les débutants(car les lib, les API et Cie...appartienent à un monde parallèle pour moi :D )!


En attendant, je jette un coupd'oeil au prog principal!

Ciao!
Elevé au MSX !
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

désolé !!! c'est du PB V4 !!!

je l'avais commencé en 3.94 et je l'ai migré ensuite... il ne faut pas se fier aux commentaires :roll:
Répondre