viernes, 29 de diciembre de 2017

Grabación de audio en concursos (FFMPEG)


El, a mi juicio, principal concurso del calendario, el CQ WW, pone como requisito que las estaciones que lideren una determinada categoría, incluso a nivel continental (sección XII.C de las reglas), debe estar en condiciones de entregar a los organizadores registros de audio sobre la totalidad de la participación. Si no se entregan los registros el comité organizador puede aplicar una serie de medidas que pueden llegar incluso a la descalificación. Materia seria si las hay, y de hecho han descalificado estaciones por ese motivo en ediciones anteriores.

Que sepa es el único concurso importante del calendario internacional que tiene éste requisito, pero no sería de extrañar que otros concursos adopten medidas similares.
La medida se inscribe en el conjunto de iniciativas que los organizadores instrumentan para evaluar conductas que pudieran ser consideradas como fraudulentas. Es mucho lo que se puede debatir al respecto y poco lo que se puede lograr con ello.
Por eso, construyendo mi estación concursera decidí abordar éste requerimiento como uno mas para la estación viendo como se puede instrumentar de la mejor forma.
En los foros concurseros se dá como solución al problema utilizar el programa Audacity, pero algunas pruebas me permitieron encontrar que no cumple con algunos de los requerimientos, en particular la posibilidad de arrancarlo sin interacción mediante el procesador de comandos con un script batch.
Mi primer intento fue recurrir a algún dispositivo externo, pero para sorpresa de nadie no tengo ninguno adecuado. Algunos grabadores viejos, ya largamente mas allá de su vida útil, tenían la dificultad de una operación totalmente manual, cintas (¡cassettes!) que duran entre 60 y 90 minutos y la integración con los canales de audio. No hay una forma simple de referenciar cronológicamente las grabaciones tampoco, el primer intento fué entonces rápidamente abandonado.
El segundo intento fue revisar las opciones en dispositivos un poco mas modernos basados en estado sólido, una revisión rápida me permitió concluir que los dispositivos a mano tenían capacidad de muy poco tiempo y requerirían una interfaz compleja para controlar (sincronizar) la grabación y bajar los archivos que se pudieran ir generando.

El tercer intento fue, ya mas adecuado al resto de la estación utilizar una placa embebida Raspberry PI con ese propósito, la RBPI tiene capacidad de manejar audio, capacidad de red para eventualmente grabar los archivos en algun server de mi red y enorme cantidad de software disponible para el ambiente Linux. Justamente investigando el software disponible me topé con el paquete denominado FFMPEG que es una plataforma realmente enorme para manipular (crear, editar, transmitir, mezclar, transformar) imágenes y sonidos. El único problema que restaba solucionar era en ese punto como sincronizar la operación del programa con el resto de la configuración de concurso, por supuesto que se puede manejar un esquema RPC para ello, o un script con algun esquema de control via TCP/IP de otra índole. Pero no deja de ser un poco complicado y el volumen necesario es un poco mucho para una RBPI.

La solución estaba a la vista todo el tiempo, FFMPEG también tiene una versión para Windows, donde puede ser invocada desde un archivo batch con los argumentos apropiados para definir formatos, canales de entrada y canales de salida. Simplemente puede ser lanzado por el mismo script batch que lanza todos los programas de la configuración de concursos, incluyendo apagarlo cuando se apaga el logger (¿descanso?¿reboot?).
Dado que hay que proporcionar lo que escucha cada oido es necesario, en una configuración SO2R como la mia grabar los dos receptores, por lo que tengo una instancia corriendo de FFMPEG por cada canal como hilos separados. El llamado luce de la siguiente forma:

@ffmpeg -f dshow -y -t 00:01:00 -i audio="%AUDIO%" "%outfile%"

La variable AUDIO tiene el nombre del canal de entrada y la variable OUTFILE el archivo de salida donde se grabará el resultado.  Para saber el nombre de los canales de entrada puede usarse el comando

@ffmpeg -list_devices true -f dshow -i dummy

