Se connecter
Se connecter

ou
Créer un compte

ou
FR
EN
Autres logiciels multimédias

By Popular Demand . the JUCE thread

  • 72 réponses
  • 7 participants
  • 1 644 vues
  • 3 followers
Sujet de la discussion By Popular Demand . the JUCE thread
Voilà, pour toutes les discussions JUCE en français, c'est ici que ça se passe.
Bienvenue à tous ;)

Et pour les ceusses qui ne savent pas ce qu'est JUCE ... http://www.rawmaterialsoftware.com/juce/

Piaz

Afficher le sujet de la discussion
51
Non, il faut que tu delete un objet si tu en as plus besoin. Il faut que tu gères correctement la vie d'un objet, que tu saches quand tu le crées, quand tu l'utilises et quand il doit mourir - pour être remplacé par un autre par exemple.
Faire des delete à tout va ne va faire qu'une seule chose : planter ton programme si tu delete qqch qui n'existe pas.
52
Wolfen > on peut voir le code source ? J'ai du mal avec les tabs...
Ah oui, sans rien faire, juste en changeant les tabs, ça plante à la sortie.
53
En fait ça va j'ai fait un peu de ménage, j'ai mis des delete pour tous mes objets "locaux" (déclarés uniquement pour une fonction ou une procédure) et maintenant j'ai pas encore réussi à le refaire planter, et ça s'est arrêté de bouffer du swap de windows :bravo: Faut juste que je refasse des tests sous XP et que j'allège les procédures d'animation, je me suis rendu compte que ça surcharge "un peu" le CPU toutes mes boules de Noël (genre du... 50% sur P4 2000) :ptdr:

Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud

54
Et le lien pour les sources ? - GPL power :demon: -
A moins que tu m'expliques vite fait comment tu fais pour les tabs, parce que j'arrive pas à ne pas faire planter le truc...

Ah oui, plus tu charges l'interface graphique, plus tu as de puissance CPU consommée, surtout quand tu fais ça pas trop proprement !
55
Non j'ai pas envie de lâcher les sources :ptdr:

En fait je crois que t'as le même problème que moi avec les tabs (donc tu t'es lancé :bravo: ), au début j'avais essayé de suivre la logique de base, c'est-à-dire de créer un Component qui contient les tabs et de charger ce Component en principal dans la classe DialogWindow du projet... Quand j'ai chargé carrément la tab directement avec l'instruction "setContentComponent (new TabbedComponentWindow() , false)", ça allait beaucoup mieux :bravo:

Si ton problème c'est pas ça, je te filerai une partie de mon code :clin: D'ailleurs j'en suis à 133 Ko au format texte de code tapé à la main :oo:

Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud

56
...
En fait, le pb que j'ai, c'est à l'initialisation du TabbedComponent, si je lui ajoutes un tab basique - il est vrai que je fais l'inclusion dans le dialogwindow du tabbed directement à sa déclaration, mais ça devrait marcher pourtant. -
Je testerai demain.

T'es au courant que ton code est sous GPL, au fait ?
57

Citation : T'es au courant que ton code est sous GPL, au fait ?



Oui plus ou moins, étant donné que je dois acheter une license de Juce pour pouvoir en faire ce que je veux... Mais en même temps, quand ça sera fini, moi je veux juste mettre mon soft en freeware, je veux pas lâcher mon code source :clin:

Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud

58
Ben à moins que tu achètes une licence à Jules...
Je ne vois pas où est le problème du source. Je suis en train de créer un spectrogramme depuis des mois, mais ça ne me dérange pas que les gens aient le code source qui va avec. De même pour mon futur plug-in qui interfacera les plug-ins de Winamp ou mon programme permettant d'enregistrer audio et vidéo en même temps et de générer un flux vidéo. Je pourrai même faire payer ces plug-ins tout en respectant la GPL.
Et d'après les termes de la GPL, n'importe qui peut te demander le source de la version que tu as mise en téléchargement dans ce topic... Tu peux aussi faire payer le plug-in, mais si un acheteur veut voir le code source, tu dois le lui donner... Le code source peut aussi être vendu, mais à un prix inférieur ou égal à celui du binaire - sauf si le gars a déjà le binaire, naturellement -.

J'ai regardé ce que je fait, et je ne comprend pas ce qui ce passe :
- je crée un DialogWindow - d'ailleurs, il n'y a pas l'air d'exister une fenêtre qui peut être maximisée ??? -
- je crée un TabbedComponent hérité - si je prend la version de base, il me sort qu'il manque une fonction qui est en virtual :| -
- je crée un Tabbed machinchoseBasicTruc, et dès que je l'ajoute au TabbedComponent - avec un addTab -, ça plante - j'ai débuggé le code, ça plante sur un dynamic_cast vers le component parent... -
J'ai dû zapper un truc...
59
Bon pour le code, voilà ce que j'ai fait :

Citation : //==============================================================================
// Classe des onglets
//==============================================================================
class TabbedComponentWindow : public TabbedComponent

{
public:
MainPanel* mainPanelTab ;
SettingsPanel* settingsPanelTab;
BlocPanel* blocPanelTab;
SkinPanel* skinPanelTab;
PatternsPanel* patternsPanelTab;

TabbedComponentWindow()
:TabbedComponent(String::empty)
{

SettingsFiles::loadSettings();

// Ajout des onglets
TabbedComponentBasicTab *t;
t = new TabbedComponentBasicTab(Lang::msg(language, 8));
t->setSize(100,t->getHeight());
addTab (0, t);
t = new TabbedComponentBasicTab(Lang::msg(language, 9));
t->setSize(100,t->getHeight());
addTab (1, t);
t = new TabbedComponentBasicTab(Lang::msg(language, 10));
t->setSize(100,t->getHeight());
addTab (2, t);
t = new TabbedComponentBasicTab(Lang::msg(language, 11));
t->setSize(100,t->getHeight());
addTab (3, t);
t = new TabbedComponentBasicTab(Lang::msg(language, 12));
t->setSize(100,t->getHeight());
addTab (4, t);

//setColours (Colours::blanchedalmond, Colours::black,
// Colours::grey, Colours::grey, Colours::blanchedalmond);
setColours (Colours::transparentWhite, Colours::black,
Colours::grey, Colours::grey, Colours::transparentWhite);
setVisible(true);
setTabOrientation (TabbedComponent::TabsAtTop, 15, 5, 5 );
setCurrentlySelectedTab(0);

// Initialisation des panels
mainPanelTab = new MainPanel();
settingsPanelTab = new SettingsPanel();
blocPanelTab = new BlocPanel();
skinPanelTab = new SkinPanel();
patternsPanelTab = new PatternsPanel();

setContentComponent(mainPanelTab);

}

~TabbedComponentWindow()
{
delete mainPanelTab;
delete settingsPanelTab;
delete patternsPanelTab;
delete blocPanelTab;
delete skinPanelTab;
}

void tabWasClicked (int newSelectedIndex,
bool clickedTabWasAlreadySelected, const ModifierKeys ¤tModifiers)
{
if (newSelectedIndex == 0)
setContentComponent(mainPanelTab);
if (newSelectedIndex == 1)
{ setContentComponent(settingsPanelTab);
if ( ! settingsPanelTab->isInit)
settingsPanelTab->startTimer(100);
}
if (newSelectedIndex == 2)
setContentComponent(patternsPanelTab);
if (newSelectedIndex == 3)
setContentComponent(blocPanelTab);
if (newSelectedIndex == 4)
{ setContentComponent(skinPanelTab);
skinPanelTab->comboAnim->setSelectedId (colourAlpha);
skinPanelTab->comboSelection->setSelectedId (colourSel);
}
}
};





//==============================================================================
// Classe de la fenêtre principale
//==============================================================================
ApplicationMainWindow::ApplicationMainWindow()
:DialogWindow ("Groove Generator for Tracktion", Colours::white, false)
{
setVisible (true);
setResizeable (false);
language = 0;

setContentComponent (new TabbedComponentWindow() , false);


}

ApplicationMainWindow::~ApplicationMainWindow()
{
JUCEApplication::quit();
}



void ApplicationMainWindow::paint (Graphics& g)
{
DialogWindow::paint(g);

}



Ben après pour le partage de la source, c'est juste une question de principe, j'aurai l'impression qu'on ne respecte pas mon travail si on peut y mettre les doigts ou qu'on pourrait le pirater, même si j'en rajoute un peu, sachant que de toutes façons je mettrai mon soft en freeware quand il sera fini... :noidea: J'arrive pas à accepter qu'on puisse me le demander obligatoirement... C'est quand même un truc sur lequel j'aurai passé du temps...

Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud

60
Ca m'énerve, j'ai presque fait comme toi, mais là où ça plante, c'est la même chose... Ca plante sur mon addTab... Comprend pas... Vais réfléchir plus tard.

Citation : Ben après pour le partage de la source, c'est juste une question de principe, j'aurai l'impression qu'on ne respecte pas mon travail si on peut y mettre les doigts ou qu'on pourrait le pirater, même si j'en rajoute un peu, sachant que de toutes façons je mettrai mon soft en freeware quand il sera fini... J'arrive pas à accepter qu'on puisse me le demander obligatoirement... C'est quand même un truc sur lequel j'aurai passé du temps...


C'est la même chose pour ceux qui ont fait la librairie que tu utilises...
Mais il ne faut pas voir la GPL comme une cession de tes droits. J'ai écrit du code GPL, mais je n'ai jamais eu de problème par rapport aux gens. Certains vont vouloir en abuser, mais ils sont rares.

Bon, n'empêche que je ne comprend pas pourquoi ça ne marche pas... Je soupçonne de plus en plus un problème de compilo :|
61
Un autre truc qui me saoûle chez JUCE : tout est ensemble. J'ai envie d'envoyer bouler la partie graphique et de prendre Qt, mais je ne veut pas compiler JUCE en entier... Faut que je coupe cette librairie - très très mal documentée, d'ailleurs... -
62

Citation : très très mal documentée, d'ailleurs...


Ca c'est clair :| Mais normalement Jules devrais se remettre au boulot... Et puis sur le forum de Juce entre autres (www.adbe.org/juceforum/) y a plein de sources à télécharger, dont une démo faite par Jules avec des exemples de codes pour la plupart des classes...

Citation : je ne veut pas compiler JUCE en entier...


Ca c'est faisable, en compilant juste les librairies qui t'intéressent, en bidouillant le juce.h

Citation : Mais il ne faut pas voir la GPL comme une cession de tes droits. J'ai écrit du code GPL, mais je n'ai jamais eu de problème par rapport aux gens. Certains vont vouloir en abuser, mais ils sont rares.


Ca je sais de toutes façons, donc je me prends pas la tête avec tout ça :clin:

Citation : Bon, n'empêche que je ne comprend pas pourquoi ça ne marche pas... Je soupçonne de plus en plus un problème de compilo


Ca c'est que je me disais à chaque fois que j'avais un gros problème... environ 400 fois depuis que je me suis lancé :mdr: Si tu veux tu peux poster ton code, ptet que je trouverai la connerie :clin:

Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud

63
OK, je poste ça demain soir - c'est sur un autre PC qui est éteint maintenant...
64
Bon j'espère que t'es pas trop pressé sur le thread de Juce :diable: En tout cas ça sera plus simple si tu lâches ton code :clin:

Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud

65
Oui, je vais le laisser - je travaille sur mon portable pour ça et il n'est traditionnellement pas connecté à Internet, c'est mon frère qui utilise la carte wifi -
66
Le code est dispo sur Internet.
MAis comme dit, dès que Qt sort, je passe sous Qt et je ne garde que la partie audio de JUCE...
67
J'ai essayé ta source, et en effet ... ca marche pas :(

Je vais essayé de mon coté pour voir si je voit queque chose

@+
68
Ca compile pas non plus chez toi ?
Tu utilises aussi .NET2003 ?
69
J'ai trouvé :8)

J'ai été dans les options de propriété de compilation et il faut mettre à "oui" au paramètre "Activation des informations de type au moment de l'éxécution" (option "/GR" de la compil) qui se trouve dans "Propriété de configuration" -> "C/C++" -> "Langue", c'est le dernier

dit moi si ca marche chez toi :bravo:
70
Effectiement, ça marche... Trop nul le gars :| J'aurai dû y penser...
Mais quand on débute avec les RTTI et la STL, ça fait très mal !!

Merci !!!!!
71
De rien, maintenant j'ai un exemple de comment faire des onglets ;)
72
:bravo:

Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud

73
20 ans plus tard, on ne peut pas dire que l'environnement Juce a fait des émules sur AudioFanzine ? C'est trop difficile peut-être ?