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

Bibliothèques Discussion :

VstI, les fonctions minimums


Sujet :

Bibliothèques

  1. #1
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut VstI, les fonctions minimums
    Je me réintéresse (enfin) au sujet.

    Je sais qu'il y a quelques amateurs sur ce forum.

    Donc je cherche à faire un vst instrument, le plus petit possible, implémentant le minimum requis. Je n'arrive pas à trouver de la doc décrivant le minimum à faire pour que ça marche.

    Voilà ce que j'ai, apparemment ça ne suffit pas, j'ai une erreur au chargement dans fruityloops :

    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
    // Synth2.h
     
    #ifndef SYNTH2
    #define SYNTH2
     
    #include "public.sdk/source/vst2.x/audioeffectx.h"
     
    class Synth2 : public AudioEffectX
    {
      //------------------------------------ Standard Services ------------------------------------
    public:
       Synth2( audioMasterCallback audioMaster );
      ~Synth2();
     
      //------------------------------------ Virtual Services ------------------------------------
    public:
      // Main sound processing callback
      virtual void processReplacing( float** inputs, float** outputs, VstInt32 sampleFrames );
    };
     
    #endif // define SYNTH2
    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
    // Synth2.cpp
     
    #include "Synth2.h"
    #include <cstdlib>
    #include <ctime>
    #include <algorithm>
     
     
    struct GenNormRandNum
    {
      float operator() ()
      {
        return ( float( std::rand() ) / RAND_MAX ) * 2 - 1;
      }
    };
     
     
    Synth2::Synth2( audioMasterCallback audioMaster )
     : AudioEffectX( audioMaster, 0, 0 )
    {
      // initialize programs
      if (audioMaster)
      {
        setNumInputs (0);       // no inputs
        setNumOutputs ( 2 );    // 2 outputs, 1 for each oscillator
        canProcessReplacing ();
        isSynth ();
        setUniqueID ('Syn2');  // <<<! *must* change this!!!!
        std::srand( std::time( NULL ) );
      }
    }
     
     
    Synth2::~Synth2()
    {
    }
     
     
    void
    Synth2::processReplacing( float **inputs, float **outputs, VstInt32 sampleFrames )
    {
      float* out1 = outputs[0];
      float* out2 = outputs[1];
     
      std::generate_n( out1, sampleFrames, GenNormRandNum() );
      std::copy( out1, out1 + sampleFrames, out2 );
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // main.cpp
     
    #include "Synth2.h"
     
     
    AudioEffect*
    createEffectInstance( audioMasterCallback audioMaster )
    {
      return new Synth2( audioMaster );
    }
    J'ai du oublié qqc mais quoi ? merci

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Ca as l'air sympa comme truc.
    es que ca peut marcher avec des logiciel libre??

    sinon
    http://www.stromcode.com/wiki/index....s/VST_Tutorial

    et peut etre ici
    http://gforge.public.thoughtworks.org/projects/noise/

  3. #3
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    Ouais c'est extra le sound design, mais ça m'a donné envie de faire mon propre implémentation de synthé.

    Merci pour les liens, même si je connaissait déjà les deux.

    En fait, j'arrive à compiler l'example d'instrument du vst_sdk dans leur projet mais si je fais nouveau projet et que j'ajoute fichiers et ressources à la main, ma DLL générée n'est plus reconnue par fruity. Pourtant je vois aucune différence dans aucun des onglets des options de Visual...

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    rapidement , ce que tu fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // main.cpp
     
    #include "Synth2.h"
     
     
    AudioEffect*
    createEffectInstance( audioMasterCallback audioMaster )
    {
      return new Synth2( audioMaster );
    }
    ce que fait le tuto

    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
    AEffect* main (audioMasterCallback audioMaster)
    {
    	// Get VST Version
    	if (!audioMaster (0, audioMasterVersion, 0, 0, 0, 0))
    		return 0;  // old version
    	// Create the AudioEffect
    	AMute* effect = new AMute (audioMaster);
    	if (!effect)
    		return 0;
    	// Check if no problem in constructor of AMute
    	if (oome)
    	{
    		delete effect;
    		return 0;
    	}
    	return effect->getAeffect ();
    }
    le main est peut etre important?

  5. #5
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    Hum, le tuto n'était pas allé jusqu'aux instruments, il en était resté aux effets.

    Donc l'example que tu cites doit-être juste pour les effets (je confirmerai chez moi en regardant les autres examples que j'ai).

    Par contre je vois un .def que je n'ai pas repris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    LIBRARY			GAIN
    DESCRIPTION		'Gain Plugin for VstPC'
    EXPORTS			main
    Est-ce un type de fichier qui se compile dans une DLL ? Cela pourrait venir de la mon erreur.

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par NiamorH Voir le message
    Hum, le tuto n'était pas allé jusqu'aux instruments, il en était resté aux effets.

    Donc l'example que tu cites doit-être juste pour les effets (je confirmerai chez moi en regardant les autres examples que j'ai).

    Par contre je vois un .def que je n'ai pas repris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    LIBRARY			GAIN
    DESCRIPTION		'Gain Plugin for VstPC'
    EXPORTS			main
    Est-ce un type de fichier qui se compile dans une DLL ? Cela pourrait venir de la mon erreur.
    Possible. Comme c'est une dll. Ce fichier donne les méthodes fournie par la dll.
    Il est fort probable que lorsque cette dll est chargé, le logiciel recherche un main ou autre methode exporté dedans.

  7. #7
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    Ben ouais je suis a peu près certain que mon problème vient de là. A priori on m'a dit que les .def était un moyen (plus vraiment utilisé) d'exporter des fonctions...
    Donc si c'est le moyen a utiliser et que je l'utilise pas... J'infirme ou je confirme ce soir.

  8. #8
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par NiamorH Voir le message
    Ben ouais je suis a peu près certain que mon problème vient de là. A priori on m'a dit que les .def était un moyen (plus vraiment utilisé) d'exporter des fonctions...
    Donc si c'est le moyen a utiliser et que je l'utilise pas... J'infirme ou je confirme ce soir.
    Normalement tu peut faire pareil en ajoutant export dans le code

  9. #9
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    J'ai rajouté un .def à mon projet, dans les option du linker -> Inputs -> Module definition file

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // Synth2.def
     
    EXPORTS
    	VSTPluginMain
    	main=VSTPluginMain
    ça s'importe maintenant bien dans l'appli.

    Donc c'était bien la fonction main qui manquait.

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

Discussions similaires

  1. doc sur les fonctions
    Par masterfab dans le forum C
    Réponses: 18
    Dernier message: 23/06/2005, 17h55
  2. Pourquoi une seule valeur de retour pour les fonctions ?
    Par Bruno75 dans le forum Langages de programmation
    Réponses: 33
    Dernier message: 18/01/2004, 13h58
  3. Réponses: 11
    Dernier message: 22/12/2003, 21h06
  4. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04
  5. Réponses: 7
    Dernier message: 24/05/2003, 15h56

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