DIY Electric Projector Masking


Active Member
Just finishing off a project I've wanted to do for a long time an electric masking system for my home cinema. I went for the biggest 16:9 screen I could which is 106" its about 1 inch clear on either side of the walls of the room. As I have virtually no space to play with on either side of the screen I went with two roller blind motors for 2 way horizontal masking, and as I watch lots of Scifi / films with subtitles I wanted separate control of each mask.

Well 9 Months after ordering the bits to build the control circuit its finally up and running. I need to finish off the sewing on the blinds and tidy up, but overall I'm extremely happy how it turned out. It feels like I had projector upgrade !

A friend has coded and built the electronics. The control is via a webpage which I'm accessing via my tablet this runs on custom coded Raspberry pi which controls the relays for each of the motors Its infinitely customisable, top and bottom rollers are separately controlled and adjustable. I may get around to IR / App control at some point

The masks enable me to watch Hateful 8 which is the widest format film I've encountered with no grey bars. Getting rid of the black bars which appear in most films really does help draw you into the film, I nearly have full devore coverage now.

I'll let the video do the talking - Excuse the quality its rather dark in here !
There is final tweaking to do, but the project is 95% complete, feels like one of best upgrades I ever did.

Updated with Pictures now:-


  • Full Screen.jpg
    Full Screen.jpg
    49.6 KB · Views: 1,431
  • Widescreen.jpg
    46.4 KB · Views: 1,481
  • Ultra Widescreen.jpg
    Ultra Widescreen.jpg
    42.4 KB · Views: 1,545
Last edited:


Active Member
A few shots of the build

I have a friend with an engineering company and he machined me up some brackets and bushes to allow the motors to fit and a spline inside the tube to allow the tube motors to spin the 40mm diameter alloy tubes. The tubes are cut to exactly fit to the width of the room.

The bottom mask is supported on either side by 550mm ball bearing drawer runners, I have an aluminium extrusion reinforced with wood for the bottom bar.

The bottom motor pulls down against tightly strung double bungy cord, so its under tension at the lowest setting and gradually pulls the mask up as the motor unwinds.

The top roller simply unwinds as a normal roller blind, I will be putting something in to guide it down nearer the screen.

The control box is a raspberry pi which drives some electronic wizardry and a bunch of relays to control the 240 volt motors.

Pictures below.


  • Mask 1.jpg
    Mask 1.jpg
    55.8 KB · Views: 1,575
  • Mask 2.jpg
    Mask 2.jpg
    73.1 KB · Views: 1,494
  • Mask 4.jpg
    Mask 4.jpg
    74.1 KB · Views: 1,618
  • Mask 3.jpg
    Mask 3.jpg
    66.2 KB · Views: 1,419
  • Mask 5.jpg
    Mask 5.jpg
    57.3 KB · Views: 1,450
  • Mask 8.JPG
    Mask 8.JPG
    37.7 KB · Views: 1,544
  • Mask 7.jpg
    Mask 7.jpg
    42.3 KB · Views: 1,482
  • Mask 6.jpg
    Mask 6.jpg
    75.2 KB · Views: 1,495
  • Mask 9.JPG
    Mask 9.JPG
    222.4 KB · Views: 2,278
Last edited:


Active Member
For any one interested here's a break down on the software and hardware controlling the masking.

* The electonics are run from a raspberry pi 3 built with Raspbian Jessie, which is running python2.7, mariadb and supervisor.
* There's a python flask app running on port 80 (unauthenticated because the port is locked down behind NAT on the internal router so security is not essential, I'm is aware of these considerations so will keep it safe)
* flask-sqlalchemy for mariadb connection (database used for storing programs; as well as relay lock flags to stop issues if concurrent users tried to trigger the rollers at the same time)
* supervisord controlling the flask app and ensuring it starts up. (Could have done a systemd unit but for the sake of simplicity if i needed to support Unreel over the phone etc. supervisord configs are easier.)

* The rpi GPIO pins connect to an 8channel relay board equivalent to
SainSmart 8 Channel DC 5V Relay Module for Arduino PIC ARM DSP AVR MSP430 TTL Logic 3D Printing, Arduino, Robotics | Sainsmart
* This relay board can handle 10A at 240v (more than enough for the rollers, which are fused at 3A) and use Optical Isolation (basically a light and an LDR in a single chip that acts as a switch, which means that there's no solid wire connection through) between the trigger pins and the relays themselves. This ensures that any surge on the rollers will not fry the Pi. Originally I built this with a relay/transistor/resistor combo to drive each relay but due to thrownback surges etc. this was scrapped for a prebuilt board with Optical isolation.
* The roller motors have 2 positive terminals (one for each direction) and one common ground. 3 SPDT relays are used for each roller. A main power relay (default off) splits it's output to 2 other relays both in default off position. One relay is for forward, one for reverse and will be turned on dependant on the direction. 6 relays in total with some splitting of wiring. A common ground and negative terminal is connected between both rollers. The roller speed is consistent so precise distance measurement can be achieved using time rather than sensors. The rollers have distance stops - i.e. a manual control which stops the motors from rolling in any direction too far. These were manually set when the rollers were installed.

When a roller is triggered to move the Python flask app spawns a multiprocessing thread:
* Either the forward or reverse roller lock is updated in the database (this ensures that only one relay can be triggered per-roller at once)
* The direction relay is opened (GPIO low for the relevant pin)
* Delay 0.1seconds to ensure manual trigger of direction relay
* The main power relay is opened (GPIO low for the pin)
* delay for length of programs
* Close main power relay for the roller
* Delay 0.1seconds
* Close direction relay
* remove lock from database
I'm not sure what would happen if both relays were opened together (forward and reverse), and I'm not prepared to find out.
Using the 2 relays set to off position ensures that any misfiring of the main power relay or directional relays cannot make a circuit on their own. A safety feature. 2 relays would need to be in the incorrect state to trigger a full circuit and this is less likely in case of fault.

* The web app is just a basic html page with javascript POSTing button clicks to the app which will run the relevant flask route and function.
* To set programs, buttons trigger JS to call a function which moves a roller either 0.5s or 0.1s and tracks the total time +/- each roller has moved. Saving it then stores the total runtime in the database for each roller.
* Running a program just triggers a multiprocessing thread for each roller for the total runtime saved on that program.
* Manual control also has the 0.5s or 0.1s buttons but will not store anything. Just moves the rollers precisely.
* To open the masking, a runtime of ~6seconds is sent to both rollers. This relies on the mechanical stops mentioned above to ensure the rollers don't overrun, but covers any placement of the roller either manually or from a program so always opens the masking completely.


Active Member
Awesome. Great job, and nice looking room by the looks of it. :)


