poniedziałek, 18 maja 2015

Kodi HDMI & Analog audio at the same time

XMBC / Kodi - dual audio output HDMI & Analog

I have a HTPC with Kodi connected to TV with HDMI (Nvidia 240 GT) and also to amplituner using analog output from motherboard audio. The HTPC is running Debian Sid Linux and Kodi 14.2.

The problem

To send the audio output to TV and amplituner at the same time, one can use special setup of ALSA or Pulseaudio. Newest versions of XBMC / Kodi accept for me only the special setup of Pulseaudio, anyway, it still works :)
The TV has delay in processing the HDMI input. As a result there is an enormous echo!
Somehow we need to delay the analog output, to match the delay done by TV to HDMI signal.

Solution

Advanced configuration of Pulseaudio using LADSPA delay filter (you can configure the delay amount to match the TV).
  1. Install LADSPA filters (in Debian it is ladspa-sdk package)
  2. Backup your ~/.config/pulse/default.pa file
  3. Put the below contents into your ~/.config/pulse/default.pa. I had to disable autodetection to be able to recognize sinks propery, for me hw:0,0 is internal card analog output, hw:1,7 is Nvidia HDMI. Please modify it to match your system.
    The green values control the delay of LADSPA delay_5s filter. Refer to LADSPA documentation for explanations - generally just modify the first number.
  4. Restart the system and test! You may need to check Kodi audio settings and change the output device.
#!/usr/bin/pulseaudio -nF

.fail

### Load audio drivers statically
### (it's probably better to not load these drivers manually, but instead
### use module-udev-detect -- see below -- for doing this automatically)
load-module module-alsa-sink device=hw:0,0 sink_name=internal
load-module module-alsa-sink device=hw:1,7 sink_name=nvhdmi

### Apply delay to internal sink
load-module module-ladspa-sink sink_name=internal_delay master=internal plugin=delay label=delay_5s control=0.18,1

### Combine delayed internal sink with hdmi sink
load-module module-combine-sink sink_name=combine slaves=nvhdmi,internal_delay

### Load several protocols
load-module module-native-protocol-unix

### Automatically restore the default sink/source when changed by the user
### during runtime
### NOTE: This should be loaded as early as possible so that subsequent modules
### that look up the default sink/source get the right value
load-module module-default-device-restore

### Automatically move streams to the default sink if the sink they are
### connected to dies, similar for sources
load-module module-rescue-streams

### Make sure we always have a sink around, even if it is a null sink.
load-module module-always-sink

### Honour intended role device property
load-module module-intended-roles

### Automatically suspend sinks/sources that become idle for too long
#load-module module-suspend-on-idle

### Make some devices default
set-default-sink combine

piątek, 9 stycznia 2015

Ugoda altransztadzka

W skrócie

Król Szwecji, Karol XII, stojąc ze swoją armią w Saksonii, wymusił na Cesarzu złagodzenie prześladowań religijnych (dla ścisłości katolicy prześladowali protestantów). Stało się to w 1707 i nazywamy to ugodą altransztadzką.
Dzięki tej ugodzie powstał m.in. Kościół Jezusowy w Cieszynie. W kościele tym jest nawet pomnik Karola XII'ego, po prawej stronie ołtarza!

Nie mogłem nigdzie znaleźć polskiego tłumaczenia ugody altransztadzkiej, co mnie dość mocno zdziwiło...
Oto świeże tłumaczenie z łacińskiego oryginałuUgodaAltransztadzka.pdf (tłumaczyła Pani Aleksandra Milcarz - bardzo dziękuję).


Skąd ten temat

Polecam posłuchać płyty "Carolus Rex" szwedzkiej grupy "Sabaton". Dwa utwory są poświęcone Karolowi XII'emu, cała reszta innymu królom, bitwom i podbojom... Teksty są zabójcze, niejedną lekcję historii można by z nich zrobić! Muzyka też fajna, jak ktoś lubi metal :-)

Carolus Rex


sobota, 21 lipca 2012

Astrophotography in Linux with gphoto2

Astro-photography with Linux

Script for making series of photos using Canon Rebel 350D connected to PC using USB cable and an additional cable to trigger BULB exposures.This script is especially useful for astrophotography.

Installation

Just place the script in the directory which is in the PATH, for instance: /usr/local/bin. Make it executable:
> sudo chmod a +rx /usr/local/bin/foto

Two additional programs are required: gphoto2 and geeqie. In Debian use the following command to install them:
> apt-get install gphoto2 geeqie
To configure the script review and modify variables in the SETTINGS section at the beginning of the script, especially BASE and SPORT, to match your setup.

Usage

Start the script:
> foto
It will ask for the parameters. Optionally you can specify the parameters directly:
> foto name=m27 frames=20 exptime=60
This will make 20 60 seconds exposures, with common name m27.


#!/bin/bash

# Written by Piotr Dlugosz
# License GPL

#set -x # uncomment to debug

# ***** SETTINGS *****

# Base directory for the photos
BASE=/home/share/ASTRO

# Serial port for BULB cable
SPORT=/dev/ttyUSB0

# Gphoto2 settings
OG="--quiet --port usb: --set-config shutterspeed=Bulb --set-config imageformat=RAW --set-config focusmode=3"

# Photo parameters (these params can be given on the command line)
OP="name=test frames=1 exptime=10 iso=400"

# ***** END SETTINGS *****

# ***** HOOK PART *****

if [ "$ACTION" = "download" ]; then
echo "DOWNLOAD"
geeqie -t -r "$ARGUMENT" #>/dev/null 2>&1
fi
[ "$ACTION" ] && exit 0

# ***** END HOOK *****


# ***** START *****

echo "*** FOTO AUTOMAT ***"

[ -d "$BASE" ] || { echo "$BASE does not exist!"; exit 1; }

# Ask for parameters and set the script variables
eval $OP # set the defaults first
if [ "$1" ]; then
eval $@ # if command line is not empty take params from command line
else
read -ei "$OP" -p "Enter the photo parameters: " ANSWER # otherwise ask
eval $ANSWER
fi

# Prepare environment
ABSPATH=`cd ${0%/*} && echo $PWD/${0##*/}`
DATE=`date -d "-6 hours" +"%y%m%d"`
NAME="${name}_${DATE}_$$"
FOLDER="$BASE/$name/$DATE"
[ -d "$FOLDER" ] || mkdir -p "$FOLDER"
cd "$FOLDER" || { echo "$FOLDER does not exits!"; exit 1; }

echo "** Folder: $FOLDER, session number: $$"
echo "** Params: exptime=$exptime frames=$frames iso=$iso"

((count=frames-1))
export count

# Start gphoto in tethered mode and set the parameters
gphoto2 $OG --set-config iso=$iso --filename "${NAME}-%03n.cr2" --hook-script "$ABSPATH" --wait-event-and-download >~/gphoto.log 2>&1 &

# Loop to make photos
for a in `seq 0 $count`; do
echo -n "* Frame: $a/$count "
sleep $exptime >$SPORT
echo "finished."
sleep 0.5
done

# Wait till the last photo is saved before exiting
LASTPHOTO="${NAME}-`printf '%03d' $count`.cr2"
while [ ! -s "$LASTPHOTO" ]; do
sleep 1
done

echo "Killing gphoto"
pkill gphoto2


czwartek, 19 lipca 2012

First post

Hi!

This is the first post, I will write about:

- making photos
- programming (C, python, shell)
- Linux
- astrophotos
- astro gear and astro software (Linux only)
- pets - dogs and cats
- anything else ;-)

So - for the first photo - me and my children (my wife is also there but on the opposite side of a camera):