Traduction de Sdk en Delphi [Résolu]

Utilisateur anonyme - 3 févr. 2008 à 21:29 - Dernière réponse : Boubra 1 Messages postés lundi 7 juillet 2008Date d'inscription 7 juillet 2008 Dernière intervention
- 7 juil. 2008 à 04:23
Salut la compagnie

Pour un de mes softs, j'ai besoin d'utiliser la technologie Asio, Vst et SoundFont (Rien que ca ). Après avoir pas mal lutter pour trouver des infos sur le sujet, j'ai trouvé des Sdk

Asio

SoundFont

Le problème c'est que c'est écrit en C.

Je vais pas aller jusqu' demander qu'une ame charitable (Genre RT15 ) me les traduise mais bon moi et le C on est pas tres bon amis . Ma question est la suivante : Suis je obligé de traduire tout les fichiers en delphi ou seul les headers sont suffisants.

Merci

A++

Ps : il y a deja une Sdk Asio en delphi mais elle n'est pas à jour
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 4 févr. 2008 à 17:30
3
Merci
L'âme charitable te salut !



Pour asio, le peu que j'ai cherché, je n'ai trouvé ni vraiment de source, ni de lib nécessaire...



Le "driver" n'en ai pas un une seconde. De ce que j'ai pu en voire,
c'est une bête dll COM tout ce qu'il y a de plus classique : les trois
quart du code sont pour la registration et la gestion des interfaces
IUnknown etc...


(Pour reconnaître un vrai driver, c'est facile : le code est aussi illisible qu'un code de BruNews)


C'est tout à fait faisable en Delphi, mais vaut mieux se bouffer un
tuto sur COM avant, il me semble que Delphi doit pas mal aider pour la
gestion des détails concernant COM.


Pour ce qui est de SoundFound...


Dans SFMan1Edt.doc, paragraphe 3.1.1.2, ils parlent de compilation.


J'avoue avoir du mal avec leurs explication.


A les entendre, la dll sfedt32.dll exporte une tables de fonctions
(SFEdit), et on accède à ces fonctions par une unique fonction
(SF_QueryInterface).


Pourtant, dans les faits, sfedt32.dll exporte une liste de fonction, mais pas SF_QueryInterface...


Sinon, c'est une bonne nouvelle : ce n'est pas une librairie statique, et il n'y a pas de .lib.

Donc traduire les headers devrait suffire.


Il y a plusieurs headers, mais ils semblent tous avoir ce fonctionnement bizarre de tables.


Prenons SFEDT32.H.


Il propose deux enregistrements contenant des pointeurs sur des fonctions.

Le premier enregistrement (SFEDIT) contient SF_QueryInterface, le
deuxième (SFEDITAPI_100) contient les fonctions utiles pour la version
1.0.0.


Les fonctions utiles sont celles exportées par la dll sfedt32.dll soit dit en passant.

Donc bon, si tu veux pas t'embêter avec leur système de versionning, tu
peux oublier SF_QueryInterface et importer normalement...


Mais faisont ça bien, et voyons comment ils utilisent ça.


examples\EditEng\sample1\Source


Incroyable : ca compile.

Pas de truc bizarre dans les options du projet genre une lib louche en entrée du lieur.


Dans sfviewer.cpp, méthode InitEditEngine, on trouve en gros :


m_hSFEDTDLL = LoadLibrary ("sfedt32.dll")

m_pSFEDIT = (PSFEDIT)GetProcAddress(m_hSFEDTDLL, "SFEditEngine");


SFEditEngine est bien exportée par la dll.

SFEDIT est l'enregistrement dont j'ai déjà parlé.


Donc en gros on a récupéré l'adresse de la fonction SFEditEngine, mais eux ils préfèrent l'appeler SF_QueryInterface.

Et ils préfèrent dire qu'ils ne récupère non pas l'adresse de la fonction, mais une structure contenant cette adresse.

Libre à eux.


Puis ils appellent cette SFEditEngine/SF_QueryInterface en lui passant
la version souhaitée, et l'adresse d'un enregistrement de type
SFEDITAPI_100.

La fonction doit remplir cet enregistrement (Probablement avec une bête série de GetProcAddress).


On peut ensuite accèder aux fonctions du moteur via cette enregistrement.


Voilou voilou. La traduction de ces headers ne devrait pas te poser de problèmes.

Attention aux alignements (pragma pack) aux conventions (cdecl), et ça devrait rouler.

Merci cs_rt15 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 85 internautes ce mois-ci

Commenter la réponse de cs_rt15
Utilisateur anonyme - 3 févr. 2008 à 22:34
0
Merci
Petite rectification : la partie Asio on s'en fout . En fait on doit pouvoir faire un driver  asio universel via cette Sdk (D'ou ma question) mais cela n'est pas possible en Delphi (Pas grave je me le ferai en C : j'en frissone déjà ).

Par contre pour la SounfFont ca va etre chaud : 12 Mo la Sdk : Bonjour la traduction .
Commenter la réponse de Utilisateur anonyme
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 4 févr. 2008 à 07:14
Commenter la réponse de f0xi
Utilisateur anonyme - 4 févr. 2008 à 08:17
0
Merci
Oui j'avais vu f0xi mais comme je le disais je voulais me tourner vers les Sdk officielles car pour la Sdk Asio en Delphi pas de driver possible (Mais bon à priori le probleme n'est pas surmontable) et pour la partie Vst ils indiquent pas comment incorporer des plugins Vst dans un soft mais juste un outil (Sdk) pour faire des plugins.

Par contre pour la partie SoundFont je ne sais pas si juste le header doit etre traduit.

A++ et merci
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 4 févr. 2008 à 09:40
0
Merci
Allez Nico : C'est le moment de grace de Bass
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 5 févr. 2008 à 08:10
0
Merci
Merci vraiment beaucoup
Commenter la réponse de Utilisateur anonyme
Boubra 1 Messages postés lundi 7 juillet 2008Date d'inscription 7 juillet 2008 Dernière intervention - 7 juil. 2008 à 04:23
0
Merci
Pour hoster les vsts , il y a un exemple dans le pack delphi asio disponible ici :
[url]http://sourceforge.net/projects/delphiasiovst//url , qui s'appelle minihost 'core'.
Commenter la réponse de Boubra

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.