---
title: Doorbell triggered Halloween window projection
canonical: https://0110.be/posts/Doorbell_triggered_Halloween_window_projection
markdown_url: https://0110.be/posts/Doorbell_triggered_Halloween_window_projection.md
id: 532
published_at: '2023-10-25T00:00:00Z'
updated_at: '2025-11-29T14:09:38Z'
author: Joren
tags:
- name: 0110.be
  markdown_url: https://0110.be/tags/0110.be.md
- name: UGent
  markdown_url: https://0110.be/tags/UGent.md
---

# Doorbell triggered Halloween window projection

<div style="float:right; min-width:22em; width:25%;margin-left:10px;margin-bottom:10px">
<center>
<img loading="lazy" src="https://0110.be/files/attachments/532/dalle-projection.jpeg" alt="Skull video projection" style="width:95%;box-shadow: 0 3px 5px rgba(0, 0, 0, 0.4);" ></img>
<small>Fig: *Door projection as imagined by DALL.E*.</small>
</center>
</div>

I did a thing, and, similar to most stuff made here, it is quite a bit of effort and rather pointless. In that sense, it is a bit like life itself. Anyhow, it seems that the Halloween tradition of trick-or-treating has found a strong foothold in mainland Europe. Due to social embeddedness, I prepared Halloween themed projection that responds to my door-bell. I have a glass door, which is ideal for scary projections. The idea is to have a continuous door projection but with a twist: when kids press the doorbell a projected ghost reacts and rushes towards them along with a loud ghostly scream.

This blog post details the technical setup with the intention to inspire similar projects and serve as documentation for next year. First we need a way react to the doorbell.

## Doorbell trigger setup

I sourced a couple of FSR (Force Sensitive Resistor)'s from a "sound book" that I had taken apart. Most of these sound books with e.g. animal sounds are meant for toddlers and have a some type of button and a small electronics circuit to make sound. Some of these books work with FSR 'buttons' which are similar in size to a doorbell. I took a single FSR from such a book.

I attached the FSR to a "Teensy LC" micro-controller with an additional resistor and put it in a small [3D-printed case](https://www.thingiverse.com/thing:4157853). The Teensy was programmed to emit a MIDI Note On event when the FSR/doorbell is pressed. A Note Off follows when the button is released. Once it is connected via USB to a computer it is essentially regarded as a digital piano with only a single key. Making a micro-controller pretend to be a standard MIDI device is very practical since the message passing protocol is standardized and well supported by many types of systems. MIDI is also optimized for low-latency communication. Via the Web MIDI API there is even support for MIDI in web browsers.

## Video projection

While software like Resolume allows for complex interactive video projections, my requirements are more modest: I need a continuous background video and I want the 'scare' video and audio to appear when the doorbell is triggered. I opted for a browser-based solution: multi-media capabilities, scripting and MIDI support are all present in modern browsers. Running things in a browser has advantages: there is no need for specialized software, it is easy to program, easy to run, relatively stable and future-proof. The proof-of-concept can be seen below. For the actual projection on a window or door you need to first cover the glass with a thin layer of white paper which lets most light through. A white paper tablecloth works well.

<center>
<iframe style="box-shadow: 0 3px 5px rgba(0, 0, 0, 0.4);border:none;width:100%;height:180px" src="https://0110.be/attachment/cors/2023.halloween/index.html" loading="lazy" >
</iframe>
<small>Demo: click the 'start video' to start the background video and click doorbell if you dare...</small>

</center>
The code is not much special and a bit hacky but can be found attached. The download includes the "html, javascript, css, video, audio and the micro-controller software for a doorbell-triggered projection".


![Teensy LC in a 3D printed case and FSR ](https://0110.be/files/photos/532/PXL_20231026_221212782.MP.webp)

![Schema for the setup](https://0110.be/files/photos/532/projection_schema.webp)