Distinguished Member
@unreel - this is amazing. Well done and thanks for posting on here.

Is the masking material made from Devore? I notice from your video, that as the masking material slides into position (i.e. going from fullscreen to widescreen), the projected image doesn't show on the masking material (and only on the screen itself).

Also, do you have any issues with shadows being generated on the screen from the masking material? Certainly doesn't look like it from your video.

It's such a slick solution, very impressed. :)


Active Member
@unreel - this is amazing. Well done and thanks for posting on here.

Is the masking material made from Devore? I notice from your video, that as the masking material slides into position (i.e. going from fullscreen to widescreen), the projected image doesn't show on the masking material (and only on the screen itself).

Also, do you have any issues with shadows being generated on the screen from the masking material? Certainly doesn't look like it from your video.

It's such a slick solution, very impressed. :)

Hi yeah the masks are made from curtain blackout material and faced with Devore velvet. They really do absorb the projected image very well. I really struggle to see the status bar on playing films back on the PC !

The bottom mask is within 5-10mm of the screen material and casts no shadow. The top mask is just a basic roller and the mask rolls down in front of the screen. I haven't actually fixed any guide rails in yet, there is the tiniest of shadows, which would be fixed by guiding the top mask down closer to the screen. In real life when I have the mask down and actually watching a film this isn't actually noticeable, its more noticeable if I dropped the mask on a Windows desktop which I wouldn't actually do!.

If you have a fixed screen I'd highly recommend masking it. Everyone who's seen it in action has been impressed.


Active Member
Awesome unreel, really impressed! :clap: Way beyond my expertise as someone else mentioned. Just read your build thread as well, I'll comment on that one seperately.


Active Member
I'm a techhead and I would hesitate to try this. Respect.. Looks great. I opted for a manual mask using skirting covered with black out velvet cloth. Adjustable on the top and bottom. Basic but works well. I also did a few foot along the side walls. Pic looks narrow but it's just under 3m.

IWC Dopplel

Distinguished Member


Distinguished Member
Would anyone able able to help or sell me a system like this?


Active Member
After some interest from a few forum members here's are few screenshots showing the current setup

With all the different aspect ratios showing up on Netflix now I have even more aspect ratios setup.

I've also included the setup screens as well


  • Masking Main Screen.jpg
    Masking Main Screen.jpg
    159.2 KB · Views: 205
  • Masking Manual Adjust.jpg
    Masking Manual Adjust.jpg
    81.2 KB · Views: 176
  • Masking Programme.jpg
    Masking Programme.jpg
    155.6 KB · Views: 176
  • Masking New Programme.jpg
    Masking New Programme.jpg
    81.9 KB · Views: 177
Last edited:


Distinguished Member
i would also be interested in someone making a masking screen for me. Happy to pay handsomely.

I'm thinking maybe magnetic masking panels are the answer and then just 2 long bars of metal alonge the wall would be an easy compromise.


Standard Member
This is just AWESOME....

Nearly 8 years ago I built a DIY projector lift via inspiration from this forum and it is still going strong today... I actually found the thread I created with the details of how I put it together

I've also added pics of what it looks like today...

The masking of a fixed screen to do what you have done is something I've always thought about and would love to do it if I got the chance to do a new home theatre room. As luck would have it, we are in the process of selling our house so I might be getting the chance (granted it'll probably be a year away).

I've had a read of your thread and really seems very cool and I would be really keen to get more details from you of putting it together and I'd love to steal the code for the masking changes if that's possible.


  • Projector Up Front.jpg
    Projector Up Front.jpg
    167.5 KB · Views: 88
  • Projector Up Back.jpg
    Projector Up Back.jpg
    143.5 KB · Views: 81
  • Projector Down Front.jpg
    Projector Down Front.jpg
    154.1 KB · Views: 77
  • Projector Down Back.jpg
    Projector Down Back.jpg
    170.2 KB · Views: 77
  • Projector Lift.jpg
    Projector Lift.jpg
    123.6 KB · Views: 98

The latest video from AVForums

Podcast: Best Home Cinema Sources and B&W 805 D4 Speaker Review and more...
Subscribe to our YouTube channel

Latest News

StormAudio launches ISP Core 16 AV processor
  • By Andy Bassett
  • Published
Cabasse launches limited edition Pearl Pelegrina speaker
  • By Andy Bassett
  • Published
AVForums Podcast: 22nd September 2021
  • By Phil Hinton
  • Published
Creative introduces Sound Blaster Katana V2 soundbar
  • By Andy Bassett
  • Published
Audeze introduces reference LCD-5 planar magnetic headphones
  • By Andy Bassett
  • Published

Full fat HDMI teeshirts

Support AVForums with Patreon

Top Bottom