Traduction de Sdk en Delphi

Résolu
Utilisateur anonyme - 3 févr. 2008 à 21:29
Boubra Messages postés 1 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 7 juillet 2008 - 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

7 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
4 févr. 2008 à 17:30
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.
3
Utilisateur anonyme
3 févr. 2008 à 22:34
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 .
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
4 févr. 2008 à 07:14
0
Utilisateur anonyme
4 févr. 2008 à 08:17
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
4 févr. 2008 à 09:40
Allez Nico : C'est le moment de grace de Bass
0
Utilisateur anonyme
5 févr. 2008 à 08:10
Merci vraiment beaucoup
0
Boubra Messages postés 1 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 7 juillet 2008
7 juil. 2008 à 04:23
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'.
0
Rejoignez-nous