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

Python Discussion :

Classeur de partitions numérique


Sujet :

Python

  1. #1
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut Classeur de partitions numérique
    Hello,

    Je n'aurais jamais qu'à 63 ans je me retrouve à la basse dans un groupe de baloche d'une dizaine des zikos dont 3 cuivres... La vie réserve parfois de drôles des surprises.

    le problème à résoudre, c'est de remplacer les 6 classeurs (en gros un par style) de partitions par une version électronique. Ca fait quand même 60 classeur pour tout l'orchestre. Je n'ai aucune connaissance ni le temps pour étudier une version tablette, ce sera donc une Raspberry avec un écran HD et un programme python gérant un visualisateur de PDF. Les ios de la raspberry servant à gérer un clavier sommaire (les chiffres, quelques lettres, avancer reculer, valider abandonner), deux pédales (avancer reculer par page à l'intérieur même du pdf, une partition pouvant avoir plusieurs pages) et un petit affichage 4 x 7 segments.

    La question: Existe t-il un bibliothèque python capable de créer et détruire des visualisations de pdf et de se balader à l'intérieur? L'idée est elle débile? Viable? Dépassée? y aurait-il mieux?

    A+

    Pfeuh

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 219
    Par défaut
    hello,
    je n'ai peut-être pas tout compris mais si tu parles de pdf il s'agit de partitions scannées ? Pourquoi ne pas utiliser des midifiles qui sont en format numérique. Il y a des logiciels qui transcrivent ces fichiers en partitions visuelles (ex: musescore).
    Ami calmant, J.P

  3. #3
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Non, ce n'est pas du scan, c'est de la partition issue de musescore, le pdf fait entre 20 et 100 ko, c'est beaucoup plus léger que du scan. En fait, les fichiers pdf existent déjà, il n'y a rien à créer, simplement construire le système de visualisation.

    J'ai une piste en lançant un subprocess par python et en le détruisant à la prochaine demande de page. Mais ça ne permet pas encore de mettre le pdf en premier plan ni en affichage pleine page, et encore moins d'avancer et reculer à l'intérieur du pdf.

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 219
    Par défaut
    ok je comprend mieux. il s'agit d'un visualiseur de partitions commandé par clavier ou pédale. Pourquoi de ne pas utiliser impress (équivalent de powerpoint mais qui est gratuit et tourne sur la plupart des O.S) . Les partitions c'est comme un diaporama avec une page de partition par diapo. Ensuite on contrôle le changement de pages par macro.

  5. #5
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Je ne connais pas Impress, est-ce la version openOffice de Powerpoint? Dans ce cas, ce n'est pas assez flexible, il faut pouvoir passer par exemple de la page 7 (le pdf "0007.pdf") à la page 123 (le pdf "0123.pdf") par le clavier. il faut aussi compiler tous les fichiers pdf en un seul fichier "diaporama", ce qui est très lourd, je préfère une solution à base de répertoire dédié aux fichiers pdf, où on rajoute ou retire des partitions sans aucune contrainte.

  6. #6
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 219
    Par défaut
    hello,
    peut-être une possibilité : qpageview

    qpageview provides a page based document viewer widget for Qt5/PyQt5.

    It has a flexible architecture potentionally supporting many formats. Currently, it supports SVG documents, images, and, using the Poppler-Qt5 binding, PDF documents.

  7. #7
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Ça a l'air d’être exactement ce qu'il me faut! Ça me fait peur d'installer QT5, mais je vais quand même essayer début de semaine prochaine. Merci pour cette piste.

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 833
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 833
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par pfeuh Voir le message
    La question: Existe t-il un bibliothèque python capable de créer et détruire des visualisations de pdf et de se balader à l'intérieur? L'idée est elle débile? Viable? Dépassée? y aurait-il mieux?
    Tu y tiens vraiment à le programmer? J'ai déjà vu des musiciens dans les cafés ou autres, ils ont les partitions PDF sur tablette et un outil pour les visualiser. Je viens de taper "partition musique visualiser gratuit" sur un moteur de recherche et immédiatement je suis arrivé ici: https://www.partitionnumerique.com/readers/ et ce n'est sûrement pas le seul. A la limite même le très simplissime et très léger sumatra pdf (c'est mon lecteur par défaut) peut convenir...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Ce n'est pas que je tienne à le programmer moi même, c'est juste que les application du commerce ne font pas ce dont j'ai besoin. Le premier truc c'est que quand quelqu'un dit "maintenant on joue la 123", il faut qu'il y ait juste à taper "1", "2", "3 ", RETURN.

    J'ai bien sûr une tablette et plein de partitions en pdf pour jouer chez moi, mais ce n'est pas ce que je cherche là. Un écran de tablette est de toute façon trop petit pour quelqu'un qui joue debout pas forcément collé à son pupitre. Et 10 bonhommes qui cherche un truc sur 10 tablettes, ça prendra fatalement beaucoup plus de temps que la simple saisie d'un nombre.

    Ici, l’objet doit juste servir a afficher des pages, pas besoin d'accès a la partie ordinateur ni à la souris ou autre touchscreen . Ça doit juste servir à recevoir un numéro de page par liaison série over USB et afficher la dite page.

    Merci pour le lien vers Sumatra. Piloté par un script python qui ferait le lien entre la réception du numéro de page et le lancement de Sumatra avec les arguments qui vont bienn ça aurait pu le faire. Sauf que c'est à faire tourner sur une raspberry et que Sumatra ne tourne apparemment que sur windows.

    Dernière chose, un envoi du numéro de partition sur toutes les tablettes en même temps est envisageable avec mon bricolage.

  10. #10
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 219
    Par défaut
    il y a aussi Okular comme lecteur de PDF qui tourne sous windows. et qui a un mode présentation ( comme powerpoint) avec la commande de changement de page par clavier. On peut programmer des raccourcis pour des tas de possibiltés (page number par exemple)
    On peut aussi lancer la lecture d'un PDF en mode présentation à partir d'une page donnée en ligne de commande exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    okular -p 3 --presentation YourFile.pdf

    Nom : Okular.PNG
Affichages : 128
Taille : 102,0 Ko

  11. #11
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 219
    Par défaut
    hello,
    finalement si tu es sous une distribution linux avec comme environnement graphique Gnome, je pense que la meilleure option c'est Evince . Evince est un lecteur de fichiers PDF et PostScript (PS), il supporte aussi les formats TIFF, multipages, DjVu, CBR et DVI.
    1 - C'est le visionneur de documents par défaut de Gnome.
    2 - Il a un mode présentation.
    3 - Il est programmable en python.

    Voici un script python qui l'utilise et qui visualise un fichier PDF multi-pages. Il y a une programmation des touches clavier. Par exemple j'ai rajouté dans le programme un Ctrl+F qui permet d'aller à la page 6.
    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    #!/usr/bin/env python
    import os
    import sys
    import pgi
    pgi.require_version('Gtk', '3.0')
    pgi.require_version('EvinceDocument', '3.0')
    pgi.require_version('EvinceView', '3.0')
    from pgi.repository import Gtk, GObject, Gdk
    from pgi.repository import EvinceDocument
    from pgi.repository import EvinceView
     
     
    if len(sys.argv) != 2:
        print("Usage: "+sys.argv[0]+" file.ext")
        sys.exit(0)
    else:
        docFile=os.path.abspath(sys.argv[1])
     
     
    # ==========================================================
    # Evince viewer class
    class EvinceViewer:
     
     
        # ------------------------------------------------------
        # constructor to build GUI and hook up function
        def __init__(self):
     
     
            # create main window
            self.window = Gtk.Window()
            # set title, size, position
            self.window.set_title("Evince")
            self.window.set_default_size(800,600)
            # connect destroy and delete events to quit
            self.window.connect('destroy', Gtk.main_quit)
            self.window.connect('delete-event',
                    Gtk.main_quit)
            self.window.connect("key-press-event",
                    self.keypress)
     
     
            # scrolled window for the viewer
            scroll = Gtk.ScrolledWindow()
            self.window.add(scroll)
     
     
            # evince document
            EvinceDocument.init()
            doc = EvinceDocument.Document.factory_get_document(
                    'file://'+docFile)
            # evince view
            self.view = EvinceView.View()
            # evince model
            self.model = EvinceView.DocumentModel()
            self.model.set_document(doc)
            self.model.set_sizing_mode(EvinceView.SizingMode.BEST_FIT)
            self.view.set_model(self.model)
     
     
            # add to scroll window
            scroll.add(self.view)
            self.window.show_all()
            self.fullscreen=False
     
     
        #------------------------------------------------------
        # handling keyboard events
        def keypress(self,widget,event):
            keyname = Gdk.keyval_name(event.keyval)
            ctrl = event.state & \
                    Gdk.ModifierType.CONTROL_MASK
     
     
            if ctrl:
     
     
                if keyname == 'r':
                    self.view.reload()
     
     
                elif keyname == 'Return':
                    if self.fullscreen == False:
                        self.fullscreen=True
                        self.window.fullscreen()
                    else:
                        self.fullscreen=False
                        self.window.unfullscreen()
                elif keyname == 'f':
                    self.model.props.page = 5     # 5 = page 6
     
     
                elif keyname == 'q':
                    Gtk.main_quit()
     
     
        def main(self):
            Gtk.main()
     
     
    if __name__ == "__main__":
        evinceViewer = EvinceViewer()
        evinceViewer.main()
    ce code tourne sous Ubuntu 20.04 en python 3.8

    Voici ce que cela donne (je n'ai pas mis le viewer en full screen pour que le gif animé ne soit pas trop gros) :

    Nom : evince.gif
Affichages : 112
Taille : 208,0 Ko

    comme manipulation je fais d'abord un ctrl+f pour aller en page 6 puis j'utilise les flèches -> <- pour me déplacer dans la partition.


    Ami calmant, J.P

  12. #12
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Hello,

    Merci jurassic pork! Evince à l'air d'être exactement ce qu'il me faut. Désolé pour le retard, j'ai zappé les 2 derniers posts, je suis revenu par hasard. Du coup je peux réveiller le projet. En fait j’utilise Evince tous les jours, mais sans savoir que c'est lui, pour moi c'était effectivement la-visionneuse-par-défaut-de-mon-ubuntu-dont-on-ne-sait-jamais-le-nom! Et j'ignorai bien sûr son accessibilité en ligne de commande et l'existence de la bibliothèque python dédiée.

    Du coup, y'a pu ka! Faire tourner python/gtk sous ubuntu sur une raspberry et bien sûr écrire le script. Encore merci.

    A+

    Pfeuh

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Désactivation du clavier numérique à l'ouverture d'un classeur
    Par jeff1494 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/11/2015, 11h42
  2. Ouvrir plusieurs classeurs à partit de mon USF
    Par vitalus dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/05/2015, 15h04
  3. [AC-2003] Import Classeur Excel : problème avec Champ d'abord numériques puis Alpha.
    Par Godzestla dans le forum VBA Access
    Réponses: 3
    Dernier message: 16/08/2011, 15h06
  4. Réponses: 2
    Dernier message: 16/06/2009, 10h16
  5. [Delphi 6] EditBox -> valeurs numériques ?
    Par JBrek dans le forum Composants VCL
    Réponses: 9
    Dernier message: 02/12/2002, 13h08

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