IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Projets Discussion :

Système des gammes musicales


Sujet :

Projets

  1. #1
    Invité
    Invité(e)
    Par défaut Système des gammes musicales
    Bonjour

    Comme j'ai la chance de comprendre les expressions relatives aux notes de musique (Do, Ré, Mi, Fa, Sol, La, Si), et ainsi que d'avoir réalisé un système qui permet de les calculer. Je vous donne un programme source écrit en Python3 qui traite les notes de musique intelligemment, en répartissant ces traitements sur plusieurs cas. Je ne veux pas vous soumettre le détail théorique de la musique, mais plutôt et par son biais calculé, les définitions développées sont peu nombreuses pour le moment. Ne vous attendez pas à trouver un système de recherche avec les termes (gamme de Mi mélodique, ou de Ré pentatonique mineure), car les opérations calculent les intervalles purement et simplement.

    Les gammes musicales ont des valeurs aux tonalités transposables, aussi une gamme en Do majeur a la même valeur que celle de Ré majeur. Pour généraliser le développement des gammes, il nous faut savoir que le nombre des valeurs est limité à 66. Ce qui fait la différence du nombre de gammes tient dans les tonalités, et là l'estimation du nombre réel des tonalités mises aux valeurs des tonalités est plus que conséquent.

    Progamv5encore dispose d'une interface de réglage des notes via leurs curseurs (scale) qui circulent sur les fils des altérations (#, b), et lorsque vous relâchez le curseur, la fonction relative vous donne le résultat sous une forme écrite avec sa définition diatonique modale et mise à la tonique si besoin. C'est cette fonction qui calcule la gamme en cours qui va être la base des expressions possibles grâce aux définitions des (accords 1357, des tétracordes, des chromatismes...). Actuellement, je travaille à réaliser les définitions commatiques relatives à la gamme en cours.

    Le sujet présent est vaste, et celui qui est à venir l'est encore plus. Car les gammes commatiques sont vraiment très nombreuses, et j'ai l'intention de poursuivre avec les tempéraments, ainsi que du contexte tétracordique car il traite d'un sujet spécial ou chronique. Mon expérience en la matière m'a permis de percevoir des voies en futures résolutions. Je vous conseille de vous y intéresser.

    Un aperçu de ses fonctionnalités :
    http://www.cabviva.com/gampro1a.html

    Un petit manuel de référence sur plusieurs pages :
    http://www.cabviva.com/gampro.html

    Le programme source en Open Source :
    http://www.cabviva.com/programs/progamv5encore.txt

    Le programme exécutable :
    http://www.cabviva.com/programs/progamv5encore.zip

    Je serais vraiment content de voir que vous portez un intérêt à cette application, et surtout qu'il puisse être ouvert à tous

    Il est fort possible que je revienne sur cette discussion pour y apporter des nouvelles

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2003
    Messages : 260
    Points : 573
    Points
    573
    Billets dans le blog
    1
    Par défaut Hello
    Hello,

    J'ai lu (en diagonal) ton post.

    Si je comprends bien, ça permet de calculer et visualiser des gammes de musique ?

    Stève

  3. #3
    Invité
    Invité(e)
    Par défaut
    Disons, que l'approche musicale n'est pas celle que tout le monde pourrait le croire. Il est possible de créer une fonction qui permette l'édition sur une portée.
    Ou bien une autre fonction qui rechercherait les gammes selon des termes populaires (mélodique,...). Le plus important est la capacité de calculer la gamme en tenant compte des curseurs que sont les notes, au final. j'aimerais aussi ajouter que tout dépend de ce que vous entendez par la visualisation des gammes...

    Si le programme calcule une seule et unique gamme, une autre fonction peut calculer une série de gammes données pour en déduire un décors harmonique. Par exemple, relever toutes les gammes fondamentales des Do majeurs de septième afin d'analyser cette expression.

    Tout est une question d'expérience en la matière, plus on en sait et plus on en découvre...
    Vous n'avez qu'à visiter mon site pour y voir plusieurs exemples de cheminements exprimés, tout dépend de la façon de conduire ce potentiel.

    Rassurez-vous je ne vais pas être trop compliqué, je connais bien ce vieux diction "on en apprend tous les jours". Et celui-ci "la vie de tous les possibles a toutes les issues imaginables"

    Merci de votre attention

    @urémail
    Dernière modification par LittleWhite ; 25/03/2017 à 18h16. Motif: Pas besoin de citer l'intégralité du message précédent

  4. #4
    Invité
    Invité(e)
    Par défaut
    Histoire de la gamme musicale
    Pas depuis le début
    En terme classique elle résume sept notes et cinq intervalles, ce qui fait une octave de douze intervalles vacants.

    Ces vides sonores donnent les éléments de mesure diatonique, puisqu'originaux & altérativement accessibles
    Le jeu des altérations est utilisé pour signer la note, mais avant il ne faut pas ignorer la gamme majeure de Do ou C
    Elle a 7 notes naturelles et non signées, leurs valeurs numériques sont égales à zéro, là où -1 = b, et +1 = #

    La tonalité diatonique du mode tonique de la gamme naturelle est notre étalon majeur, qui s'adapte aussi à toutes les autres tonalités

    Progamv5encore p5e a une table de réunion des formes diatoniques toniques, et une ordonnée des nominations
    Maintenant sachez que quoi que vous fassiez avec les curseurs ou bien le clavier de sélection, vous serez en réunion
    Les gammes orchestrales utilisent une grande variété de tonalités, au point de se libérer de tout étalonnage extérieur
    Le projet p5e a une origine heptatonique (C,D,E,F,G,A,B), et il touche les tonalités libérées des 66 fondamentales de Do majeurs maj7

    Au démarrage la gamme de C naturelle affiche la liste des modulations diatoniques
    La gamme n'est pas isolée, car si elle est en réunion à cause de son élémentarisme
    Elle a une position chronologique dans le système gammique alignant les toniques fondamentales
    La gamme est une relative tétracordique, soit deux tétracordes mesurés de C à C

    Rap Gammes publiques fondamentales majeures maj7 réunies en DO = 66ex
    Rap Gammes tétracordiques fondamentales majeures réunies en DO = 28ex


    La gamme est une relative chromatique, publiquement reconnue et méthodiquement analysée
    L'intervalle entre les notes de la gamme fait l'enharmonie harmonique, puisqu'il n'est pas exclusif
    C'est entamer le sujet commatique de l'histoire, en cours vers l'infini harmonique des gammes avec p5e

    À la raison d'utiliser p5e, s'ajoute sa rapidité de calcul interprété et sa définition éclatée

    C'est vraiment un candidat institutionnel de part l'uniformité de son expression
    Le calculateur diatonique se trouve dans la fonction "gam..", initialisant au passage les données utiles
    @suivre

  5. #5
    Invité
    Invité(e)
    Par défaut
    Le développement du chromatisme est en cours de modification, car le calcul actuel n'est pas suffisamment approfondi
    En cours : La démonstration du traitement chromatique

    Désolé pour cette erreur d'appréciation

    Voici une page pour décrire les faits :
    http://www.developpez.net/forums/blo...oi-programmer/
    Dernière modification par LittleWhite ; 25/03/2017 à 18h16. Motif: Pas besoin de citer l'intégralité du message précédent

  6. #6
    Invité
    Invité(e)
    Par défaut
    En pleine résolution énigmatique

    Nom : Capchromic.PNG
