Bonjour à vous,
J'en ai marre de tourner en rond, voici mon premier post !
Max et un modem 56k se comprennent plutôt bien via l'objet serial en mode data.
Par contre en mode voice c'est la panique, je ne parviens pas à lui envoyer du son (il me demande du PCM 8 bits 8000hertz, ce que je lui fournis volontiers), ni à interpréter celui qu'il m'envoie en mode record...
Quelqu'un s'est déjà amusé avec ce genre de trucs ?
Ce doit être une histoire d'interprétation de l'ascii mais là je sèche.
Merci !
Hors ligne
Bonjour.
Les données du modem sont scalaires. Celles de l'audio, vectorielles. Est-ce qu'il ne manquerait pas une étape? Pour recevoir les données du modem, tu peux les peeker~ dans un buffer (aprés mise à l'échelle) puis les groover~ à la bonne vitesse pour tenir compte de la différence des fréquences d'échantillonnage. Dans le sens inverse, c'est record~ suivi de peek~ à la cadence du modem (il faudra respecter son contrôle de flux) et cadrage sur 8 bits. Tout ça pour un fonctionnement par blocs (le buffer contient l'intégralité de l'audio). Pour un fonctionnement temps-réel (durée illimitée), ça risque d'être une autre paire de manches.
Est-ce que cela répond à la question?
Hors ligne
Merci beaucoup Mister Bernier, vous m'avez mis sur la bonne voi(x)e !
Pour résumer nos échanges sur cycling74, le modem envoie (et attend) des bytes (0-255) avec un silence à 127-128. Il suffit alors de scaler en -1 1, créer l'enveloppe avec l'objet peek~ en se calant à 8000Hz. Faire le chemin inverse pour la trasmission (metro à 0.125).
Avec un chipset conexant, on serait apparemment à l'abri d'embouteillages de flux.
Pour tout ce qui est paramétrage du modem, voici ma bible depuis ces 15 derniers jours :
http://en.wikipedia.org/wiki/Voice_modem_command_set
Il y a aussi un très bon pdf qui traine jenesaisplusoù sur les "AT commands".
Spéciale dédicace à jyber !
A la bonne heure !
Hors ligne
On continue ici?
Pour se "caler sur 8000", il faut sur-échantillonner. On a deux solutions: écrire 6 fois le même échantillon dans le buffer (supposant le à 8000 et le DSP à 48000) ou groover~ à vitesse 1/6. La seconde solution est plus souple et permet les rapports non entiers. Ca, c'est pour la réception.
metro à 0.125, à mon avis ça va pas être fiable. Chez moi, il loupe des ticks en-dessous de la millisesonde. De toutes façons il y a un autre problème: serial est limité à 38400 bauds. L'audio ne peut pas être transférée en temps-réel, ni dans un sens ni dans l'autre. Pour ça, il faudrait du 115200 bauds (source Wikipedia).
Allo Houston?
Bon, je loopback un USA-28X et je regarde ce qui se passe.
Hors ligne
Hey.
Je ne comprends pas bien le problème de sur-échantillonnage. J'échantillonne la lecture (en émission) et l'écriture (en réception) directement sur l'objet peek~ et ça passe tout seul. DSP à 48000, fichier lu en PCM 8 bits 8kHz.
Je n'ai pas l'impression que l'objet serial soit limité (Max 5). Dans le référentiel : "any value is allowable (...) some common rates are 300, (...) 38400 and 57600." Je le pousse à 115200 et il ne semble pas s'en inquiéter.
5 sur 5.
Hors ligne
Autant pour moi. Je me suis laissé induire par le help. La doc dit effectivement "any integer rate is valid" et c'est probablement juste limité par le matériel. Je suis aussi monté en 115200, sous Max 4. Chouette, j'aurai appris quelquechose ce soir.
Le ré-échantillonnage est nécessaire si tu pars d'un signal audio à 48 ou 44.1, comme adc~. J'avais supposé que tu faisais des entrées/sorties temps-réel. Si tu fais des entrées/sorties fichiers, il n'est plus question du DSP. peek~ fait partie de MSP mais il ne manipule que des scalaires, pas des vecteurs.
Hors ligne
Ah oui en effet ce doit être une toute autre question que de transformer tout cela en téléphone temps réel. J'ai cru comprendre que les modes MST MS1T M1ST & M1S1T du +VLS permettaient le duplex mais je n'ai pas testé. Si tu avances sur la question ça pourrait un jour m'intéresser (pour l'instant je suis sur un simple serveur vocal et sans l'option "pour parler à un conseiller, tapez trois"...).
Là je coince sur un nouveau truc : le modem ne m'envoie aucune info si quelqu'un décroche suite à un appel émis. En mode data le signal reçu du fax ou du serveur distant doit remplir cette fonction, mais en voice... faut-il seulement parier sur le "allo" du correspondant ??
Hors ligne
Un MaxPhone, ça aurait de la gueule non?
J'ai trouvé un Olitec voice dans mes fonds de tiroir. J'arrive à le mettre en voice (AT#CLS=8, AT#VLS=2, AT#VTX) et à le faire couiner. Malheureusement je crois qu'il ne parle que ADPCM (AT#VCI? ROCKWELL;ADPCM;8). J'ai pas franchement envie de me palucher un codec ADPCM en Max.
Pour la détection du décrochage distant, il n'y a pas de vraie signalisation comme en RNIS (qu'on a consciencieusement sabordé en France, l'analogique ne devrait plus exister). Le modem doit deviner. Il y a peut-être une piste dans ce document. Voir les exemples à la fin, mot clé "ringback":
http://www.zoltrix.com/support_html/PUB … TVROCK.HTM
Hors ligne
Pages: 1