Adapt, Improvise, Overcome my people pleasing tendencies

Well, this project has turned out to be much more of a lesson in setting boundaries for myself and being honest about my intentions than I thought.

As is often the case in the creative industry, plans have changed, things have come up and let‘s just say luck also hasn‘t been on my side. The event I wanted to film has been moved a few times and unfortunately all of the dates which worked for the organizers were ones that didn‘t work for me. Also throw in some miscommunication and you can see how I ended up here, almost at the end of the semester with nothing filmed for my project yet and no possibility in sight to do so.

However, here comes the adapt and improvise part; I found a person to interview instead who has lived in a car-free settlement in Vienna for 20 years now. It‘s going to be a shorter and less extensive video than initially planned, but hopefully I‘ll still be able to hand something in I‘m somewhat satisfied with. I feel like my own expectations for the project were slightly different, but I have also adapted them fairly quickly to the new circumstances.

So far, so good. I‘m not doing to bad with the adapting and improvising. 

However, one thing I have realised throughout this process is that often times my adapting comes in the form of bending over backwards and harming myself in the fear of disappointing others. While my own expectations are quite flexible and readjusting constantly, what I really struggle with are the expectations of others.
In this case for example, I feel horrible for not managing to film at any of the planned events, even though I told the organisers I would. My head keeps telling me that I let these people down and that they are surely mad at me, even though, when looking at it rationally, I don‘t really owe them anything. I would have just collaborated with them, leading to a semester project for me and a nice video for them, talking about their cause. They have not had to go to great lengths to accommodate me, they are not losing any money because of me, I do not have a binding contract with them. So why do I feel like I disappointed them? I also feel like I let everyone down who I ever told about the project and that they‘re all going to be disappointed in me too.

Don‘t get me wrong, rationally I know that none of these things make sense, I know that people probably don‘t care as much about my shortcomings as I think they do.
Nonetheless I have this underlying desire to live up to everyone‘s expectations, to give everyone the version of myself they want to see and throughout the process I lose the version of myself who knows what I even want. 

One thing I have realized with this project is that I should listen to what my gut tells me. I have turned down opportunities to still film one of the events, simply because it felt too stressful for me and would have been a logistic nightmare. It wouldn‘t have been impossible, though. And I have realized that this is the point where I really struggle; as long as something would be somehow physically possible and would probably not kill me, I feel horrible for not doing it if it means letting somebody else down. I then come up with excuses I can tell myself and others for why it would in fact not be possible at all. 

But the whole time I know they are just excuses and that I could somehow manage to do it if I really wanted to, and I think everyone else knows that, too. So in the end I just feel ten times worse than if I had just been honest with myself from the beginning about my reasons for not doing something. 

Maybe being stressed out and overwhelmed by something sometimes is a valid reason. Maybe setting boundaries is okay. Maybe putting my own well-being first is completely valid. And maybe, just maybe, others would also appreciate it if I was just upfront about my reasons without hiding behind excuses. 

So, in a nutshell; I worry too much about letting others down and too little about what I need, I get myself into uncomfortable situations through my inability to say no, and I have to learn that constantly pleasing everyone is just not an option. 

Grind Down or Wind Down: Why Slowing Down Might be a Smarter Design Philosophy

In today’s “always on” design culture, productivity is king. We strive to fill every moment. Jam-packed sprints, brainstorming marathons, synchronous ideation sessions. If you don’t grind, you’re behind.
But what if this relentless pace is not fueling creativity, but smothering it?

Hustle Culture: a Creativity Crisis

Hustle Culture thrives on the belief that relentless striving equals success. In this mindset, being busy comes a virtue. But some research shows that this might be backfiring.
For instance, a Deloitte report (215) found that 77% of employees had experiences burnout at their current job. And research in cognititve psychology shows that chronic stress impairs key cognitive functions such as memory, decision-making, and creative thinking (McEwen & Sapoisky, 1995). Under pressure, the brain reverts to routine and risk-averse solutions. recisely the opposite of what creative work demands.

There is an apparent paradox at play: the harder we push for ideas, the less room we give them to surface.

Even in innovation-heavy workplaces, this reality is sinking in. Google’s “Search Inside Yourself” program incorporates mindfulness and reflection breaks into employee schedules. Arianna Huffington, who famously collapsed from exhaustion, founded and entire platform, Thrive Global, to advocate for well-being and balance. Why? Because rest isn’t the enemy of creativity. It’s often the source of it.

Creativity isn’t Constant. It Has a Rhythm

Creative output doesn’t follow a linear or constant trajectory. One well-supported theory in psychology is that creativity emerges from the interplay between focus and defocus, the so-called “dual-process model” of creative cognition (Sowden, Pringle, & Gabora, 2015).

