Skip to content

News Arts and Science Teaching Media Library Services IEM - intern Contact
  You are not logged in Link icon Log in
You are here: Home » Kunst & Forschung » Signalverarbeitung » thermenface

thermenface - Ein berührungsloses Interface zur Steuerung von Langzeitinstallationen

johannes m zmölnig

institut für elektronische musik und akustik

musil  ritsch  zmölnig


Contents

Anforderungen Interaktive und reaktive System benötigen Input-Interfaces, mit denen BenutzerInnen mit ihnen in Verbindung treten könne.

Zur Kontrolle einer eindimensionalen Variablen (zum Beispiel Lautstärke oder Position auf einer Geraden) können dabei eine Vielzahl von Geräten wie Schieberegler und dergleichen eingesetzt werden. Bei all diesen Interfaces tritten die BenutzerInnen in ein mechanisch-haptisches Verhältnis zum System. Dies kann aus ästhetischen oder technischen Gründen nicht erwünscht sein. Es war daher ein Interface zu entwickeln, dass eine berührungslose Steuerung eines Parameters erlaubt. Ein solches Steuerinterface muß

  • automatisch festellen, ob es gerade benutzt wird
  • verläßlich den gesteuerten Parameter zurückgeben

Auch soll die Erscheinung des Interfaces sozusagen ``berührungslos'' sein, und die Benutzerin nicht in der Rezension beeinträchtigen.

Auf die Verwendung von Bilderkennung wurde in diesem Zusammenhang verzichtet, da sie einerseits rechenintensiv ist, andererseits von Parametern wie guter Ausleuchtung und kontrastreichen Bildern abhängig ist, die vor allem bei Klanginstallationen (dunkle Räume) nicht garantiert werden können.

das Theremin

Das ``Theremin'' 1 war (und ist) das erste Elektronische Musikinstrument der Geschichte, benannt nach seinem Erfinder Lew Termen.

Die Besonderheit des Theremins gegenüber anderen (herkömmlichen) Instrumenten ist, dass es nicht mechanisch-haptisch gesteurt wird, wie zum Beispiel durch Drücken einer Taste oder Streichen mit einem Bogen über eine Seite, sondern nur durch die Position (zum Beispiel einer Hand) relativ zu einem Fixpunkt im Raum (einer Antenne).

Dadurch ist das Theremin nicht nur als Musikinstrument interessant, sondern kann auch als Positionsdetektor (und in weiterer Folge als Bewegungsdetektor) verwendet werden. Tatsächlich hat es unter Stalin Pläne gegeben, die sowjetische Grenze mit Hilfe von Thereminen zu überwachen.

Herkömmliche Theremine verfügen über zwei orthogonale Antennen, wodurch sich unabhängig Lautstärke und Tonhöhe steuern lassen. Im Rahmen des ``berührungslosen Interfaces mit Theremin-Sensoren'' wurde allerdings mit fixer Lautstärke gearbeitet. Dadurch läßt sich sehr einfach feststellen, ob die Sensoren arbeiten (Signal über einem gewissen Pegel liegt an) oder nicht.

Hardware Technisch ist das Theremin ein Schwebungssummer, bei dem zwei hochfrequente Oszillatoren überlagert werden, wobei die Frequenz des einen Oszillators fix ist, während die Frequenz des anderen Oszillators über einen variablen Schwingkreis eingestellt werden kann. Die Kapazität des Schwingkreises wird dabei (teilweise) von Antenne und Spieler gebildet. Durch den Abstand von Antenne zur Spielerhand kann diese Kapazität verändert werden, wodurch sich die Resonanzfrequenz des Schwingkreises ändert.

Ansatz

Frequenz->Entfernung

Die Resonanzfrequenz eines passiven Schwingkreises kann angenähert werden mit

\begin{displaymath}
f_R = {1\over\sqrt{LC}}
\end{displaymath} (1)

Für Kugelkondensatoren gilt idealerweise

\begin{displaymath}
C = 4\pi\varepsilon{R_1R_2\over R_1+R_2} = k{r\over r+\gamma}
\end{displaymath} (2)

Der Schwebungssummer bildet die Differenzfrequenz der beiden Schwingkreise


\begin{displaymath}
f = f_0 - k_1 \sqrt{r+\gamma\over r}
\end{displaymath} (3)

Ein Kugelkondensator nähert das tatsächliche Verhalten eines Theremins nur an. Mangels einer geschlossenen Lösung lassen sich die obigen Gleichungen vereinfachen zu:


