Traduction de Sdk en Delphi [Résolu]

- - Dernière réponse : Boubra
Messages postés
1
Date d'inscription
lundi 7 juillet 2008
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
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
3982
Date d'inscription
mardi 8 mars 2005
Dernière intervention
7 novembre 2014
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

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de cs_rt15
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
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
Commenter la réponse de f0xi
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
0
Merci
Allez Nico : C'est le moment de grace de Bass
Commenter la réponse de Utilisateur anonyme
0
Merci
Merci vraiment beaucoup
Commenter la réponse de Utilisateur anonyme
Messages postés
1
Date d'inscription
lundi 7 juillet 2008
Dernière intervention
7 juillet 2008
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.