Neuroscientist Marcus Raichle and colleagues discovered that the brain’s default mode network, which is active during idle moments, plays a significant role in ideation and problem-solving (Raichle et al., 2011). In other words: the brain doesn’t shut down during downtime. It reconfigures.

This is echoed by the classic four-stage model of creativity proposed by Wallas (1926):
1. Preparation: Immersion in the problem
2. Incubation: Stepping back or taking a break
3. Illumination: Sudden insight or “aha!” moment
4. Verification: refining and testing the idea
That quiet moment during a walk, in the shower, or while zoning out can become the birthplace of powerful ideas. It’s not laziness, it’s neurological efficiency.

Alternating Creative Current

IF we accept that the creative sweet spot lies in the tension between focus and reflection, how can we implement it into a design process?

  1. Alternate Focus and Pause
    Pretty simple, yet important to mention because often overlooked: incorporate regular 10-15minute low stimulation breaks. Not for scrolling but for the mind to rest.
  2. Ritualize Rest
    Normalize quiet moments. A “blank block” at the beginning of a meeting could prime the brain for originality, not just efficiency
  3. Mindful Transitions
    Deliberate shifts away from focus (by journaling, walking, breathing exercises, or similar) could help move from convergent to divergent thinking.

No matter how it will be implemented in the final design, we need to rethink what “productive time” looks like. The pause is not a distraction from the creative process but a necessary part of it. And it needs reiteration.

Is Busyness a Creative Delusion?

In my opinion, one of the most harmful assumptions in contemporary creative culture is that busyness equals progress. Corporate Design Agencies over-schedule, over-plan, and over-communicate, mistaking motion for meaning. But the cognitive processes on which creative thinking rests (associative processing, divergent thinking, insight, etc.) require something that busyness inherently denies: mental slack.

I already mentioned this in a previous blog post but I think it relevant to repeat that according to research by Baird et al. (2012), participants who were denied a chance to daydream were significantly outperformed by participants who did when it comes to creative problem-solving-challenges. The authors of that study concluded that mind wandering facilitates creative incubation, especially when daydreaming was done during a cognitively light task like washing dishes or copying a text.

This aligns with psychologist Mihaly Cyikszentmihalyi’s concept of psychic entropy, which posits that our minds need time to meander to restructure ideas and find novel assocaiations (Cyikszentmihalyi, 1996). When we’re constantly responding to emails, deadlines, or Slack notifications, there’s no room for that restructuring.

Towards a Balanced Design Ethos

If we want to deign to just with speed but with depth, we need a philosophical shift in how we understand our time. Instead of viewing reflective or idle moments as inefficiencies, they can be reframes as integral parts of the creative process.

This isn’t a romantization of laziness. It’s an invitation to reclaim cognitive space. Just as we respect physical ergonomics in design work, we should start advocating for mental ergonomics: structured time for wandering thought, non-goal-oriented exploration, and emotional detachment from constant outcomes.

Imagine a design team where unstructured time is built into the sprint cycle, or where “creative sabbaticals” of even just an afternoon are embedded into deadlines. These aren’t indulgences. They could be an essential practice grounded in cognitive science and supported by a growing body of research. And just like bodybuilders who schedule rests to gain optimal results it is time for creatives to do the same and to recognize the importance of mental offloading.

References:
Deloitte. (2015). Burnout survey: 77% of employees have experienced burnout at their current job. Retrieved from https://www2.deloitte.com/

Sowden, P. T., Pringle, A., & Gabora, L. (2015). The shifting sands of creative thinking: Connections to dual-process theory. Thinking & Reasoning, 21(1), 40–60. https://doi.org/10.1080/13546783.2014.885464

Wallas, G. (1926). The art of thought. New York: Harcourt, Brace.

Baird, B., Smallwood, J., Mrazek, M. D., Kam, J. W. Y., Franklin, M. S., & Schooler, J. W. (2012). Inspired by distraction: Mind wandering facilitates creative incubation. Psychological Science, 23(10), 1117–1122. https://doi.org/10.1177/0956797612446024

14 Adding encryption to Morse Arduino

After getting the Arduino to encode Morse messages and send them to a connected Max patch (see the last blogpost), I took the next step. So far, I built a way to create messages, and a way to transmit them, but not everyone was able to simply read and understand morse code, so the next step was obvious: build a way the messages could be read in clear text. The idea was simple: after every message got “sent”, the Arduino would take the Morse code string and convert it into readable text.

My first attempt was a long list of if statements, which worked, but I had hoped for an easier way to add and administrate different dot & dash combinations. Next I thought of using a switch statement to iterate through the combinations, but Arduino doesn’t support those, so I had to come up with a new idea. After searching on the internet, I came across a different solution, using arrays. So I rewrote it using arrays that mapped Morse code strings to letters. That gave me something that felt like a switch statement. It was now much cleaner, and easier to add custom combinations later.

Before:

After:

The decoding worked like this: one array was filled with all the Morse code symbols, and one with the matching letters. The code then iterated through the Morse message character by character, building a temporary substring that represented a single Morse symbol (like “.-” or “–“). Whenever it hit a slash (/), the program knew it had reached the end of one symbol. It then compared the collected substring to all entries in the Morse array. When it found a match, it took the corresponding index in the letter array to find the translation. That translated letter got added to the final decoded message string.

To figure out how many slashes were pressed, the code counted how many consecutive / characters appeared in the string. Each time it found a slash, it increased a counter. When a non-slash character came next (or the message ended), it used the number of counted slashes to determine the type of break:

  • One slash (/) meant a new letter started.
  • Two slashes (//) meant a new word started.
  • Three slashes (///) meant the start of a new sentence.
  • Four slashes (////) marked the end of the message. 

This system worked surprisingly well and gave me more control over formatting the final message. By using these simple separators, I could organise the output clearly and logically. Here is how the full print would look like with the translation.

The result? A very basic but fully functional Morse communication device: input, output, transmission, and now decoding. Currently it is just displaying the message in the serial monitor, but I plan to make the message be displayed on the LED Matrix, on the Arduino, that way the message is readable to the user immediately. I also read online, that an Arduino can be connected to a web server, so I will probably test that out, since this way I could create smart devices for my room on my own.

Instructions

If you wanted to try it out yourself, here was what you needed:

  • An Arduino (compatible with Modulinos)
  • The three button Modulino
  • The latest sketch with decoding logic (I could share this if you were interested)

Not a lot to do, except plugging in the three button Modulino and uploading this sketch:

#13 EXPERIMENT: Mixing Riso Colors & Hues

Mixing colors is for the advanced riso designs, so I challenged myself to try it out. 🙂

Useful links & resources:

If you are looking for more colors than the ones available in the FH FabLab, check out Risograd Graz located at Schaumbad. They have a nice collection of colors and art pieces to get inspired by.

In the following two pictures you can see a pink mountain scape and a duck floating in a swimming pool, which I created with the following tools: draw a vector illustration first in Adobe Fresco (iPad), import layers into Adobe Illustrator on your computer and safe it as a pdf. You can then adjust colors and have a preview in Spectrolite.

RISO GOLD

Also I tried the RISO color gold on different types of paper, because on white it looked dull and bownish. I did not want to give up on this special printing color and here are the beautiful results.

I think black, blue, red and brown paper turned out the best for printing with gold. 🙂

Resources

Mapping unterwegs: Eine Kirche auf Reisen zwischen Material, Ort und Bedeutung

Eine Kirche auf Reisen zwischen Material, Ort und Bedeutung

Nach einer kreativen Pause fiel es mir zunächst schwer, wieder in mein Mapping-Projekt einzutauchen. Die ursprüngliche Idee – ein Modell einer Kirche als Projektionsfläche für ein Videomapping zu verwenden – fühlte sich plötzlich nicht mehr stimmig an. Ich stellte infrage, ob die stark vereinfachte Form dieses Modells überhaupt das Potenzial für ein visuell ansprechendes Ergebnis bietet. Die Architektur schien mir zu reduziert, zu geometrisch starr, um die emotionale und atmosphärische Tiefe zu erzeugen, die ich anstrebe.

Statt das Projekt jedoch vollständig zu verwerfen, beschloss ich, einen Schritt zurückzutreten und nach alternativen Ansätzen zu suchen. Dabei passte ich die Grundidee des Konzeptes an – inspiriert von dem Künstler Philipp Frank, der seine Mappings häufig in der freien Natur umsetzt. 

Die Idee: Eine Kirche auf Wanderschaft

Die kleine Kirchenminiatur verlässt ihre gewohnte Umgebung und wird an verschiedenen Orten in und um Graz inszeniert – in der Natur, im Wald, auf dem Schlossberg oder an anderen atmosphärischen Plätzen. Dort soll sie mittels Projektion in wechselnden Texturen und Lichtstimmungen transformiert werden. Die Kirche als Objekt bleibt gleich, doch der Kontext – und damit ihre Wirkung – verändert sich.

Dieses Vorhaben stellte mich jedoch schnell vor technische Herausforderungen. Mein Mini-Beamer (Optoma ML750) benötigt 19 Volt bei mindestens 4,3 Ampere – deutlich mehr, als meine bisherigen mobilen Stromlösungen liefern konnten.

Um die Wirkung von Materialien und Oberflächen auf die Wahrnehmung von Architektur untersuchen zu können, wurden verschiedene Texturen – sowohl reale als auch fiktive – auf das Kirchenmodell gesetzt und gerendert.

Ich entwickelte ein einfaches Testkonzept, bei dem die Kirchenminiatur in Cinema 4D mit unterschiedlichen “Mood-skins” versehen wurde – eine Mischung aus prozeduralen Shadern und Material-Texturen, die verschiedene ästhetische Richtungen repräsentieren. Diese Kategorien reichten von:

  • Sci-Fi
  • dystopisch
  • psychoaktiv
  • farbenfroh
  • emotional dunkel
  • bis hin zu natürlichen Materialien wie Stoff, Pappe, Stein oder Kunststoff.

Ziel war es, visuell und atmosphärisch zu testen, wie unterschiedlich die Kirche je nach Materialbeschaffenheit wirkt – ohne die Architektur selbst zu verändern. Diese Test-Renderings sollen später Teil einer Animation werden, die sich in der Bewegung wiederholt, aber mit wechselnden Texturen versehen ist. So kann ich effizient verschiedene „Skins“ visualisieren, ohne jede Szene neu berechnen zu müssen.

Sound, Material und Atmosphäre

Im nächsten Schritt plane ich, die unterschiedlichen Materialwirkungen auch akustisch zu interpretieren. Jedes visuelle Setup soll eine eigene Soundästhetik erhalten – so wird das multisensorische Erlebnis verstärkt. Der Klang eines psychedelischen Settings unterscheidet sich schließlich grundlegend von jenem eines Holz- oder Betonlooks. Sobald die Texturen und Sounds definiert sind, beginne ich mit der Animation und finalen Vorbereitung für das Mapping – sei es mobil in der Natur oder stationär im Studio.

Literatursammlung zur Materialästhetik und Atmosphäre

Grundlagen & Inspiration

  1. Basics Materialität – Manfred Hegger u. a., Birkhäuser, 2014
    Standardwerk zur Materialität in der Architektur. Behandelt die subjektive Wirkung von Oberflächen, haptische Reize und kreativen Umgang mit klassischen Baustoffen wie Holz, Beton, Stein.
    degruyter.com
  2. Sculpting Emotions: The Intersection of Space, Material, and Architecture – Rachata P. Tantaweewong, 2022
    Wie Materialien Emotionen formen (Holz = Wärme, Beton = Stärke); räumliche Gestaltung als emotionaler Resonanzraum.
    academia.edu

Mini-Konzept: für weitere „Unmögliche Oberflächen“

Ziel:

Entwicklung und Erprobung von virtuellen Materialien, die starke Stimmungen hervorrufen – jenseits traditioneller Baumaterialien – und als „Mood-Skins“ experimentell auf eine Modellkirche projiziert werden.

KategorieMaterialideeAssoziation/WirkungMögliche Anwendung
Sci-Fi / DystopischChrom-membranisch, flüssiges MetallKünstlich, kühl, distanziertTechnik-Fetischismus, Entfremdung
Blutige Membran (halbtransparent, pulsierend)Organisch, verstörend, lebendigKörperassoziation, Opfer-Thematik
Nanopartikel mit leuchtenden FasernHochtechnologisch, surrealAlien-Architektur, KI-Ästhetik
Farbenfroh / EmotionalOpaleszierendes Glas mit IrisierungMagisch, hoffnungsvoll, sakralSpirituelle Momente, Lichterscheinung
Fluoreszierende Gel-OberflächeVerspielt, lebendig, fremdKindliches, Futurismus
Holografischer Stoff mit FarbverläufenFlüchtig, digital, vielschichtigTranshumanismus, digitale Utopien
Dunkel / PsychoaktivSchwarze, ölartige Oberfläche mit zitternder ReflexionBedrohlich, soghaftAlbtraumhaft, Angstzustände
Rissige Lava mit pulsierendem LeuchtenWut, Gewalt, DramatikApokalypse, Transformation
Spiegelmaterial mit verzerrter ReflexionIdentitätsverlust, InstabilitätSurreale Verzerrung, Selbstbildkritik

Prototyping XI: Image Extender – Image sonification tool for immersive perception of sounds from images and new creation possibilities

Smart Sound Selection: Modes and Filters

1. Modes: Random vs. Best Result

  • Best Result Mode (Quality-Focused)
    The system prioritizes sounds with the highest ratings and download counts, ensuring professional-grade audio quality. It progressively relaxes standards (e.g., from 4.0+ to 2.5+ ratings) if no perfect match is found, guaranteeing a usable sound for every tag.
  • Random Mode (Diverse Selection)
    In this mode, the tool ignores quality filters, returning the first valid sound for each tag. This is ideal for quick experiments or when unpredictability is desired or to be sure to achieve different results.

2. Filters: Rating vs. Downloads

Users can further refine searches with two filter preferences:

  • Rating > Downloads
    Favors sounds with the highest user ratings, even if they have fewer downloads. This prioritizes subjective quality (e.g., clean recordings, well-edited clips).
    Example: A rare, pristine “tiger growl” with a 4.8/5 rating might be chosen over a popular but noisy alternative.
  • Downloads > Rating
    Prioritizes widely downloaded sounds, which often indicate reliability or broad appeal. This is useful for finding “standard” effects (e.g., a typical phone ring).
    Example: A generic “clock tick” with 10,000 downloads might be selected over a niche, high-rated vintage clock sound.

If there would be no matching sound for the rating or download approach the system gets to the fallback and uses the hierarchy table privided to change for example maple into tree.

Intelligent Frequency Management

The audio engine now implements Bark Scale Filtering, which represents a significant improvement over the previous FFT peaks approach. By dividing the frequency spectrum into 25 critical bands spanning 20Hz to 20kHz, the system now precisely mirrors human hearing sensitivity. This psychoacoustic alignment enables more natural spectral adjustments that maintain perceptual balance while processing audio content.

For dynamic equalization, the system features adaptive EQ Activation that intelligently engages only during actual sound clashes. For instance, when two sounds compete at 570Hz, the EQ applies a precise -4.7dB reduction exclusively during the overlapping period.

o preserve audio quality, the system employs Conservative Processing principles. Frequency band reductions are strictly limited to a maximum of -6dB, preventing artificial-sounding results. Additionally, the use of wide Q values (1.0) ensures that EQ adjustments maintain the natural timbral characteristics of each sound source while effectively resolving masking issues.

These core upgrades collectively transform Image Extender’s mixing capabilities, enabling professional-grade audio results while maintaining the system’s generative and adaptive nature. The improvements are particularly noticeable in complex soundscapes containing multiple overlapping elements with competing frequency content.

Visualization for a better overview

The newly implemented Timeline Visualization provides unprecedented insight into the mixing process through an intuitive graphical representation.

2.8 Another Branding experience on an even bigger stage — UEFA EURO 2024

After reflecting on events like OFFF and OMR, I had the chance to witness branding at an entirely different scale: the UEFA EURO 2024 in Germany. This isn’t just another event — it’s one of the biggest sporting moments in Europe, and arguably one of the largest global stages for event branding and communication.

What sets the EURO apart is not just its scale, but the level of precision, planning, and professionalism behind every branded element. From the moment the host country was announced (back in 2018), everything started to take shape — because an event of this magnitude requires at least four years of preparation. And it shows.

Branding from A to Z

From fan zones to ticketing apps, from the uniforms of security staff to the media center signage — every detail was branded. The identity was everywhere and impossible to oversee:

  • City branding at train stations, airports, public transport, and streets
  • Clear signage systems in every stadium and public viewing area
  • Digital consistency across social media, streaming platforms, and ticket portals
  • Printed materials, volunteer uniforms, accreditation badges, media kits, merchandise, you name it
  • Barricades, fencing, and crowd guidance systems were branded to match the visual system
  • City-specific iconography that was visible across the whole city

The color palette, iconography, and typography were not just beautiful coordinated — they were functional, scalable, and consistent across every use case, screen size, and material.
The whole system was carefully crafted to maintain unity while allowing flexibility for city-specific adaptations.

Behind the Scenes: Volunteering at the Media Center

Working as a volunteer in the media center in Munich gave me valuable insight into the operational side of branding. The level of professionalism was striking — nothing was left to chance.

  • Volunteers received detailed brand and behavior guidelines
  • Strict specifications defined what could and could not be done visually or verbally
  • Every zone had purpose-built branded elements — even internal documents, staff areas, and press materials followed the visual identity
  • Coordinated communication ensured that everything — from lanyards to LED screens — aligned with the event identity

It was a masterclass in event branding and implementation, where every participant knew their role, every material matched the identity and nothing felt improvised. The responsible creative agency and UEFA’s brand team achieved an execution that felt effortless — but was clearly the result of intense planning and top-level design systems.

What I take from that:

EURO 2024 proved what’s possible when design, branding, and operations work hand in hand over a long period of time. Of course, the budget is on a completely different level than most cultural or design festivals — but what makes it so impressive is not just the money behind it, but the clarity and consistency of the creative vision.

Compared to OFFF or OMR UEFA takes branding to the systematic maximum. It’s not just visible — it’s invisible in its effectiveness, deeply embedded in every aspect of the visitor experience and lasting in the mind of everyone who will think of this tournament in the future.

Experiment IV: Embodied Resonance – plot HRV metrics with python

Before we can compare a “healthy” and a “clinical” heart, we first need a small tool-chain that does three things automatically:

  1. detects each normal-to-normal (NN) beat in a raw ECG trace,
  2. converts those beats into the core HRV metrics (HR, SDNN, RMSSD, VLF, LF, HF, LF/HF) and
  3. plots every curve on an interactive dashboard so that trends can be inspected side-by-side.

Because the long-term goal is a live installation (eventually driving MIDI or other real-time mappings), the script is written from the start in a sliding-window style: at every step it re-computes each metric over a moving chunk of data.
Fast-changing variables such as heart-rate itself can use short windows and small hops; spectral indices need at least a five-minute span to remain physiologically trustworthy. Shortening that span may make the curves look “lively,” but it also distorts the underlying autonomic picture and breaks any attempt to compare one participant with another. The code therefore lets the user set an independent window length and step size for the time-domain group and for the frequency-domain group.
Let’s take a closer look at the code. If you want to see the full, visit: https://github.com/ninaeba/EmbodiedResonance

1. Imports and global parameters

import argparse
import sys
from pathlib import Path

import numpy as np
import pandas as pd
import plotly.graph_objs as go
import scipy.signal as sg
import neurokit2 as nk
  • argparse – give the script a tiny command-line interface so we can point it at any raw ECG CSV.
  • NumPy / pandas – basic numeric work and table handling.
  • scipy.signal – classic DSP tools (Butterworth filter, Lomb–Scargle).
  • neurokit2 – robust, well-tested R-peak detector.
  • plotly – interactive plotting inside a browser/Notebook; easy zooming for visual QA.

2. Tunable experiment-wide constants

FS_ECG   = 500              # ECG sample-rate (Hz)
BP_ECG   = (0.5, 40)        # band-pass corner frequencies

TIME_WIN, TIME_STEP = 60.0, 1.0   # sliding window for HR / SDNN / RMSSD
FREQ_WIN, FREQ_STEP = 300.0, 30.0   # sliding window for VLF / LF / HF
FGRID = np.arange(0.003, 0.401, 0.001)

BANDS = dict(VLF=(.003, .04), LF=(.04, .15), HF=(.15, .40))
  • Butterworth 0.5–40 Hz is a widely used cardiology band-pass that suppresses baseline wander and high-frequency EMG, yet leaves the QRS complex untouched.
  • 60s time-domain window strikes a balance: long enough to tame noise, short enough for semi-real-time trend tracking.
  • 300s spectral window is deliberately longer; the literature shows that the lower bands (especially VLF) are unreliable below ~5 min.
  • FGRID – dense frequency grid (1 mHz spacing) for a smoother Lomb curve.

3. ECG helper class – load, (optionally) filter, detect R-peaks

class ECG:
def __init__(self, fs=FS_ECG, bp=BP_ECG, use_filter=True):
...
def load(self, fname: Path) -> np.ndarray:
...
def filt(self, sig):
...
def r_peaks(self, sig_f):
...
  1. load – reads the CSV into a flat float vector and sanity-checks that we have >10 s of data.
  2. filt – if the --nofilt flag is absent, applies a 4-th-order zero-phase Butterworth band-pass (via filtfilt) so that the baseline drift of slow breathing (or cable motion) does not trick the peak detector.
  3. r_peaks – delegates the hard work to neurokit2.ecg_process, which combines Pan-Tompkins-style amplitude heuristics with adaptive thresholds; returns index positions and their timing in seconds.

4. HRV class – sliding-window metric engine

class HRV:
...
def time_metrics(rr):
...
def lomb_bandpowers(self, rr, t_rr):
...
def time_series(self, r_t):
...
def freq_series(self, r_t):
...
def compute(self, r_t):
...
  • time_metrics converts every RR sub-series into three classic metrics
    HR (beats/min), SDNN (overall beat-to-beat spread, ms), RMSSD (short-term jitter, ms).
  • Why Lomb–Scargle instead of Welch?
    The RR intervals are unevenly spaced by definition.
    • Welch needs evenly sampled tachograms or heavy interpolation → can distort the spectrum.
    • Lomb operates directly on irregular timestamps, preserving low-frequency content even if breathing or motion momentarily speeds up/slows down the heart.
  • lomb_bandpowers:
    1. Runs scipy.signal.lombscargle on de-trended RR values.
    2. Integrates power inside canonical VLF / LF / HF bands.
    3. Computes LF/HF ratio, but guards against division by tiny HF values.
  • time_series / freq_series slide a window (120 s or 300 s) across the experiment, jump every 30 s, calculate metrics, and store the mid-window timestamp for plotting.
  • compute finally stitches time-domain and frequency-domain rows onto a 1-second master grid so that all curves overlay cleanly.

5. Tiny colour dictionary

COLORS = dict(HR='#d62728', SDNN='#2ca02c', RMSSD='#ff7f0e',
VLF='#1f77b4', LF='#17becf', HF='#bcbd22', LF_HF='#7f7f7f')

Just cosmetic – keeps HR red, SDNN green, etc., across all subjects so eyeballing becomes effortless.


6. plot() – interactive dashboard

def plot(ecg_f, hrv_df, fs=FS_ECG, title="HRV (Lomb)"):
...
  • Left y-axis = filtered ECG trace for QC (do peaks line up?).
  • Right y-axis = every HRV curve.
  • Built-in range-slider lets you scrub the 24-minute protocol quickly.
  • Hover shows exact numeric values (handy when you are screening anomalies).
  • different backgrounds for phases

7. CLI wrapper

if __name__ == '__main__':
main()

Inside main() we parse the file name and the --nofilt flag, run the whole pipeline, save the HRV table as a CSV sibling (same stem, suffix .hrv_lomb.csv) and open the Plotly window.


The four summary plots included below are therefore not an end-point but a launch-pad: they give us a quick visual fingerprint of each participant’s autonomic response, and will serve as the reference material for deeper statistical comparison, pattern-searching, and—ultimately—the data-to-sound (or other real-time) mappings we plan to build next.

Experiment III: Embodied Resonance – HRV Metrics and meaning

Heart-rate variability, or HRV, is the tiny, natural wobble in the time gap from one heartbeat to the next. It exists because two automatic “pedals” are always tugging at the heart. One pedal is the sympathetic system, the same chemistry that makes your pulse race when you are startled. The other pedal is the vagus-driven parasympathetic system, the brake that slows the heart each time you breathe out or settle into a chair. The more freely these pedals can trade places, the more variable those beat-to-beat spacings become. HRV is therefore a quick, non-invasive way to listen to how relaxed, alert, or exhausted the body is.

When we measure HRV we usually pull out a few headline numbers.

SDNN is the overall statistical spread of beat intervals during a slice of time, for example one minute. A wide spread means the heart is flexible and ready to react. A very narrow spread means the system is locked in one gear, as happens in chronic stress or heart failure.

RMSSD zooms in on the jump from one beat to the very next, averages those jumps, and reflects how strongly the vagus brake is speaking. During slow, deep breathing RMSSD grows larger; during mental tension or sleep deprivation it falls.

Frequency-domain measures treat the heartbeat trace like a piece of music and ask how loud each note is. Very-low-frequency power, or VLF, comes from extremely slow body rhythms such as hormone cycles and temperature regulation. Low-frequency power, or LF, sits in the middle and rises when the sympathetic pedal is pressed, for example in the first minute of exercise or during mental arithmetic. High-frequency power, or HF, sits exactly at breathing speed and is almost pure vagus activity: it swells during calm, diaphragmatic breathing and shrinks when breathing is shallow or hurried. A simple way to summarise the tug-of-war is the LF-to-HF ratio. When the sympathetic pedal dominates the ratio climbs; when the vagus brake dominates the ratio slides downward.

In a healthy, rested adult who is quietly seated the heart rate is steady but not rigid. SDNN and RMSSD show a modest but clear jitter, HF power pulses in step with the breath, LF is similar in size to HF, and the LF/HF ratio hovers around one or two. If the same person begins brisk walking heart rate rises, HF power fades, LF power grows, and the LF/HF ratio can shoot above five. During slow breathing meditation RMSSD and HF surge while LF/HF drops below one. In someone with chronic anxiety or PTSD the resting pattern is different: SDNN and RMSSD are low, HF is thin, LF/HF is already high before any task, and it climbs even higher during mild stress. The pattern can be even flatter in advanced heart disease, where both pedals are weak and total HRV is minimal.

Put simply, HRV lets us watch the nervous system’s soundtrack: fast notes reflect breathing and relaxation, mid-notes reflect alertness, and the overall volume tells us how much capacity the system still has in reserve.

The raw material for every HRV metric is the NN-interval sequence:
NNi is the time in seconds between two consecutive normal (sinus) beats.

SDNN is the standard deviation of that sequence.

SDNN = √[ Σ (NNi – NN̄)² / (N – 1) ]
Units are milliseconds because the intervals are expressed in ms. A resting, healthy adult who sits quietly will usually show an SDNN between roughly 30 ms and 50 ms. Endurance athletes can sit in the 60–90 ms range, while chronically stressed or cardiac patients may drift below 20 ms.

RMSSD focuses on the beat-to-beat jump and is dominated by parasympathetic (vagal) tone.

RMSSD = √[ Σ ( NNi – NNi-1 )² / (N – 1) ]
Again the unit is milliseconds. Typical resting values in a calm, healthy adult are about 25–40 ms. Slow breathing, a nap, or meditation can push it up toward 60 ms, whereas sustained mental effort, anxiety, sleep deprivation, or PTSD often pull it down below 15 ms.

Frequency-domain indices start from the same NN series but first convert it into a power-spectrum, most accurately with a Lomb–Scargle periodogram when the points are unevenly spaced:

P(f) = (1/2σ²) { [ Σ NNi cos ωi ]² / Σ cos² ωi + [ Σ NNi sin ωi ]² / Σ sin² ωi }
where ω = 2πf and f is scanned from 0.003 Hz upward.

Power is then integrated over preset bands and reported in ms² because it represents variance of the interval series per hertz.

Very-low-frequency power VLF integrates P(f) from 0.003 Hz to 0.04 Hz. In a healthy resting adult VLF is often 500–1500 ms². Because the mechanisms behind VLF (thermoregulation, hormones, renin-angiotensin cycle) change only slowly, values can drift greatly between individuals and between days.

Low-frequency power LF integrates P(f) from 0.04 Hz to 0.15 Hz. A quiet, healthy adult usually sits near 300–1200 ms². LF rises when the sympathetic accelerator is pressed, for example during the first few minutes of exercise or a stressful mental task.

High-frequency power HF integrates P(f) from 0.15 Hz to 0.40 Hz, exactly the normal breathing range. Calm diaphragmatic breathing drives HF toward 400–1200 ms², whereas rapid or shallow breathing in anxiety or hard exercise cuts HF sharply, sometimes below 100 ms².

LF/HF is the simple ratio LF ÷ HF. At rest a ratio near 1–2 suggests a balanced tug-of-war. If the ratio soars above 5 the sympathetic branch is clearly on top; if it falls below 0.5 the vagus brake is dominating (seen in deep meditation or in some fainting-prone individuals).

All of these numbers rise and fall in real time as the two branches of the autonomic nervous system jostle for control, so plotting them across the exercise-rest protocol lets us see how quickly and how strongly each person’s physiology reacts and recovers.

MetricUnitsWhat It Reflects (plain-language)Typical Resting Range in Healthy Adults*When It Runs High (what that often means)When It Runs Low (what that can signal)
Mean Heart Rate (HR)beats per minute (bpm)How fast the heart is beating on average50 – 80 bpmPhysical effort, fever, anxiety, dehydrationExcellent cardiovascular fitness, medications that slow the heart
SDNNmilliseconds (ms)Overall “spread” of beat-to-beat intervals—long-term autonomic flexibility40 – 60 msGood recovery, calm alertness, athletic conditioningChronic stress, heart disease, PTSD, over-fatigue
RMSSDmsVery short-term vagal (rest-and-digest) shifts from one beat to the next25 – 45 msDeep relaxed breathing, meditation, lying downSympathetic overdrive, poor sleep, depression
VLF Powerms²Very-slow oscillations (< 0.04 Hz) tied to long hormonal / thermoregulatory rhythms600 – 2000 ms²Possible inflammation, overtraining, sustained stress loadOften low in severe autonomic dysregulation
LF Powerms²“Middle-speed” swings (0.04–0.15 Hz) from blood-pressure reflex & controlled breathing (~6 breaths/min)600 – 2000 ms²Active mental effort, controlled slow breathing, standing upBlunted baroreflex, autonomic failure
HF Powerms²Fast vagal modulation (0.15–0.40 Hz) synchronized with normal breathing (3–9 breaths/min)500 – 1500 ms² (age-dependent)Relaxation, slow diaphragmatic breathing, lying downAnxiety, rapid shallow breathing, fatigue
LF/HF Ratio— (dimension-less)Balance of sympathetic “drive” (LF) vs vagal “brake” (HF)0.5 – 2.0Acute psychological stress, caffeine, upright postureExcess vagal tone, certain medications, autonomic failure

#12 EXPERIMENT: Breaking Patterns of Glass

Experimenting with the breaking patterns of Glass to expand my initial idea & moodboard from post #4.1

The setup in the FH’s Photo Studio:

  • 2 Softboxes
  • 1 black cardboard
  • 1 white Styrodur plate as a reflector
  • 1 hammer
  • 1 A4 engraved glass
  • 1 black sweater to cover reflections in the glass
  • 1 Manfrotto Tripod
  • Canon R6 MII + 85mm lens

IMPORTANT:

  • Polarizing filter
  • Cleaning wipes for glass
  • Glasreiniger
  • Helping hand of professor to smash the glass

Side note on shooting glass: A polarizing filter is a photographic filter that is typically used in front of a camera lens in order to reduce reflections which is extremely helpful in this setup.

The results after post production in LR: