Se connecter
Se connecter

ou
Créer un compte

ou
Agrandir
Ajouter ce produit à
  • Mon ancien matos
  • Mon matos actuel
  • Mon futur matos
SynthEdit SynthEdit
Photos
1/72

Réalisez vous même vos modules avec Dev-C++

  • 14 réponses
  • 6 participants
  • 1 333 vues
  • 9 followers
Sujet de la discussion Réalisez vous même vos modules avec Dev-C++
**Il y a un problème d'affichage de l'antislash avec ce forum, remplacez le caractère "/" par un antislash (le même de l'autre côté) dans les chemins proposés.

Aide à couper coller :


Il faut bien débuter, la joie du code libre...

Réalisez vous même vos modules avec Dev-C++

SE va devenir une référence incontournable dans quelques années, notament lorqu'il sera compatible Mac. Les développeurs ont tout intéret à s'initier au C++.
La difficulté principale est d'admettre qu'il n'est pas néccessaire de tout comprendre pour commencer à programmer avec la SDK de SE.

/*****************************************/

http://www.bloodshed.net/dev/devcpp.html

-Installez Dev-C++ 4-9-9-2 avec les options proposées par défaut de l'installeur.

-Téléchargez la SDK de SE sur le site de Synthedit.

http://www.synthedit.com/files/se_sdk2.zip

-Décompresser le contenu du fichier zip dans un répertoire " SE "
à la racine du répertoire du programme Dev-C++ : ** " C:/Dev-Cpp/SE "
,
Il faudra préciser ce chemin dans les paramètres du compilateur :
** " C:/Dev-Cpp/SE/se_sdk2 " .

/*******************************************/

-Ouvrir le programme Dev-C++

-Allez dans le Menu > Option d'Environnement
>Interface
>Choisissez la langue "french"
, (if you want)

!!!!-Allez dans le Menu > Outils
>Option du Compilateur
>Répertoires
>Répertoire c++ .h

!!!! Ajouter ce chemin : ** "C:/Dev-Cpp/SE/se_sdk2".


-Allez dans le Menu > Fichier
>Importer Projet MS Visual C++


-Importez le fichier "se_gain.dsp" (fichier MS Visual C++) qui se trouve normalement dans le répertoire "se_gain_mk2".


/************************************/

-Allez dans le Menu > Projet
>option du projet

Réglage du projet :

1 Général :
type=DLL

2 Fichiers :
Ne rien modifier (+ tard si vous voulez)

3 Compilateur :
Ne rien modifier (+ tard si vous voulez)


4 Paramètres :

Compilateur : (à couper coller)
-D__GNUWIN32__ -W -D_M_IX86=500 -DNDEBUG -D_WINDOWS -DWINDOWS=1 -fexceptions

C++ : (à couper coller)
-D__GNUWIN32__ -W -D_M_IX86=500 -DNDEBUG -D_WINDOWS -DWINDOWS=1 -fexceptions

!!!! Editeur de liens: (à couper coller)
-lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32

Il est important de supprimer la référence "--implib ".release/se_gain.lib" à la fin de la ligne des paramètres de l'éditeur de liens.

!!!! Si vous supprimez ces paramètres vous risquez de ne pas pouvoir compiler votre module !!!

!!! Il est fortement conseillé de garder ces paramètres !

note : -mcpu=pentium est obsolète, le choix de l'optimisation du code se change avec les paramètres du compilateur :
options du projet>
Compilateur>
>Génération du code
>Générer les instructions pour la machine suivante
>Choisissez votre processeur

Pour infos :
paramètres du mode DLL par défaut de Dev-cpp:

Compilateur :
-DBUILDING_DLL=1
C++ :
-DBUILDING_DLL=1
Editeur de liens:
--no-export-all-symbols --add-stdcall-alias


5 Répertoires :

Répertoire d'inclusion : facultatif

Ceci n'est pas obligatoire si le chemin est déjà indiqué dans les options du compilateur.


6 Construction:

Cochez la case : "Changer le nom de fichier de sortie" et remplacez l'extension "exe" par "sem"


7 Makefile :
Ne rien modifier

8 Information de version :
Ne rien modifier (+ tard si vous voulez)

/*******************************/

-Allez dans le Menu > Exécuter
>Compiler



Votre module est compilé ! (...)


/********************************/
Faq :

Si vous travaillez sur un module sans GUI (Graphic User Intreface), supprimez (clique droit) les fichiers " SEGUI*.* " de votre projet
car ils seront compilés pour rien.
ex :
avec =130 ko
sans =56 ko

Vous pouvez aussi supprimer les fichiers *.h (sauf Module.h et GuiModule.h) de votre projet car le programme sait qu'ils
se trouvent dans le répertoire "se_sdk2".

!!!! Ne modifiez que les fichiers : Module.cpp (DSP), Module.h (DSP), GuiModule.cpp (GUI), GuiModule.h (GUI).

Le reste des fichiers *.cpp correspond à la SDK de SE, ils sont dans le répertoire "se_sdk2".
Vous ne pouvez pas supprimer les fichiers *.cpp de votre projet.

La syntaxe du code en assembleur est à modifier pour le module "waveshaper".
Le "scope" peut être compilé sans problème.

Les modules compilés avec Dev-C++ sont de 30 à 400% + rapide que les modules réalisés avec Borland 5.5 ... à tester.

/*****************************/

Pour commencer il suffit de modifier le processus :
"void Module::sub_process(long buffer_offset, long sampleFrames )"
du fichier Module.cpp et de déclarer vos variables dans le fichier Module.h.

void Module::sub_process(long buffer_offset, long sampleFrames )
{
// assign some pointers to your in/output buffers. usually blocks (array) of 96 samples
float *in1 = buffer_offset + input1_buffer;
float *in2 = buffer_offset + input2_buffer;
float *out1 = buffer_offset + output1_buffer;

while(--sampleFrames >= 0) // sampleFrames = how many samples to process (can vary). repeat (loop) that many times
{
float input1 = *in1; // get the sample 'POINTED TO' by in1
float input2 = *in2;

// do the actual processing (multiplying the two input samples together)
float result = input1 * input2;

*out1 = result; // store the result in the output buffer

// increment the pointers (move to next sample in buffers)
in1++;
in2++;
out1++;
}

Pour utiliser les fonctions mathématiques il faut déclarer au début du fichier Module.cpp
l'include "math.h"

#include "math.h"

Le module se_gain_mk2 est un bon exemple pour commencer, il intègre une procédure d'économie de cpu.
Je l'utilise pour mon filtre KX-LPF, si le signal d'entrée est à 0.00 volt, celui-ci se met en veille.


X. Kalensky le 28 04 2006.

KX77FREE.FREE.FR
2
Flaguation (on l´attendait, ce sujet, quelque part...). mais la partie n´est-elle pas déja jouée pour un bac L comme moi ?
3
Salut,

La création de petits modules midi sera sans doute inévitable pour tes futurs plugs...

J'ai commencé à travailler sur des modules midi et finalement cela m'a permis de créer le Kxomni.
Je suis un autodidacte, en math mon niveau est faible et je suis un débutant en programmation mais je sais ce que je veux.
En ce moment je travaille sur un module d'oscillateurs basés sur la synthèse de Fourier (gibbs réglable, synchro, phase etc...).
Cela fonctionne mais je perds beaucoup de temps avec la gestion des données binaires en écriture et en lecture.
Je cherche des infos à ce propos, si vous connaissez bien le sujet n'hésitez pas à me contacter.


Xavier
4
Merci, cela motive ! encore me faudrait-il une vie supplémentaire pour ce chantier...
5
Ah la je flag, merci pour ce petit tuto
Il faut se forcer à se contredire pour éviter de se conformer à son propre goût "Marcel Duchamp" - ma vie modulaire
6

Hors sujet :

Citation : **Il y a un problème d'affichage de l'antislash avec ce forum


Oui, ça fait un moment. Solution de contournement pour que les \ s'affichent, utiliser le code HTML correspondant: #92; précédé du caractère &

De même pour les sources, il existe une balise activant la police à chasse fixe: [ f ] et [ /f ] sans les espaces entre les crochets.
void Module::sub_process(long buffer_offset, long sampleFrames ) 
{
// assign some pointers to your in/output buffers. usually blocks (array) of 96 samples
float *in1 = buffer_offset + input1_buffer;
float *in2 = buffer_offset + input2_buffer;
float *out1 = buffer_offset + output1_buffer;

while(--sampleFrames >= 0) // sampleFrames = how many samples to process (can vary). repeat (loop) that many times
{
float input1 = *in1; // get the sample 'POINTED TO' by in1
float input2 = *in2;

// do the actual processing (multiplying the two input samples together)
float result = input1 * input2;

*out1 = result; // store the result in the output buffer

// increment the pointers (move to next sample in buffers)
in1++;
in2++;
out1++;
}



:mrg:

« What is full of redundancy or formula is predictably boring. What is free of all structure or discipline is randomly boring. In between lies art. » (Wendy Carlos)

7
Salut,

Swoonboy,

Hors sujet : Est-ce que l'on peut sauvgarder des vst indépendants avec réaktor ?




Xavier
8
Hello

Hors sujet : non on ne peux pas, reaktor etant deja un VST, utilisable en stand alone

Il faut se forcer à se contredire pour éviter de se conformer à son propre goût "Marcel Duchamp" - ma vie modulaire
9

Hors sujet :

Citation : Est-ce que l'on peut sauvgarder des vst indépendants avec réaktor ?


tu penses faire des infidélités à synthEdit?

10
Salut,

Non, maintenant que je commence à récolter les fruits de ma curiosité, c'est à dire la possibilité de faire mes propres modules en C++.
Concernant mon module de création d'onde en additif, j'ai réussi à émuler les formes d'un synthé analogique en quelques cliques de souris.
Avec Réaktor ou max je serai dépendant des autres développeurs.

a+

Xavier