Con estos argumentos el programa graba por espacio de un minuto y finaliza, eso está hecho así para poder "cerrar" el archivo, mientras está grabando el archivo de salida está "abierto" y en caso de interrumpirse súbitamente la ejecución (corte de energía, colgada de la máquina, etc) no se podría recuperar lo que estuvo grabando. Uno no quiere grabar horas y perderlo por un accidente. ¿Porque un minuto? Bueno eso es arbitrario, puede usarse un período mayor, ¿2 minutos? ¿5 minutos?.
El mismo script que llama cuando termina revisa si está activo el logger y en caso de estarlo vuelve a llamar a FFMPEG por otro minuto, de no estarlo termina la ejecución.
Para que en cada ejecución no "pise" la anterior el nombre del archivo se genera en cada ciclo basado en la hora, es relativamente sencillo:

@Set outfile=.\AUDIOLOG_%CALLSIGN%_%CONTEST%_%RIG%_%date:~-2,2%%date:~-7,2%%date:~-10,2%_%time:~-11,2%%time:~-8,2%%time:~-5,2%%time:~-2,2%.mp3

Por lo que los archivos toman un nombre del estilo

AUDIOLOG_LU7DID_CQWW_R1_17122817020456.mp3

Los que se van almacenando en algún directorio que resulte conveniente, desde donde pueden ser respaldados periódicamente o pueden directamente ser grabados en un server remoto. En caso de algún accidente el peor problema es perder el último minuto en que el problema ocurrió.
Si bien se pueden optimizar los valores de grabado, cosa que seguramente seguiré explorando, toma aproximadamente 1 MByte/Minuto, o sea 2 MByte/minuto para los dos canales; para todo un concurso que puede durar 30 horas serán unos 3.6 GBytes de información al finalizar el concurso repartidas en unos 3600 archivos; no es poco, pero tampoco es una cifra que no se pueda manejar en una PC mas o menos actualizada. En caso que fueran requeridos se puede mandar un .ZIP con todos los archivos via espacio en la nube (DropBox o OneDrive por ejemplo).
Una forma de reducir drásticamente el tamaño de los archivos grabados es reducir el "samplerate" al cual se toma el audio:

@ffmpeg -f dshow -ar %SAMPLERATE% -y -t 00:01:00 -i audio="%AUDIO%" "%outfile%"

utilizando previamente

@Set SAMPLERATE=11025

En este caso los archivos generados son del orden de 300 KBytes por minuto, lo que requiere para todo el concurso y dos canales aproximadamente 1 GByte, lo que es un número mas accesible para máquinas pequeñas.

martes, 5 de diciembre de 2017

Pronóstico de Propagación para ARRL 10 Metros

