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

Langages de programmation Discussion :

Comprendre un programme multi-langues (Python, C++, matlab)


Sujet :

Langages de programmation

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieux du son
    Inscrit en
    Février 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieux du son
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2013
    Messages : 29
    Points : 17
    Points
    17
    Par défaut Comprendre un programme multi-langues (Python, C++, matlab)
    Bonjour à vous,

    Alors pour commencer je vous explique un peu sur quoi je travaille.
    Je suis sur un programme de simulation électronique temps réel.
    J'ai suivi une thèse publique du Dr Yeh du CCRMA qui explique comment réaliser celà. https://ccrma.stanford.edu/~dtyeh/papers/pubs.html
    J'ai réalisé un programme sur Matlab d'après sa thèse, mais je ne trouve pas les bons résultats!
    Il a également publié son code qui est téléchargeable sur son site sur simple demande.
    J'essaye donc de faire tourner son programme pour pouvoir corriger le mien.

    En bref, et si je comprends bien, il s'agit d'un programme en python qui génère des fichiers .cpp, .hpp et .i à partir d'une "netlist", un fichier simple qui décrit le circuit électronique à simuler. Et à partir de ces fichiers, on est censé pouvoir réaliser la simulation du circuit électronique en lui donnant un fichier .wav, et qui doit donc retourner un fichier .wav également ainsi que tout un tas d'informations.

    Je vais certainement avoir plusieurs problèmes car je suis plutôt débutant...
    Voilà où j'en suis :
    J'ai réussi à créer des fichiers .cpp et .h à partir d'une netlist, mais maintenant je galère pour les utiliser. Il y a bien un fichier "Readme" mais il n'est pas vraiment très clair, et il n'utilise que des lignes de commande (pas très facile pour déboguer un programme, je me trompe?).
    Pouvez-vous m'aider à comprendre comment utiliser ce programme?

    Extrait du fichier Readme :
    "
    To compile and run the generated files (which in this example would take the form TrInputDeck.h/.cpp, except in the fourth example), move them to the TrStatement folder and run make TrInputDeck. To compile files generated in numerical mode, NumStaGe.h and NumStaGe.cpp need to be present. In either case, TrStatement and TrMainSt (.h and .cpp) need to be present.

    If the make is successful, the output executable will be TrInputDeck, and can be run using ./TrInputDeck inFile.wav (with other usage parameters output by running ./TrInputDeck with no args).

    To use the automatically produced swig interface files (currently only produced when using UnifiedTranStage), move the produced .i file with the .h/.cpp files into the TrStatement folder and run the following commands.
    For an example spice deck "filename.sp":

    swig -c++ -python TrFilename.i
    gcc -fpic -c TrFilename_wrap.cxx -o TrFilename_wrap.o -I/usr/local/include/python2.1
    g++ -shared TrFilename_wrap.o TrFilename.h TrStatement.cpp -o _TrFilename.so
    "

    En attendant je me renseigne sur les "makefile"

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Bonjour,

    Ca ne me parait pas tres complexe...

    Citation Envoyé par AnthoB Voir le message
    Pouvez-vous m'aider à comprendre comment utiliser ce programme?

    Extrait du fichier Readme :
    "
    To compile and run the generated files (which in this example would take the form TrInputDeck.h/.cpp, except in the fourth example), move them to the TrStatement folder and run make TrInputDeck. To compile files generated in numerical mode, NumStaGe.h and NumStaGe.cpp need to be present. In either case, TrStatement and TrMainSt (.h and .cpp) need to be present.
    Deplace les fichiers .h/.cpp dans le repertoire TrStatement
    Va dans ce repertoire
    Tape : make TrInputDeck
    Si tu veux compiler en mode numerique, il faut que les fichiers NumStaGe.h/.cpp soient eux aussi presents dans ce repertoire TrStatement.
    Dans tous les cas, TrStatement et TrMainSt (h et cpp) doivent y etre.

    Citation Envoyé par AnthoB Voir le message
    If the make is successful, the output executable will be TrInputDeck, and can be run using ./TrInputDeck inFile.wav (with other usage parameters output by running ./TrInputDeck with no args).
    Pour executer, tape tout simplement ./TrInputDeck
    Pour lui passer un fichier wav : ./TrInputDeck fichier.wav


    En attendant je me renseigne sur les "makefile"
    Cette phrase m'inquiete... Tu as quel niveau en programmation ? Est-ce que tu ne penses pas que tu devrais d'abord apprendre a programmer avant de chercher a programmer une simulation electronique temps reel ?
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieux du son
    Inscrit en
    Février 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieux du son
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2013
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Merci pour ta traduction gangsoleil. Mais franchement cela ne m'aide pas beaucoup. Je vais essayer de poser des questions plus précises.

    Est-ce que je dois utiliser le logiciel make pour exécuter le makefile, ou je vais simplement dans une console pour taper la ligne?
    Comment déboguer le programme pas à pas en le lançant par des lignes de commandes?

    Sinon pour répondre à ta question, je suis plutôt débutant. J'ai déjà fait pas mal de matlab, aussi écrit quelques scripts pythons pour un logiciel d'analyse audio avancé, et également programmé 2 ou 3 logiciel tierce partie (.dll avec le SDK VST). Mais je n'ai pas fait d'école d'informatique, donc il me manque pas mal de bases... Mais faut bien commencer quelque part!

  4. #4
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Citation Envoyé par AnthoB Voir le message
    Est-ce que je dois utiliser le logiciel make pour exécuter le makefile, ou je vais simplement dans une console pour taper la ligne?
    Comment déboguer le programme pas à pas en le lançant par des lignes de commandes?
    Tu tapes simplement "make TrInputDeck" sans les guillemets dans le bon repertoire.

    Pour le debug pas a pas, je crains que tu ne doives oublier, ca n'a pas l'air vraiment prevu pour...
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieux du son
    Inscrit en
    Février 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieux du son
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2013
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Ok, rien de tout cela ne fonctionne!!! Il n'y a pas de dossier TrStatement, il n'y a pas de fichiers NumStaGe.h/.cpp et il faudrait que je réécrive le fichier makefile car il ne correspond pas du tout à mon environnement!
    Mais...

    Comme j'ai bien réussi à utiliser la première partie du programme pour créer des systèmes d'équations différentielles non-linéaires à partir de la description d'un circuit électronique (contenu dans le .h ainsi créé), je les ai utilisées dans mon script matlab pour simuler le circuit! Et maintenant, les résultats sont bons! (vérifiés avec Spice).

    Reste à réécrire tout ça en c++ pour pouvoir faire du temps réel!
    Affaire presque résolue!

  6. #6
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Citation Envoyé par AnthoB Voir le message
    Reste à réécrire tout ça en c++ pour pouvoir faire du temps réel!
    Puisque tu en parles : le C++ ne permet pas du tout de faire du temps reel dur ; au mieux, tu pourras faire du temps reel faible.

    Pourquoi ?
    Ton programme C++ tourne dans un environnement Linux, qui n'est de base pas du tout temps reel. C'est a dire que si ton OS decide de prendre le CPU pour lui, et de ne pas ordonnancer les processus, il peut le faire. Et s'il se rend compte que ton processus bouffe trop de ressources, il peut decider de lui en retirer.
    Bien sur, tu as un mode pseudo-temps reel qui limite beaucoup ces problemes, mais ce n'est pas du vrai temps reel.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  7. #7
    Membre à l'essai
    Homme Profil pro
    Ingénieux du son
    Inscrit en
    Février 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieux du son
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2013
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Je ne suis pas sur de bien comprendre la distinction.
    Tu veux dire que c'est impossible de faire du "vrai temps-réel" car aucun OS ne le permet?

    En fait, pour ma part c'est plus simple car je crée un logiciel tierce-partie en me servant d'un SDK. Je construit donc une application .dll pour un logiciel hôte, un séquenceur audio-numérique qui communique avec ces .dll.
    Et si mon traitement comporte un retard (fixe), je peux faire de la "compensation de latence".
    Il me suffit d'indiquer la valeur du retard à l'application hôte pour qu'elle envoie les informations plus tôt.

  8. #8
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Bonjour,

    Je simplifie a l'extreme, juste pour l'explication :

    Le temps-reel "dur", ou vrai temps-reel, n'est pas possible avec autre chose que des circuits electroniques : il n'y a pas de temps de transfert des donnees, pas de processus plus prioritaire qui risque de te prendre du temps processeur, ...

    A l'inverse, un processeur n'est qu'un ordonnaceur de taches : il a une file de taches, qu'il execute une par une avec un temps maximal defini (appele quantum, de l'ordre d'une dizaine de millisecondes par exemple). Si la tache n'est pas finie au bout du quantum, elle retourne a la fin de la file, et ainsi de suite.

    Dans le cas du temps-reel sur ordinateur, au lieu de remettre le processus qui vient de s'executer a la fin de la file, tu le remets au debut (enfin sauf dans certains cas). Cela lui assure plus de temps processeur, au risque que d'autres processus n'aient jamais acces au procsseur (on parle de famine).
    Mais si ton processus attend une donnee de la memoire, ou pire du disque-dur, alors il est dans un etat qui n'existe pas dans le vrai temps-reel, et il est remis plus loin dans la file d'attente (depend de l'algorithme utilise par ton OS).

    Mais pour ce que tu veux faire, je pense que le temps-reel d'un ordinateur devrait etre suffisant.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/05/2009, 10h11
  2. Réponses: 2
    Dernier message: 09/02/2009, 16h36
  3. Comprendre un programme Matlab?
    Par nejm59 dans le forum MATLAB
    Réponses: 22
    Dernier message: 12/12/2008, 20h32
  4. Programme international avec IHM multi-langues
    Par calogerogigante dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 26/04/2006, 00h49
  5. [C#] Multi langue - fichier resource.resx
    Par dacamp dans le forum ASP.NET
    Réponses: 5
    Dernier message: 03/06/2004, 16h25

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