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

Caml Discussion :

Représentation d'une piste audio (GTK?)


Sujet :

Caml

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Représentation d'une piste audio (GTK?)
    Bonjour,

    Mon soucis est de savoir comment représenter une piste audio .
    Quels widgets utiliser ? Le format du son récupérer est le wav.

    Est il posible de créer une piste avec deux parties :
    - Un check button "Track x" pour le nom et la selection de la piste et un check_button "mute" , le tout dans un conteneur carré à gauche
    - La représentation graphics du signal audio à droite de forme rectangulaire avec une barre de defilement en dessous

    De plus dans mon interface je suis actuellement en présence d'un menu, avec un bouton File > New , un bouton Edit > Add_Track et un Edit > Delete_Track.
    J'aimerai qu'en cliquant sur New, ma fenetre principale m'affiche une premiere
    piste audio (label + bouton + representation du signal)
    et qu'en cliquant sur Add_track, mes pistes s'ajoutent en dessous de la premiere initialement créés. Pour Delete_track, effacer les pistes ou le check_button "Track x" est coché.

    Enfin le tout dnas un conteneur possédant la barre de défilement verticale (max pistes = 16)

    Merci de m'orienter svp, je ne sais vraiment pas comment m'y prendre


  2. #2
    Membre éprouvé
    Avatar de Cacophrene
    Homme Profil pro
    Biologiste
    Inscrit en
    Janvier 2009
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Janvier 2009
    Messages : 535
    Points : 1 125
    Points
    1 125
    Par défaut
    Bonsoir,

    Est il posible de créer une piste avec deux parties :
    - Un check button "Track x" pour le nom et la selection de la piste et un check_button "mute" , le tout dans un conteneur carré à gauche
    - La représentation graphics du signal audio à droite de forme rectangulaire avec une barre de defilement en dessous
    Aucun problème pour faire ça, mais pour la représentation graphique il va peut-être falloir coder quelque chose exprès (LablGTK ne propose rien de tel, et je ne connais pas de binding vers une lib qui le fait bien).

    Enfin le tout dnas un conteneur possédant la barre de défilement verticale (max pistes = 16)
    Ce conteneur peut être une vue arborescente (GTree.view). Chaque ligne représenterait une piste audio. Dans une colonne, tu places le nom, le bouton mute, etc. Dans une autre colonne, la représentation graphique.

    Je détaille dans un prochain message (avec un exemple) parce que je n'ai pas le temps actuellement.

    Cordialement,
    Cacophrène

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    D'accord je suis sur les classes de GTree pour essayer de piger comment ca fonctionne en attendant, ca a pas l'air si évident que ca.

    Pour mon soucis, il faudrait aussi tenir compte de la taille de mes conteneurs.

    Je ne comprends pas mais en indiquant aux flags height et width, les widgets que j'insere sont toujours differents de ce que j'attends. Ils occupent toute la largeur et la hauteur de ma fenetre (bizarre).

    En mp tu pourras trouver le lien de mon proj (cacophrene) je le met à disposition dès que je fais des MAJ. Toujours pareil si tu vois des optimisations, comme pour creer l'initialisation de mon projet, je penses que l'on peut faire mieux.

    A tous les interréssés, mon projet d'interface audio en Caml/C sera bien évidement Open Source. J'indiquerai dès qu'il sera fini où le télécharger.

  4. #4
    Membre éprouvé
    Avatar de Cacophrene
    Homme Profil pro
    Biologiste
    Inscrit en
    Janvier 2009
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Janvier 2009
    Messages : 535
    Points : 1 125
    Points
    1 125
    Par défaut
    Bonjour,

    Citation Envoyé par djsimca
    Je ne comprends pas mais en indiquant aux flags height et width, les widgets que j'insere sont toujours differents de ce que j'attends. Ils occupent toute la largeur et la hauteur de ma fenetre (bizarre).
    Peut-être que tu utilises container#add là où container#pack ~expand:false serait plus approprié. Par défaut, même si tu indiques une largeur et une hauteur, si tu laisses expand à true, la taille du widget est ajustée pour occuper l'espace disponible.

    Citation Envoyé par djsimca
    D'accord je suis sur les classes de GTree pour essayer de piger comment ca fonctionne en attendant, ca a pas l'air si évident que ca.
    Ça paraît obscur au début mais en fait c'est simple. L'idée est là :


    • Une partie gère les données
    • Une partie gère l'affichage

    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
    module Data =
      struct
        let cols = new GTree.column_list (* Stockage des données. *)
        let icon = cols#add GtkStock.conv (* Une colonne pour les icônes. *)
        let text = cols#add Gobject.Data.string (* Une autre avec du texte *)
        let store = GTree.list_store cols (* Vue en liste *)
      end
    
    (* Gestion de l'affichage des données. *)
    module View =
      struct
        let icon = GTree.cell_renderer_pixbuf []
        let text = GTree.cell_renderer_text [`XPAD 5]
        let vcol =
          let vcol = GTree.view_column ~title:"TreeView Demo" () in
          vcol#pack ~expand:false icon;
          vcol#add_attribute icon "stock_id" Data.icon;
          vcol#pack text;
          vcol#add_attribute text "text" Data.text;
          text
      end
    
    (* Des barres de défilement. *)
    let scroll = GBin.scrolled_window
      ~hpolicy:`ALWAYS
      ~vpolicy:`ALWAYS
      ~packing:(* Ta fonction d'empaquetage ici. *) ()
    
    (* La vue arborescente elle-même. *)
    let view =
      let view = GTree.view
        ~model:Data.store
        ~headers_visible:true
        ~rules_hint:true
        ~packing:scroll#add () in
      view#append_column View.vcol;
      view
    Il te faut maintenant adapter le contenu du module Data pour tes besoins. Attention, ce code n'a pas été testé.

    Cordialement,
    Cacophrène

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/02/2014, 12h03
  2. positionner la tete de lecture dans un lecteur pour une piste audio.
    Par stanilas dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 16/07/2012, 09h59
  3. Extraction d'une Piste audio à partir d'un AVI
    Par bartmanb dans le forum Multimédia
    Réponses: 2
    Dernier message: 11/10/2009, 14h55
  4. extraire une portion audio d'une vidéo
    Par Brunoo dans le forum DirectX
    Réponses: 2
    Dernier message: 16/06/2003, 10h29

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