$\displaystyle f$ $\textstyle =$ $\displaystyle f_0- {\alpha r\over1+\beta r}$ (4)
$\displaystyle r$ $\textstyle =$ $\displaystyle -{(f-f_0)\over\alpha+\beta(f-f_0)}$ (5)

Jeder Entfernung von der Antenne kann also eindeutig eine Frequenz zugeordnet werden und umgekehrt.

Die Faktoren $\alpha$ und $\beta$ können berechnet werden, indem man die Frequenzen $f_1$ und $f_2$ an zwei bekannten Punkten (Abstände $d_1$ und $d_2$ ) mißt. Ist auch $f_0$ unbekannt, so ist noch eine dritte Messung erforderlich.

Figure: Entfernung->Frequenz (idealisiert)
\includegraphics[scale=0.7]{r2f.eps}


$\displaystyle \beta$ $\textstyle =$ $\displaystyle {1 \over f_2-f_1} \Bigl({f_1-f_0\over d_1} - {f_2-f_0\over d_2}\Bigr)$ (6)
$\displaystyle \alpha$ $\textstyle =$ $\displaystyle (\beta + 1/d_1)(f_0-f_1)$  
  $\textstyle =$ $\displaystyle (\beta + 1/d_2)(f_0-f_2)$ (7)

In der Praxis ist es im Allgemeinen problematisch ``große'' Entfernungen zu detektieren, da die Frequenzänderung mit der Entfernung sehr klein wird.

Frequenzmessung Der Tongenerator eines Theremins ist als Schwebungssummer ausgeführt. Neben dem hörbaren tieffrequenten Anteil $f_0-f_{\rm var}$ , treten dabei auch hochfrequente Anteile $f_0$ und $f_{\rm var}$ in der Größenordnung von einigen 100 kHz auf.

Diese hohen Frequenzanteile werden bei der analog-digital Konversion herausgefiltert und stören daher das digital vorliegende Signal nicht.

Auftretende Seitenschwingungen sind so gering, dass die Frequenz des Oszillators mit einem einfachen Nulldurchgangsdetektor ermittelt werden kann.


\begin{displaymath}
f = {f_{\rm SR}\over n_{\rm samples}}
\end{displaymath} (8)


Entfernung->Position
Durch die Messung der Frequenz kann also der Abstand eines Körpers von der Antenne gemessen werden. Mißt man die Entfernung von zwei Fixpunkten, so kann daraus die Position des Körpers (im 2D-Fall) berechnet werden.

Die Position $(x, y)$ berechnet sich aus den Abständen $r_1$ und $r_2$ von den Antennen auf $(-x_1, 0)$ und $(+x_1, 0)$ mit

$\displaystyle x$ $\textstyle =$ $\displaystyle {r_2^2-r_1^2\over 4x_1}$ (9)
$\displaystyle y$ $\textstyle =$ $\displaystyle \pm\sqrt{r_1^2-(x-x_1)^2}$ (10)
  $\textstyle =$ $\displaystyle \pm\sqrt{r_2^2-(x-x_2)^2}$ (11)

Die y-Position ist also nicht eindeutig, da dass Vorzeichen nicht bestimmt werden kann.

Figure: Entfernung->Position
\includegraphics[scale=0.35]{d2p.eps}

Theoretisch kann also mit zwei Sensoren die Position eines Objektes (einer Hand) in einer Ebene bis auf ein Vorzeichen bestimmt werden.

Einschränkungen in der Praxis Durch konstruktive Maßnahmen (geerdete Abschirmung) läßt sich die Empfindlichkeit der Theremine von ``hinten'' (also der dem gegenüberliegenden Theremin abgewandten Seite) minimieren. Durch diese Richtcharakteristik läßt sich der Einfluss der Abstände zu den Antennen auf die Positionsberechnung linearisieren. Dadurch gilt :
\begin{displaymath}
D = d_A + d_B = 2x_1 \equiv {\rm const.}
\end{displaymath} (12)

Da die Frequenzänderung bei größeren Entfernungen sehr klein wird, kann es unmöglich sein, über den gesamten Bereich zwischen zwei Sensoren von beiden Sensoren verläßliche Daten zu erhalten.

Da kleine Entfernungen verläßlicher detektiert werden, ist es sinnvoll, die genauere (kleinere) Entfernung stärker in die Positionsberechnung einfließen zu lassen.


