Canvi de dispositius d’audio amb PowerShell (2)

He actualitzat l’script per canviar de dispositius degut a un problema amb els anteriors.

Sembla que els dispositius “canvien” d’ordre donades algunes sircumstàncies, i per tant l’script anterior basat en l’ordre en que llistàvem els dispositius ja no serveix, per tant, toca automatitzar una mica l’script.

La idea es llistar els dispositius, filtrar els que interessen i activar el que necessitem i la mateixa comanda que varem utilitzar per llistar tots els dispositius ens servirà.

Get-AudioDevice -List

Per poder treballar amb ells la posarem en una variable i ja que hi sóm, farem una taula sols amb les dades que ens interessen. En aquest cas l’Index i Name.

$llista = Get-AudioDevice -List | Select Index, Name

El següent serà recorre la llista per poder saber quin dispositiu hem d’activar, per tant ens falten 2 coses, un nom amb el que comparar i el número index+1.

$disp1 = "BenQ PD2500Q (NVIDIA High Definition Audio)"
$disp =  "Altavoces (Realtek High Definition Audio)"

$llista = Get-AudioDevice -List | Select Index, Name

Foreach($i in $llista)
{
$nom = $i.Name
$in = $i.Index + 1
if ( $nom -like $disp )
{
Set-AudioDevice -Index $in
}
}

Veureu que utilitzar Select ens permet accedir molt fàcilment al les columnes de la taula $var.NomCol i que tal com varem fer en l’script anterior, sumem 1 a l’index de la taula. Ara sols ens queda una cosa, dir quin dispositiu volem activar ja que ara sols activaria $disp que són els auriculars.

Podriem fer dos scripts, però en aquest cas utilitzarem $Args i passarem un valor, en cas de no passar res activara els auriculars.

$disp1 = "BenQ PD2500Q (NVIDIA High Definition Audio)"
$disp =  "Altavoces (Realtek High Definition Audio)"

if ($Args -eq 'benq')
{
$disp = $disp1
}

$llista = Get-AudioDevice -List | Select Index, Name

Foreach($i in $llista)
{
$nom = $i.Name
$in = $i.Index + 1
if ( $nom -like $disp )
{
Set-AudioDevice -Index $in
}
}

Ara si passem el paràmetre ‘benq’ a l’hora de cridar l’script activarà l’audio del monitor. Per mi ja estaria OK, però podriem expremer una mica mes l’script i ja que definim els dos dispositius, podem recorrer la taula i mitjançant el camp Default, quedant un Script com aquest.

$disp1 = "BenQ PD2500Q (NVIDIA High Definition Audio)"
$disp =  "Altavoces (Realtek High Definition Audio)"

$llista = Get-AudioDevice -List | Select Index, Name, Default

Foreach($i in $llista)
{
$nom = $i.Name
$in = $i.Index + 1
if ( $nom -like $disp )
{
if ( $i.Default -like 'False' )
{
Set-AudioDevice -Index $in
exit
}
}
if ( $nom -like $disp1 )
{
if ( $i.Default -like 'False' )
{
Set-AudioDevice -Index $in
exit
}
}
}

És important acabar l’script un cop cambiem el dispositiu ja que si es canvia el primer, podem tornar a activar el segón.

I feina feta, jo em quedo amb l’script anterior ja que tinc un botó per cada cosa en l’Stream Deck però si mai tinc que reduir l’espai dels botons ja tinc l’altre.

Monitor en mode Estalvi d’energia amb PowerShell

Seguint amb les ulilitats que pot donar el meu Stream Deck de Elgato i que anteriorment ja n’he parlat sobre treure profit amb Powershell.

Canvi de dispositius d’audio amb PowerShell

Com alguns podeu saber, el meu escriptori és el terra, tinc el meu setup (monitors, stream deck, micro, etc) tot al terra davant la TV i moltes vegades em passa que vull veure la TV inmediatament i tinc que tancar els monitors perquè no molestin, així que vaig pensar que potser amb PowerShell podría fer-ho.

Una cerca ràpida per google em va portar a Windows Tip: 4 Different Ways to Turn Off Desktop Monitor or Laptop Screen ón expliquen entre altres coses, una crida amb un script de PowerShell.

Copiar i enganxar i l’script funciona perfectament, configuro tal i com vaig fer amb els altre botons de l’Stream Deck i els monitors entren en estalvi d’energia, l’únic inconvenient és que la finestra de PowerShell queda oberta i no m’interessa, molesta trobarla oberta al despertar els monitors.

function Set-DisplayOff
{
	$code = @"
	using System;
	using System.Runtime.InteropServices;
	public class API
	{
		[DllImport("user32.dll")]
		public static extern
		int SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
	}
	"@
	$t = Add-Type -TypeDefinition $code -PassThru
	$t::SendMessage(0xffff, 0x0112, 0xf170, 2)
}

Set-DisplayOff

Una mica més investigació m’ha portat a descobrir que a part de SendMessage existeix PostMessage, que és dintre de la API Win32 la versió asincrona de SendMessage i per tant no interfereix en el fil d’execució.

