2009-11-16 21 views
1

Je n'avais jamais eu à traiter de codage/décodage de signaux/flux avant, du moins pas au-delà de protocoles assez basiques comme HTTP, alors pardonnez-moi Je rends cela plus difficile que je ne devrais l'être. Plusieurs des systèmes que nous utilisons au travail s'appuient sur le code temporel SMPTE pour fonctionner, un système de Manchester biphasé qui occupe 1 kHz de bande passante entre 1 kHz et 2 kHz. Parce que c'est juste dans le spectre audio, et au niveau ligne, il peut être branché directement dans l'entrée ligne de la carte son, accessible en utilisant l'API audio de votre choix (je prévois d'utiliser Core Audio sur un Mac). Je suis assez content de décoder le train binaire numérique lui-même pour récupérer le temps et les paramètres, mais récupérer le flux binaire à partir du signal analogique échantillonné est moins simple, et je ne suis pas sûr de la meilleure façon de l'approcher. Le problème est. Mon plan actuel est de permettre un court laps de temps après la détection d'un signal (1 seconde ou 24-30 images) pour mesurer le nombre maximum et minimum d'échantillons entre les niveaux de passage à zéro (en utilisant un filtre de moyenne mobile pour empêcher les pointes/coupures affectant le décodage) et les tensions maximales et minimales enregistrées pour déterminer le point de passage à zéro (niveau DC).Décodage de marque biphase Manchester dans un logiciel (représentant un flux audio de timecode SMPTE)

Je devrais alors pouvoir utiliser cette information pour construire un flux binaire numérique à partir du signal analogique entrant. Suis-je dans la bonne direction ou y a-t-il une meilleure façon de le faire?

Merci

Répondre

2

Votre carte son est presque certainement couplé AC. Donc, vous ne devriez pas avoir de décalage DC.

interesting dissection of sound card inputs here

Exécution d'une moyenne mobile pour calculer le contrôle automatique de gain de logiciel est probablement une bonne idée.

vos passages à zéro seront probablement proches de zéro. Vous pouvez également brouiller les données à 4khz (2 * 2k) [aka filtre passe-bas à 4khz], puis le détecter de bord pour obtenir les passages à zéro. Quand j'ai des problèmes de traitement du signal comme celui-ci, je représente graphiquement les données capturées dans une application personnalisée, puis j'essaie les choses de manière semi-interactive dans le code. À titre de suggestion, essayez d'en capturer quelques-unes et voyez comment vous allez envoyer les données stockées à vos routines d'analyse syntaxique. Essayez différentes choses et voyez ce qui fonctionne