$\displaystyle d_A < d_B:$ $\textstyle d' =$ $\displaystyle d_A\bigl(2-{d_A+d_B\over D}\bigr)$ (13)
$\displaystyle d_A > d_B:$ $\textstyle d'' =$ $\displaystyle D-d_B\bigl(2-{d_A+d_B\over D}\bigr)$ (14)

Gilt Gl. ( 12 ), so ist $d' \equiv d''$ . Im Allgemeinen gilt jedoch Gl. ( 12 ) nicht, und $d'$ bzw. $d''$ liefert jeweils die bessere Näherung an das Ergebnis.

Problematisch ist hier nur der Übergang von $d'$ auf $d''$ , da er bei großen Meßfehlern nicht stetig verlaufen muss und die Position daher springen kann.

Durch Interpolation zwischen den $d'$ und $d''$ über ein Übergangsstück $\Delta$ , läßt sich diese Unstetigkeit beseitigen.


\begin{displaymath}
\delta = {d_A - d_B \over \Delta}
\end{displaymath} (15)

Wird $\delta$ auf $-1\le\delta\le+1$ begrenzt, so ergibt sich die interpolierte Position als
\begin{displaymath}
d = {d' + d'' \over 2} + \delta{d' - d'' \over 2}
\end{displaymath} (16)


Aufstellung der Theremine

Zwei Theremine werden ``genügend nahe'' nebeneinander an den Positionen A und B aufgestellt. ``Genügend nahe'' bedeutet, dass, wenn sich eine Hand an Position B um den geringsten noch zu detektierenden Betrag bewegt, die Frequenz an Position A sich um mindestens $\Delta f_A > 10$ Hz ändern muss.

``Genügend nahe'' ist also stark von der gewünschten Positionsauflösung und den verwendeten Thereminsensoren abhängig.


Realisierung thermenface
(s. Abb. 3 )

Das thermenface liest die ersten beiden Kanäle der Soundkarte und interpretiert sie als die von den beiden Thereminsensoren generierten Signale.

Figure 3: thermenface
\includegraphics[scale=0.7]{thermenface.eps}

Temperaturdrift und andere Störfaktoren

hermodrift Theremine sind stark temperaturabhängig. Dadurch behalten die nach Gl. ( 6 , 7 ) gewonnen Faktoren nur eine relativ kurze Zeit ihre Gültigkeit, danach müssen neue Messungen durchgeführt und daraus neue Faktoren gewonnen werden.

Im Allgemeinen kann man jedoch nicht fortwährend Calibrierungs-Messungen durchführen. Es ist daher notwendig, durch automatische Calibrierungsroutinen immer aktuelle Faktoren $\alpha$ und $\beta$ zu berechnen.


Frequenzmessung getfrequency
(s. Abb. 4 )

Der Patch getfrequency führt die Frequenzmessung für einen Kanal durch. Jedesmal, wenn er an seinem Eingang getriggert wird, gibt er eine Liste aus, die die Frequenz $f$ des Signales und die Differenz $\vert f-f_\infty\vert$ zur Ruhefrequenz enthält. Die Ruhefrequenz $f_\infty$ ist jene Frequenz, die generiert wird, wenn sich keine Hand in der Nähe der Theremine befindet (die Hand also ``unendlich weit'' entfernt ist).

Figure 4: getfrequency
\includegraphics[scale=0.7]{getfrequency.eps}

Dem Patch werden zwei Argumente übergeben:

  1. <snd_channel>: der Kanal der Soundkarte, von dem gelesen werden soll
  2. <theremin-id>: der ``Name'' des Theremins
Jedes Theremin benötigt einen eigenen Namen und einen eigenen Kanal auf der Soundkarte.


getfreq
(s. Abb. 5 a)

Hier wird die eigentliche Frequenzmessung durchgeführt.

Figure 5: Elemente von getfrequency
\includegraphics[scale=0.7]{getfreq.eps} \includegraphics[scale=0.7]{driftguard.eps}
(a) getfreq (b) driftguard

Zuerst wird in einem Hochpass ein allfälliger Gleichspannungsanteil entfernt. Mit dfreq~ wird durch Nullstellendetektion eine Grundfrequenzmessung durchgeführt, deren Ergebnis gemittelt wird. Nur wenn der Pegel des Eingangssignales höher als ein Schwellwert (default=60) ist, wird das Ergebnis über den Outlet ausgegeben.


driftguard
(s. Abb. 5 b)

Da Thereminsensoren einer starken Temperaturdrift unterworfen sind, wird hier versucht, diese zu detektieren. Dazu wird die Ruhefrequenz $f_\infty$ beobachtet.

driftguard detektiert $f_\infty$ auf zwei verschiedene Arten:

  • watch lowest: Durch das indirekt-proportionale Verhältnis von Frequenz und Entfernung ist $f_\infty=f(r=\infty) = f_{\rm min}$ . Unterschreitet die aktuelle Frequenz $f$ die bisherige $f_\infty$ , so wird $f_\infty = f$ . Danach wird $f_\infty$ langsam wieder exponentiell inkremeniert.

  • watch change: Bei großen Temperaturdriften der Frequenz nach oben, könnte es zu lange dauern, bis die obengenannte Methode sich auf die tatsächliche $f_\infty$ einstellt. Daher wird zusätzlich die Frequenzänderung beobachtet. Bleibt $\Delta f = \vert f(n)-f(n-1)\vert$ eine genügend lange Zeit finf_time (in Sekunden) durchgehend unter einem Schwellwert delta_finf, so wird ein Mittelwert als neue Ruhefrequenz $f_\infty$ eingestellt.

driftguard gibt eine Liste aus, die neben der aktuellen Frequenz auch die Differenz $\vert f-f_\infty\vert$ und die Ruhefrequenz $f_\infty$ enthält.


automatische Kalibrierung autocalibrate
(s. Abb. 6 )

Durch die Temperaturdrift ist es notwendig, die Koeffizienten $\alpha$ und $\beta$ immer wieder zu aktualisieren.

Greift man bei einem Theremin direkt auf die Antenne, so geht die Frequenz $f\rightarrow f_0$ . So hohe Frequenzen können jedoch nicht in die digitale Domäne überführt werden (zumindest nicht bei herkömmlichen Audioabtastraten von $f_{\rm SR} \le 96$ kHz). Durch geeignete Abschirmung der Antennte kann es aber unmöglich gemacht werden, direkt die Antenne zu berühren und die maximal generierte Frequenz auf unter 20kHz zu begrenzen.

Die maximale Frequenz $f_{\rm max}$ tritt dann auf, wenn die Benutzerin ihre Hand in minimalem Abstand $d_{\rm min}$ von der Antenne positioniert.

Figure 6: autocalibrate
\includegraphics[scale=0.7]{autocalibrate.eps}


autocal
(s. Abb. 7 (a))

Die Ausgangsfrequenz des Theremins wird beobachtet und ihr Maximal- und Minimalwert ermittelt. $f_1=f_{\rm max}$ wird dem Minimalabstand $d_{\rm min}$ zugeordnet. Der Wert $f_{\rm max}$ nimmt exponentiell ab, so nicht eine neue Maximalfrequenz eingelesen wird.

Figure 7: autocal
\includegraphics[scale=0.7]{autocal.eps} \includegraphics[scale=0.7]{cal-minmax.eps}
(a) autocal (b) pd get-minmax-frequency

Der gemessene Minimalewert wird um ``ein bisschen'' (um den Skalierungsfaktor fmin_faktor) vergrößert, sodass $f_{\rm min}$ nicht mehr gleich der Ruhefrequenz (mit $d=\infty$ ) ist, sondern eher dem ``Maximal'' 2 -Abstand $d_{\rm max}$ entspricht. Der Wert $f_{\rm min}$ nimmt exponentiell zu, so nicht eine neue Minimalfrequenz eingelesen wird. (s. Abb. 7 (b) und 8 )

Durch Beobachtung der Grundfrequenz des Signales lassen sich also Schätzwerte für $f_{\rm max}=f(d=d_{\rm min})$ und $f_{\rm min}=f(d=d_{\rm max})$ bestimmen. Ändern sich diese ``Kalibrierugsfrequenzen'', so werden nach Gl. ( 6 , 7 ) in calccoeff neue Faktoren berechnet. Diese werden über cal_coeff zum Objekt f2d geschickt, wo die Frequenz->Entfernungs-Transformation durchgeführt wird.

Figure 8: Elemente von autocal
\includegraphics[scale=0.7]{newmin.eps} \includegraphics[scale=0.7]{newmax.eps}
(a) newmin (b) newmax


Positionsberechnung getdistance
(s. Abb. 9 )

Es muss zuerst überprüft werden, ob überhaupt eine Hand im Bereich der Sensoren detektiert wird, und ob sie sich in einer ``sinnvollen'' Position 3 befindet.

Figure 9: getdistance
\includegraphics[scale=0.7]{getdistance.eps}

Sollte dies der Fall sein, so wird eine Liste ausgegeben, die die Handposition und ein gesetztes valid-flag beinhaltet. Wird keine Hand innerhalb des Gültigkeitsbereiches detektiert, so wird das valid-flag auf 0 zurückgesetzt, und mit der letzten gültigen Position ausgegeben.


checkhand
(s. Abb. 10 (a))

Beinflusst keine Hand die Thereminsensoren, so liefern beide Sensoren ein Signal mit der jeweiligen Ruhefrequenz $f_{\infty A,B}$ 4 .

Übersteigt die Differenz zwischen berechneter Ruhefrequenz (s. 5.1.2 ) und tatsächlich gemessener Frequenz einen Schwellewert delta_finf , so wird angenommen, dass eine Hand detektiert wurde.

Am ersten Outlet wird eine Liste mit den beiden Thereminfrequenzen ausgegeben, am zweiten Outlet wird angezeigt, ob eine Hand detektiert worden ist.

Figure: Überprüfungselemente von getdistance
\includegraphics[scale=0.7]{checkhand.eps} \includegraphics[scale=0.7]{checkvalidist.eps}
(a) checkhand (b) checkvalidist


f2d
(s. Abb. 11 (a))

Nach Gl. ( 5 ) wird hier mit den in autocal gewonnen Faktoren die Frequenz->Entfernungs-Transformation vorgenommen.

Liegt keine gültige Frequenz an (f=0), so wird 0 ausgegeben.

Figure 11: Elemente von getdistance
\includegraphics[scale=0.7]{f2d.eps} \includegraphics[scale=0.7]{dist2coord.eps}
(a) f2d (b) dist2coord


checkvalidist
(s. Abb. 10 (b))

Hier wird überprüft ,ob die mit f2d (s. 5.3.2 ) gewonnene Entfernung innerhalb des Gültigkeitsbereiches liegt. Es wird ein korrigierter, also auf den Gültigkeitsbereich begrenzter Wert ausgegeben, und ein valid-flag am zweiten Outlet gesetzt.


dist2coord
(s. Abb. 11 (b))

Ist zumindest ein Theremin aktiv (also die detektierte Entfernung innerhalb des Gültigkeitsbereiches) so wird hier aus den beiden Entfernungen nach Gl. ( 13 - 16 ) die Handposition berechnet. Um von der tatsächlichen Aufstellung möglichst unabhängig zu sein, wird die Entfernung $D$ zwischen den beiden Sensoren herausgerechnet. Da durch die Mittelung (Gl. 16 ) nicht der volle Wertebereich zwischen -1 und +1 ausgeschöpft wird, kann der Wertebereich, den die gemessene Handposition annehmen kann, nötigenfalls mit einem Spreizungsfaktor spreizung aufgedehnt werden. Die endgültige Position wird jedenfalls auf den Bereich $-1\le x \le+1$ begrenzt.

Gegebenenfalls wird auch noch die Links-rechts-Orientierung umgedreht.

About this document ... thermenface
Ein berührungsloses Interface zur Steuerung von Langzeitinstallationen

This document was generated using the LaTeX2HTML translator Version 2K.1beta (1.48)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos , Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore , Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -split 0 -dir /Net/iem/Benutzer/zmoelnig/public_html/publications/thermenface theremin.tex

The translation was initiated by Johannes M Zmoelnig on 2001-10-17


Footnotes
... ``Theremin'' 1
auch ``Ätherophon'' oder ``Termenvox'' genannt
... ``Maximal'' 2
Maximal im Sinne von ``größtmöglicher Abstand, bei dem noch ein Frequenzänderung detektierbar ist''
... Position 3
``nicht sinnvolle'' Positionen sind
  • Abstände von Sensoren $< 0$ (durch Störungen, für die die berechneten Faktoren $\alpha$ und $\beta$ falsche Werte liefern)
  • Positionen außerhalb des erwünschten Bereiches
... $f_{\infty A,B}$ 4
Wobei im allgemeinen durch Bauteilstreuungen,...gilt
$f_{\infty A} \ne f_{\infty B}$

Johannes M Zmoelnig 2001-10-17

©  2000, zuletzt geändert am 17. Oktober 2001.

Winfried Ritsch , Thomas Musil , Johannes Zmölnig     type: Project    state: finished project     Date: 10.01.2001

Resources

 Title   Description 
thermenface_zmoelnig-Dateien  

Last modified 10.09.2004