Així que el codi de l’script final queda tal que:

function Set-DisplayOff
{
	$code = @"
	using System;
	using System.Runtime.InteropServices;
	public class API
	{
		[DllImport("user32.dll")]
		public static extern
		int PostMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
	}
	"@
	$t = Add-Type -TypeDefinition $code -PassThru
	$t::PostMessage(0xffff, 0x0112, 0xf170, 2)
}

Set-DisplayOff

Nou sistema de decarrega 3alacarta (part 1)

Avui he volgut posar-me a intentar recuperar una eina que tenia una mica oblidada i que había modificat per mí, el gnulinux.cat tv3 que fa molt bé la seva feina però es va deixar d’actualitzar de fa molt temps.

Els developers es van posar en contacte amb mí per afegir-me al projecte (gràcies per pensar amb mí!) però alguna cosa vaig fer malament i m’han suprimir (o no vaig arribar a crear) la meva compra de SourceForge.net… un desastre.

» Read more

Video Screensaver

He trobat en un vell disc dur, una còpia de seguretat de software desenvolupat amb Visual Basic 6.0.

Un d’ells és un salvapantalla que permetía carregar vídeos, algo dificil de trobar fa 10 anys, es va desenvolupar  per l’empresa en la que treballava i poder carregar demos en format video en els ordinadors exposats.

Funcionava amb el Windows Mediaplayer, a partir de les seves pròpies llibreries, sols amb els runtime de VB6 era suficient per funcionar.

Opcions molt bàsiques, un missatge a mostrar per sobre del video, si voliem que fós un bulce i si voliem silenciar (mute) el vídeo. A part evidenmen del video, formats base de windows però amb codecs es podia utilitzar qualsevol: WMV, MPG, AVI, MP4

Simplement es copiaven els fitxers a C:/WINDOWS/SYSTEM32 i llestos, es creava un fitxer config.conf amb les dades, separades per el caràcter #.

Per configurar es podia anar des del formulari de protector de pantalla com un de normal, però amb una accés directe amb /C a la linia de comandes obriem el formulari de configuració.

Us deixo el fitxer per si li voleu donar un cop d’ull.

Video Screensaver (4984 downloads )

Amazon Music Unlimited – Infocomercial (LOL)

s quiero proponer una cosita para hecharme una mano a poder hacer mas unboxings, es muy sencillo.

Arriba teneis un banner y un link (si teneis adblock en el navegador), en todo caso es este de aquí:

Amazon Music Unlimited

Una vez dentro os saldrá un banner parecido a este:

Solo teneis que darle al botón amarillo y listos, 30 días de Amazon Music Unlimited de prueba, luego podeis cancelar la suscripción (ver nota al final del post), muchos ya tenemos otras opciones como Apple Music o Spotify.

Entonces, que es Amazon Music Unlimited? Simplemente un servicio de streaming que incluye la opción de subir nuestros MP3 para sincronizarlos con la nuve y así tenerlos en distintos dispositivos (por ejemplo, albumes poco comunes japoneses).

Pero también nos permite escuchar directamente un álbum si lo estamos buscando en la web, ya nos sale un botón para poder escucharlo accediendo al reproductor web. A parte tenemos APPs para casi cualquier plataforma.

A todo esto, dadle click que me hechais una mano con que pueda adquirir mas cosas para unboxings ya que lo voy a reinvertir en el canal  y el blog :)

Nota: Para darse de baja, desde la APP Web, vais a ajustes y ahí teneis la opción de cancelar.

13 años y poco de picar codigo (parte 1)

Bueno, ha llegado el día en que se ha dado un cambio en mi vida en el apartado profesional, una oportunidad para buscar un cambio deseado pero temido y con vistas a mejorar.

Los que me conocéis sabréis que he estudiado ETIG (Enginyeria Tècnica d’Informàtica de Gestió) aunque no me saque al carrera, era un “bala perduda” con los estudios y aunque me resultaba fácil el tema de programación y tal, se me ha ido perdiendo todo ese “don” con los años.

Con el cambio lo quiero recuperar, no quiero un curriculum con medias verdades, aunque no he perdido el toque, ya sabéis que en los últimos años he desarrollado ports de aplicaciones básicas para trabajar con las repros a mac (Bytespliter y Cogswap/Byteswap), peor hay otras cosas, voy a intentar hacer memoria y en medida de lo posible hablar de ese periodo en el que estuve desarrollando y como lo veía en eses momento.

» Read more

Nueva versión bytesplitter 0.03b para mac [esp]

Trabajando en otro codigo que giraba los bytes de un fichero (swapbyte), me di cuanta que el código estaba mal, en vez de trabajar con 8 bits (1 byte) este trabajaba con ¡8 bytes! Por eso los ficheros finales no se generaban correctamente.

Esta versión soluciona ese error y cambia los nombres de los ficheros por file_L.bin (0-7bits) y file_H.bin (8-16 bits).

Byte Splitter for Mac OS X 0.03b (4898 downloads )

1 2 3 4 7