Affichages : 223
Taille : 22,9 Ko
    Dernière modification par LittleWhite ; 25/03/2017 à 18h16. Motif: Pas besoin de citer l'intégralité du message précédent

  7. #7
    Invité
    Invité(e)
    Par défaut
    La résolution du problème d'appréciation chromatique est égale à, une séquence de fonctions créant aussi les priorités hiérarchiques du développement. Puisqu'à l'origine j'avais une simple gamme heptatonique { C, D, E, F, G, A, B}, et je savais qu'elle me fournit les premiers éléments chromatiques. Et, n'ignorais pas les correspondances des formes tonales entre les modes voisins. Tout ceci sachant, je commence par développer les premiers chromatismes simples. Au début j'avais des problèmes car à un certain niveau de tonalité, la gamme chromatique n'était plus exacte. La recherche manuelle aidant, en une exactitude réussie. Formant ainsi un visuel de comparaison résultante, et une aide au débogage de la logique du code concerné. De fil en aiguille liée aux points des premières prioritaires, et par usage second à l'ordonnance chromatique majeure alignée.

    Premier élément "la gamme" ( chr_trans)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # self.tablenotes : Conteneur diatonique | Calcul graphique horizontal
            cy_zer = self.tbdegre[0]  # Premier degré de la gamme
            for cy_ in range(7):
                if cy_ == 0:
                    cy_inter = self.tablenotes[cy_zer] - 0
                if self.tablenotes[cy_zer] < cy_inter:
                    cy_trans = self.tablenotes[cy_zer] - cy_inter + 120
                else:
                    cy_trans = self.tablenotes[cy_zer] - cy_inter
                chr_trans.append(cy_trans)  # Transformé élémentaire
                chr_curs.append(self.cursifs[cy_zer])
                cy_zer += 1
                if cy_zer > 6: cy_zer = 0
            # print('chr_trans', chr_trans)  # Contenu graphique diatonique
    Première séparation ( tri)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    for c in range(0, 120, 10):
                c0 = c
                if c == chr_trans[maj0]:
                    c_tr1 = chr_trans[tra0]
                    while c_tr1 == 110:
                        c_tr1 = -10
                    if c0 - 10 is not c_tr1 and c_tr1 > -1:
                        for di in chnat_aug:
                            if di == maj0:
                                rg_dies = c0 - 10
                                rg_diesdeg = rg_dies, maj0
                                chr_dies.append(rg_diesdeg)
                    maj1 += 1
                    if maj1 > 7:
                        maj1 = 1
                    maj0 = maj1 - 1
                    tra0 += 1
                    if tra0 > 6:
                        tra0 = 0
                else:
                    c_tr1 = chr_trans[tra0]
                    chr_chrom.append(c - (c * 2))
                    if c0 - 10 == c_tr1:
                        for be in chnat_min:
                            if be == maj1:
                                rg_bemdeg = c, maj1
                                chr_bem.append(rg_bemdeg)
    Premières données prioritaires ( voisines)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    # Définitions données
            ch_chrdies = ['0', '0', '0', '0', '0']
            ch_chrbem = ['0', '0', '0', '0', '0']
            c_sdb = [0]
            c_dbn = [0]
            # c1_,c7_ = 'n',0
            for ch in chr_chrom:
                ch_o = ch - (ch * 2)
                # cz_ = ch_o
                for ch_d in chr_dies:
                    ch_wd = ch_d[0]
                    if ch_wd == ch_o:
                        ch_dx = ch_d[1]
                        for cb in range(5):
                            cb_o = chr_chrom[cb]
                            cbo = cb_o - (cb_o * 2)
                            if ch_wd == cbo:
                                c_ = cb
                        c_noe0 = self.decore[ch_dx - 1]
                        c_noe1 = c_noe0[1]
                        c_noe2 = c_noe0[0]
                        c_form(c_noe2)
                        ch_wdx2 = (ch_wd - chr_trans[ch_dx - 1]) // 10
                        ch_wdx = ch_wdx2 + c_dbn[0]
                        c_db = ch_wdx
                        c_sign(c_db)
                        c2_0 = c_sdb[0]
                        c3_0 = c_noe1
                        # c4_0 = c2_0
                        ch_chrdies[c_] = ch_o, ch_dx, c2_0, c3_0, 'plum', ch_wdx
                for ch_b in chr_bem:
                    ch_yb = ch_b[0]
                    if ch_yb == ch_o:
                        ch_bz = ch_b[1]
                        for cb in range(5):
                            cb_o = chr_chrom[cb]
                            cbo = cb_o - (cb_o * 2)
                            if ch_yb == cbo:
                                c_ = cb
                        c_noe0 = self.decore[ch_bz - 1]
                        c_noe2 = c_noe0[0]
                        c_noe1 = c_noe0[1]
                        c_form(c_noe2)
                        ch_ybz2 = (ch_yb - chr_trans[ch_bz - 1]) // 10
                        ch_ybz = ch_ybz2 + c_dbn[0]
                        c_db = ch_ybz
                        c_sign(c_db)
                        c5_0 = c_sdb[0]
                        c6_0 = c_noe1
                        ch_chrbem[c_] = ch_o, ch_bz, c5_0, c6_0, 'pink', ch_ybz
            # print('ch_chrdies0', ch_chrdies)
            # print('ch_chrbem0', ch_chrbem)
    Définitions ajoutées ( plus)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     # Définitions ajoutées
            for c in range(5):
                ch_c = chr_chrom[c]
                c_ch = ch_c - (ch_c * 2)
                if ch_chrdies[c] is '0':
                    c20 = c2_o = -1
                    for c_a2 in chnat_aug:
                        if c20 < 0:
                            c20 = 0
                            c2_o += 1
                            for c_a3 in c_aug:
                                if c_a2 == c_a3:
                                    c20 = -1
                                    break
                            for c_a4 in c2_aug:
                                if c_a2 == c_a4:
                                    c20 = -1
                                    break
                        if c20 == 0:
                            c2_aug.append(c_a2)
                            break
                    c2 = c2_o
                    c_a = chnat_aug[c2]
                    c_a0 = c_a - 1
                    c_noe0 = self.decore[c_a0]
                    c_noe1 = c_noe0[1]
                    c_noe2 = c_noe0[0]
                    c_form(c_noe2)
                    c_mj2 = (c_ch - chr_trans[c_a0]) // 10
                    c_mj = c_mj2 + c_dbn[0]
                    c_db = c_mj
                    c_sign(c_db)
                    c2_0 = c_sdb[0]
                    c3_0 = c_noe1
                    # c4_0 = c_mj
                    ch_chrdies[c] = c_ch, c_a, c2_0, c3_0, 'plum', c_mj
                if ch_chrbem[c] is '0':
                    c20 = c2_o = -1
                    for c_a2 in chnat_min:
                        if c20 < 0:
                            c20 = 0
                            c2_o += 1
                            for c_a3 in c_min:
                                if c_a2 == c_a3:
                                    c20 = -1
                                    break
                            for c_a4 in c2_min:
                                if c_a2 == c_a4:
                                    c20 = -1
                                    break
                        if c20 == 0:
                            c2_min.append(c_a2)
                            break
                    c2 = c2_o
                    c_a = chnat_min[c2]
                    c_a0 = c_a - 1
                    c_noe0 = self.decore[c_a0]
                    c_noe1 = c_noe0[1]
                    c_noe2 = c_noe0[0]
                    c_form(c_noe2)
                    c_mj2 = (c_ch - chr_trans[c_a0]) // 10
                    c_mj = c_mj2 + c_dbn[0]
                    c_db = c_mj
                    c_sign(c_db)
                    c2_0 = c_sdb[0]
                    c3_0 = c_noe1
                    # c4_0 = c2_0
                    ch_chrbem[c] = c_ch, c_a, c2_0, c3_0, 'pink', c_mj
            # print('ch_chrdies1', ch_chrdies)
            # print('ch_chrbem1', ch_chrbem)
    Inclusion au système progamv5encore ( donc)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    if chrselect == 'Chrome naturel':
                            c_chaug[0] = ch_chrdies[cn_]
                            c2_a1 = c_chaug[0][2]
                            c3_a = c_chaug[0][3]
                            c4_a1 = c2_a1
                            coltyp1[0] = c_chaug[0][4]
                            c4_a = c_chaug[0][5]
                            c_chmin[0] = ch_chrbem[cn_]
                            c2_m1 = c_chmin[0][2]
                            c3_m = c_chmin[0][3]
                            c4_m1 = c2_m1
                            coltyp2[0] = c_chmin[0][4]
                            c4_m = c_chmin[0][5]
                            c_doube[0] = 0
                            if c3_a == c3_m:
                                c_doube[0] = 2
                        cn_ += 1
                        chposx += 1
                        c2_ = c2_a1
                        c3_ = c3_a
                        c4_ = c4_a1
                        c5_ = c2_m1
                        c6_ = c3_m
                        c7_ = c4_m1
                        chposya = c4_a
                        chposym = c4_m
                        xb_ = xcpos_ + (chposx * 30)
                        yb1_ = ycpos_ - (chposya * 30)
                        chvow_a = c3_, c2_
                        if c_doube[0] == 2:
                            coltyp1[0] = 'tan'
                            coltyp2[0] = 'tan'
                        chrcan.create_oval(xb_ - rb_, yb1_ - rb_, xb_ + rb_, yb1_ + rb_, fill=coltyp1[0])
                        chrcan.create_text(xb_, yb1_, text=chvow_a, font=fontchr, fill='black')
                        yb2_ = ycpos_ - (chposym * 30)
                        chvow_m = c6_, c5_
                        chrcan.create_oval(xb_ - rb_, yb2_ - rb_, xb_ + rb_, yb2_ + rb_, fill=coltyp2[0])
                        chrcan.create_text(xb_, yb2_, text=chvow_m, font=fontchr, fill='black')
                self.chrgen[cx_] = [cz_], [c1_], [c2_], [c3_], [c4_], [c5_], [c6_], [c7_]
                cz_ += chr_lepas
    Et, comme vous êtes en fin de page un titi lien
    http://www.cabviva.com/progams/progamv6encore.txt

    COMcopy.xlsx
    Dernière modification par LittleWhite ; 12/11/2017 à 08h30.

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/06/2009, 23h06
  2. Réponses: 8
    Dernier message: 24/04/2009, 08h09
  3. systéme des onglets
    Par alouha dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 21/01/2009, 12h49
  4. Taille systéme des barres de titres et autres
    Par TSalm dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 14/11/2007, 10h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo