Comment utiliser les AUGraph dans les AudioUnit component?
Herve
Membre
Bonjour,
Je commence à comprendre comment fonctionnent Core Audio et Audio Unit. J'arrive à modifier les Audio Component de base, y ajouter des paramètres, y modifier les calculs, etc. Je viens de faire un petit synthé en synthèse additive par exemple ...
J'ai vu aussi que Core Audio avait des méthodes de traitement de fichiers sonores similaires aux filtres de Core Image sans doute. Je parle de ceci :
http://developer.apple.com/library/mac/#documentation/MusicAudio/Conceptual/CoreAudioOverview/SystemAudioUnits/SystemAudioUnits.html#//apple_ref/doc/uid/TP40003577-CH8-SW2
on a évidemment envie d'essayer ces effets très performants dans son plug in.
J'ai compris qu'il fallait créer un AUGraph pour les mettre dedans, mais comment intégrer les calculs de mon plug dans cet AUGraph? Il faudrait que ma méthode de génération sonore soit un AudioUnit aussi, non?
J'ai vu des exemples d'association de modules (AUTimePitchTest par exemple), mais ce sont des applications Cocoa, pas des plug in.
Sauriez-vous m'aiguiller sur la bonne voix?
Je trouve la doc des classes AU franchement peu fournie, bien moins claire que celle des classes NS. A part un long tutoriel (très bien, mais qui donne peu de détails sur les méthodes de classe) et quelques feuillets, cela a l'air pauvre...
Mon idée est qu'il faudrait que mes calculs soient une méthode de classe, mais les effets qui me font envie en sont-ils? Je ne trouve pas non plus comment les paramétrer: aucune doc par exemple sur ce qu'ils prennent comme argument.
Merci d'avance...
Je commence à comprendre comment fonctionnent Core Audio et Audio Unit. J'arrive à modifier les Audio Component de base, y ajouter des paramètres, y modifier les calculs, etc. Je viens de faire un petit synthé en synthèse additive par exemple ...
J'ai vu aussi que Core Audio avait des méthodes de traitement de fichiers sonores similaires aux filtres de Core Image sans doute. Je parle de ceci :
http://developer.apple.com/library/mac/#documentation/MusicAudio/Conceptual/CoreAudioOverview/SystemAudioUnits/SystemAudioUnits.html#//apple_ref/doc/uid/TP40003577-CH8-SW2
on a évidemment envie d'essayer ces effets très performants dans son plug in.
J'ai compris qu'il fallait créer un AUGraph pour les mettre dedans, mais comment intégrer les calculs de mon plug dans cet AUGraph? Il faudrait que ma méthode de génération sonore soit un AudioUnit aussi, non?
J'ai vu des exemples d'association de modules (AUTimePitchTest par exemple), mais ce sont des applications Cocoa, pas des plug in.
Sauriez-vous m'aiguiller sur la bonne voix?
Je trouve la doc des classes AU franchement peu fournie, bien moins claire que celle des classes NS. A part un long tutoriel (très bien, mais qui donne peu de détails sur les méthodes de classe) et quelques feuillets, cela a l'air pauvre...
Mon idée est qu'il faudrait que mes calculs soient une méthode de classe, mais les effets qui me font envie en sont-ils? Je ne trouve pas non plus comment les paramétrer: aucune doc par exemple sur ce qu'ils prennent comme argument.
Merci d'avance...
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Bonjour à toi,
Malheureusement je ne pourrais pas t'aider pour ton problème spécifique mais, sait on jamais, je me permets de te rappeler les "headers" des "frameworks". Les fichiers d'entête comme AudioUnitProperties.h et quelques uns de ses camarades de la librairie AudioUnit.framework ont beaucoup de commentaires où sont expliqué un peu plus en détail les méthodes et fonctions ( +/- arguments ) rencontrées. C'est un peu pareil avec ICA_Application pour les scanners..
Pour les consulter soit tu fais "Open Quickly..." du menu Fichier d'Xcode, soit tu déplies les triangles du répertoire Frameworks de ton projet (la colonne de gauche) pour arriver à ceux qui t'intéressent particulièrement puis tu cliques sur un de ceux là pour l'afficher dans l'éditeur.
etc ... etc ...
hth
Je manque aussi de bases en C++. Il y a des signes comme :
->
ex : Globals () -> UseIndexedParameters (kNumberOfParameters);
que je ne comprends pas. Ce doit être une forme d'incrémentation comme une boucle "for".
La fonction :
enum comme dans : enum {
kParameter_Frequency = 0,
(...)
};
semble être une fonction d'assignation et d'incrémentation à la fois. Elle est liée à " -> " d'ailleurs.
Bon, je vais voir ce que je trouve et comprends.
A mon avis, soit je fais des fonctions comme une dans le tutoriel "TremoloUnit" qui crée le LFO à part du "process", et je les fais travailler ensemble, soit j'assemble des AU comme dans un modulaire "classique". Mais là ...
Merci encore laudema.
ça il me semble qu'en C ça signifie un pointeur sur une structure, on le retrouve chez nous aussi
Glurps !!!!
Cette ligne a pour effet d'appeler la méthode UseIndexedParameters sur l'objet retourné "par adresse" (parce qu'en C++ un objet n'est pas toujours représenté par un pointeur, il peut être passé "par valeur" ou "par référence") par la fonction Globals().
Ceci dit, l'opérateur "->" existe également en C (et donc en Objective C) même si son utilisation est étendue en C++ pour l'appel de méthodes.
Re Glurps !!!
enum n'est pas une fonction... enum sert à définir des constantes (des enumeration) typées. D'ailleurs ca existe aussi en C et en Objective C, hein...
Non, pas spécialement
Il faudrait se former plutôt que d'avancer à l'aveugle droit dans le mur...
Il y en a bien d'autres dont des plus globaux Tout dépend de ton niveau...
Oui, sauf que c'est en forgeant que l'on devient forgeron, et c'est en "fonçant dans le mur" que j'ai pu apprendre le Java et l'Objectiv C. Je perds un temps fou au début à solutionner les problèmes, mais après, je sais. J'ai un peu plus de 40 ans, quand j'étais étudiant, c'était le Basic et le Pascal. (si si!) J'ai appris seul les langages orienté objet.
Les forums comme celui-ci sont d'ailleurs précieux pour y voir plus clair.
(pardon pour mon vocabulaire parfois, je viens de la musique électronique et du synthé modulaire...)