Se viene el ARRL 10 Meters Contest edición 2017. Como comenté en una entrada anterior tengo toda la intención de participar un poco para no dejar pasar el 2017 sin ninguna participación concursera, otro poco porque necesito algún evento de cierta intensidad como para probar los sistemas de la nueva estación.
Todo un desafío planear una actividad en 10 metros con lo que parece ser una temporada desastrosa para esa banda.
Recientemente, todavía con la idea finalmente no concretada de participar en el CQ WW, completé un pronóstico basado en la actividad del sistema Cluster un mes anterior al concurso.
El pronóstico daba una idea de cual podrían ser horarios y niveles relativos de actividad en las diferentes bandas, como para planear posibles estrategias en función de las habilidades operativas, equipos y antenas disponibles.
Como no me canso de reiterar, cualquier pronóstico de propagación no deja de ser un intento, muchas veces vano, de adelantarse a como se comportarán fenómenos con características aleatorias de escala cósmica. Por lo tanto debe tomarse como algo indicativo, en el mejor de los casos.
Cuando terminó el concurso el sistema Reverse Beacon Network tenía a disposición de cualquiera todos los spots que ocurrieron durante el concurso (raw data), mucho mas potente como instrumento pues tiene un órden de magnitud mas volumen de reportes y los mismos ocurren automáticamente en función de si las estaciones son escuchadas, evitando el sesgo del reporte manual en el sistema Cluster donde el reporte puede estar "contaminado" por las motivaciones para que el reporte ocurra.
Una primera impresión, por primera vez me costó cargar los dos dias de concurso en la herramienta para procesarla (Minitab o Excel) debido a su .. ¡volumen!, no hay duda que la participación fue record, o la cantidad de nodos del RBN se ha incrementado mucho, o ambas cosas.
La segunda es que el pronóstico decía que las bandas de 21 y 28 MHz serían las mejores, tanto en intensidad como en extensión de las aperturas, que 20 metros y 40 metros serían buenas bandas. La realidad de lo reportado por el RBN indica que se cumplió casi todo, excepto que 10 metros fuera una buena banda, que no lo fue. Realmente la propagación fue un desastre, y el pronóstico estuvo bastante errado en la intensidad, pero no en la extensión de las aperturas que +/- 1 hora estuvieron bastante acertados.
Los datos provenientes del RBN pueden ser utilizados para pronosticar como puede lucir la banda de 10 metros durante el ARRL 10 meters. Los resultados del pronóstico se pueden ver en el gráfico adjunto. En el gráfico, a en la parte izquierda está la propagación pronosticada por hora, los colores rojos indican propagación mala y verde mejores momentos, y los colores intermedios estados intermedios. En la zona derecha del gráfico las probables zonas desde donde ocurrirá la propagación, basado en las zonas que escucharon o fueron escuchadas en el RBN durante el concurso.
Puede verse, y no es sorpresa, que el grueso de la actividad es de esperar sea con NA y, en menor medida, SA. Es posible que exista alguna actividad muy marginal con EU durante la mañana de ambos dias, especialmente el sábado, y también algo de actividad marginal con AS y OC.
El análisis no es particularmente fuerte, primero porque la propagación puede tender a repetirse cada 30 días aproximadamente, cuando las mismas anomalías (o lo que quede de ellas) vuelvan a tener la misma "geo-efectividad". En segundo lugar, la escala de participación es vastamente diferente, horarios que con señales marginales igual tienen actividad por la cantidad de estaciones participantes pueden ser completamente inactivas con menos participantes. La ventaja es que en el ARRL 10 no hay grandes estrategias a definir, solo la potencia y en que horarios aproximados participaremos 26 o 27 horas como máximo sobre las 48 horas del concurso, en realidad el pronóstico parece indicar que habrá entre 6 y 10 horas fuertes entre ambos dias. Ojalá que sea divertido, tengo ganas acumuladas de participar en concursos ¡y espero sacarmelas!

lunes, 4 de diciembre de 2017

I'll be back....


Como lo inmortalizara Arnold Schwarzenegger en su personaje de "Terminator" aquí estoy de vuelta, en nueva casa física (en Buenos Aires), en nueva casa digital (lu7did.blogspot.com) y también con nueva estación.

Cuando en el blog anterior (lu7hz.blogspot.com) escribí a modo de cierre de mi estación, solo un aspecto de un cierre mucho mas profundo que implicó nueva casa, nueva ciudad, nuevo trabajo y un recomienzo en muchos aspectos, comenté que basado en la experiencia empezaba un proceso bastante largo hasta que pudiera volver a instalar mi estación y poner en funcionamiento. Comenté entonces que firmaría con gusto que eso ocurriera dentro de los dos años siguientes, porque sabía que muchas serían las prioridades antes que pudiera llegarle el turno a la estación, y muchos los eventos antes que pudiera materializarlo. Pero "Todo Pasa" diría un dirigente de futbol ya fallecido, pero prefiero decir "Tout vient" (todo llega). Cuando desarmé la estación la mayor parte de los aparatos quedaron almacenados en un tambor de cartón corrugado ("durmiendo la siesta") y las antenas prolijamente empacadas en el techo de casa. De por si, el año 2015 ya había tenido sus propias turbulencias que me habían permitido dedicarme a mi hobby solo en forma marginal, muy pocos proyectos y poquísima actividad de radio, prueba de eso es que solo pude participar en el concurso ARRL International DX (Feb'15) y en un par de fechas del Campeonato Argentino de HF, pero sin posibilidad de tener continuidad terminé desistiendo. Desde Octubre del 2015 me mudé a Buenos Aires, a un departamento pequeño sin posibilidad alguna de instalar una estación de radio, en un edificio de propiedad horizontal con bajas chances de poner antenas razonables. Aun así instalé mi estación portátil (Yaesu FT817) y un sistema de dos antenas, la Walmar vertical de 1/2 onda para 10 metros que traje de Córdoba y una yagui de 4 elementos de construcción casera que armé provisoriamente. Pude participar en el CQ WW 2016 y un par de semanas después en el ARRL 10, con resultados sorprendentemente buenos para la configuración provisoria. Pero poco después tuve que desmontar la antena Yagui. Impensable tener antenas para otra banda de HF que no fuera 10 metros, muy pobre la propagación en 10 metros; pocas opciones.


Ya establecido en Buenos Aires empezó lentamente el proceso de re-construcción, hacia Mayo finalmente empezaron las reformas de mi nueva casa, y con ellas la construcción del nuevo "shack", bastante mas grande que el que tenía en Córdoba. El proceso de construcción fue (es, pues aún no terminó la obra) lento. Luego en Octubre pude, finalmente, realizar la mudanza parcial que me permitió traer las cosas desde Córdoba. A mediados de año se completó el trámite de cambio de licencia con lo que mi estación volvió a ser LU7DID (¡¡bye bye LU7HZ!!). A mediados de año había podido colocar el primer conjunto de antenas en una torre pequeña y la vertical Hustler 5BTV (en el tanque de agua). Antenas que me permitieron empezar a reconstruir mi estación con los aparatos que tenía en Córdoba. Son antenas adecuadas para utilizar como secundarias pero de ninguna forma competitivas para DX o radiosport. En forma paralela, mi shack de radio también es el taller donde llevo a cabo proyectos, y no tener shack significa que no pude progresar significativamente en ningún proyecto. Mas allá de alguna reparación adicional, no mucho mas que algunos cables soldados en algún lugar incomodo, muy lejos de la construcción de algún prototipo o una modificación mayor. Volver a tener shack es volver a poder trabajar en proyectos de desarrollo e implementación de ideas en distintos temas técnicos.

Finalmente en las últimas semanas comencé a armar la nueva estación y taller de radio, la cual de alguna manera armada desde cero tanto en cuanto a los equipos como a la configuración utilizada. Para empezar el sistema de antenas, el corazón de la estación lo pensé desde cero y con la simplificación que recomiendan las lecciones aprendidas. Muchas menos antenas y muchas menos oportunidades de interacción. En una torre, la mas alta (unos 18 metros) con la Walmar MA-3340 (Yagui de 3 elementos para HF 10 a 40 metros) con el rotor Walmar de servicio medio, también la antena Walmar de 1/2 onda acortada con trampas para 80 metros. Faltan en ésta torre las yagui de UHF (10 elementos) y VHF (5 elementos) para trabajo a distancia y satélite, con suerte hay que instalarlas en las siguientes dos semanas. No pondré mas antenas en esa torre (en Córdoba, esa torre tenía 10 antenas). La otra torre es mas baja, 12 metros de altura, con una Walmar MA-1140 dipolo rígido de HF 40 a 10 metros, la antena Ringo de 145 MHz para tráfico local y a media altura (apenas a ras visual de los techos circundantes) una antena vertical de 1/4 de onda para 50 MHz. Menos antenas y mas focalizadas que en la estación anterior. No creo necesarias antenas redundantes para VHF y UHF, en la práctica terminan usándose siempre las mismas antenas. Tengo equipos, y antenas, para 220 MHz pero por el momento no voy a instalarlas, quizás mas adelante.
En la estación el cambio mas notable es el reemplazo de los dos transceivers en configuración "single operator 2 radios" (SO2R) que utilicé en los últimos años por un solo transceiver mucho mas moderno que tiene esa función integrada, un Yaesu FT2000, completan la estación el lineal Yaesu FTDX-2000, un ICOM IC-706 para 50 MHz y actividad en 145 MHz. Falta aún agregar, e integrar, un Yaesu FT100 que operará como tercer equipo de HF en configuración SO3R y para actividad en satélites, quizás quede también configurado en forma fija para modos digitales en HF. Todos los equipos controlados por un sistema CAT, no es necesario un sistema de control SO2R separado como el DX-Doubler que usaba en Córdoba, al menos no hasta que integre la configuración SO3R pero incluso en ese momento no es seguro que lo termine necesitando. Los dos transmatch está uno (MFJ945) conectado a la salida del FT2000 y antes del FTDX2000, la antena de esa configuración es la yagui de 3 elementos que en principio ajusta sin transmatch con ROE razonable o sea que se lo opera en "bypass", también el lineal está en "stand-by" para el uso normal. Cuando se conecta el lineal el transmatch opera como circuito sintonizado de entrada, lo que contribuye enormemente a que ese modelo de lineal sea estable además de armonizar las impedancias. A la salida el tanque del lineal es suficiente para ajustar las impedancias en juego para un buen ajuste. También una novedad es un wattimetro capaz de medir la potencia a la salida del lineal, un agregado que la experiencia había marcado como muy necesario. El otro transmatch acopla las otras antenas a la la entrada antena-2 del FT2000, las otras antenas requieren algunos ajustes aislados según la banda para operar correctamente. En la estación anterior, que fue creciendo con "parches" sucesivos donde le fui agregando los sistemas de a uno, había muchas oportunidades para tener cables largos, dispositivos USB y otras oportunidades para tener interacciones y RFI de distinto tipo. Aqui empecé con la hoja en blanco, con un mínimo de dispositivos USB, con la manipulación y los controles serie para los CAT trabajando desde placas PCI-Express directamente en el motherboard de la PC y con cables lo mas cortos posibles. 
El conjunto se integra con algo de software, una modificación (que resultó mas simple que lo que preveía) para el programa MM2OR mencionado muchas veces en mi blog que es el que integra al logger N1MM con el sistema OmniRig y con el a todo el "ecosistema" de filtros y utilitarios que son necesarios para operar la estación tanto en DX como en concursos. Básicamente integrar el mecanismo de comandos CAT del FT2000, mas adelantado tecnológicamente, mas potente y bastante distinto al del resto de los equipos Yaesu que venía operando. El CAT del IC706 no requirió ninguna modificación significativa, simplemente conectar los controladores que ya utilizaba en Córdoba.
Las antenas andan muy bien, tanto en adaptación como en rendimiento; una prueba durante la madrugada en la ventana de 7 MHz con Japón (5am a 6am local en ésta época del año) mostró buenisimas señales reportadas por el RBN en zona ZL y W, así como contactos en muy buena forma con JA.
Por otra parte la calibración del amplificador lineal muestra que en 7 y 14 MHz entrega entre 250 y 300W de salida con 40W de excitación, dada la corriente de placa entre 0.6 y 0.9A y la tensión de trabajo (deliberadamente reducida) de 600V con la que opera muestra potencias de entrada del orden de 500W; el funcionamiento que esperaba, ni mas ni menos. Aún me resta mapear las curvas de respuesta en 21 y 28 MHz. La calibración es necesaria para poder llegar rápidamente a los ajustes sin exigencias significativas en las válvulas finales del amplificador, particularmente sensibles.
Si bien hice el esfuerzo de comprar la licencia del logger WinTest y lo tengo instalado, además de preliminarmente configurado. Sin embargo un poco de uso casual me convenció que el cambio no será un esfuerzo menor, sus paradigmas de interface diferentes respecto a N1MM y un manual de mil (¡1000!) páginas hacen que la experiencia sea interesante pero merecedora de respecto; por lo que me convencí que por ahora gastar un poco de esfuerzo para integrar el N1MM a la nueva configuración y seguir un tiempito hasta poder hacer la transición dedicandole mas tiempo.
A pesar de los esfuerzos no pude terminar la estación a tiempo para el CQ WW de CW, me quedé con las ganas y por poco. Pero terminamos de conectar las antenas hacia el atardecer de la segunda jornada del concurso así que agotado y todo me puse a escuchar, y me quedé maravillado de que bien escuchaba estaciones en bandas que antes estaban "vacías". Tengo el propósito, realista creo, de no dejar pasar un año entero sin ninguna participación concursera, así que la siguiente oportunidad será el ARRL 10 Metros en el fin de semana del 9 y 10 de Diciembre. Espero testear todo el sistema en un concurso real y de allí identificar las cosas que pueden necesitar ajustes. En cuanto pueda comenzaré también a progresar con los proyectos que largamente han estado confinados a una prisión de dibujos en papel y simulaciones en software; dos candidatos sobre los que estoy ansioso son lograr el primer prototipo de un QRP en "esteroides" al que llamo el Pixie+ que es básicamente un Pixie, con un amplificador para potencias QRP, un sintonizador/filtro especial y el control por una placa Arduino que le aporta control de frecuencias, memorias, CAT, manipulador integrado y otras funciones. También, otro proyecto, la integración de un módulo de RF para VHF con una placa micro-Arduino (Tiny) que lo veo como un "VHF por 2 pesos" muy interesante y aún así tecnológicamente bastante sofisticado y desafiante. Definitivamente.... ¡I´m back!