Draft with more images

This commit is contained in:
litter 2020-02-23 13:41:28 -05:00
parent e93e92583f
commit 7023424f5c
1 changed files with 30 additions and 18 deletions

View File

@ -2,9 +2,7 @@
Scripts and templates for making "filmless", cameraless analog films using free open-source software.
Building off of the [v2f](https://github.com/sixteenmillimeter/v2f) application for generating film-sized strips of images, this set of tools provides a pixel perfect accurate tool for building image sequences for printing and laser cutting into watchable 16mm film strips.
This is a collection of tools for printing and/or laser cutting non-film materials into 16mm-shaped strips of film. Use the Processing sketch to turn your video into valid scale 16mm images for printing on inkjet transparency or any kind of printable transparency sheets.
Building off of the [v2f](https://github.com/sixteenmillimeter/v2f) application for generating film-sized strips of images, this set of tools for building pixel-perfect image sequences for printing and laser cutting into viable 16mm film strips.
### [Download](https://github.com/sixteenmillimeter/filmless/archive/master.zip)
@ -14,33 +12,41 @@ This is a collection of tools for printing and/or laser cutting non-film materia
2. [Processing sketch for generating pages of film strips](#processing)
3. [Scripts for exporting video to image sequences](#scripts)
4. [Calibration](#calibration)
5. [Installation instructions for dependencies](#dependencies)
<a name="laser"></a>
## 1. Laser cutting templates
![Vellum laser cut into 16mm strips](docs/vellum.jpeg?raw=true "Vellum laser cut into 16mm strips")
![Vellum laser cut into 16mm strips](docs/vellum2.jpeg?raw=true "Vellum laser cut into 16mm strips")
The laser cutting templates can be used on their own and without the other components. Use them to cut non-film materials into shapes that can be used in analog film machines. If all you want to do is laser cut materials into film shapes, you're almost done reading.
The provided .svg and .dxf files can be opened in whichever application you use to control your laser cutter. With just these files you can cut twelve 33-frame strips of 16mm-sized film from any flat material that you can cut with your laser. Whether or not it will run through a projector depends on the material but at least you can cut it! This has been tried with paper, vellum, acetate and inkjet transparency film.
The provided [.svg](https://github.com/sixteenmillimeter/filmless/tree/master/svg) and [.dxf](https://github.com/sixteenmillimeter/filmless/tree/master/dxf) files can be opened in whichever application you use to control your laser cutter. With just these files you can cut twelve 33-frame strips of 16mm-sized film from any flat material that you can cut with your laser. Whether or not it will run through a projector depends on the material but at least you can cut it! This has been tried with paper, vellum, acetate and inkjet transparency film.
![16mm_film.scad in OpenSCAD](docs/openscad.png?raw=true "16mm_film.scad in OpenSCAD")
![Vellum closeup](docs/vellum.jpeg?raw=true "Vellum closeup")
![Acetate closeup](docs/acetate.jpeg?raw=true "Acetate closeup")
Using the provided [OpenSCAD](https://www.openscad.org/) file, `scad/16mm_film.scad`, you can generate .dxf or .svg files of your own dimensions. Build strips of any number of frames and generate any number of strips. Just change the variables `FRAMES` and `STRIPS` at the top of the file or use the new Customizer feature in the latest version of OpenSCAD. The default values are `FRAMES = 33` and `STRIPS = 12` which fits into a US Letter sized piece of paper (or inkjet transparency film).
![16mm_film.scad in OpenSCAD](docs/openscad.png?raw=true "16mm_film.scad in OpenSCAD")
For more advanced tweaks, you can change the `PITCH` variable from "long" to "short" to cut camera-sized short pitch film strips. You can also change the `PERFS` variable from "single" to "double" for generating double perforated film strips.
The "pitch" of the film refers to the distance between the perforations and varies between camera stocks and projection stocks. If you plan on contact printing your results from this process, it may make sense to you to use "short" pitch. If you plan on scanning, optical printing or projecting your results, "long" pitch may work best.
The "pitch" of the film refers to the distance between the perforations and it varies between camera stocks and projection stocks. If you plan on contact printing your results from this process, it may make sense to you to use "short" pitch (7.605mm). If you plan on scanning, optical printing or projecting your results, "long" pitch (7.62mm) may work best.
<a name="processing"></a>
## 2. A Processing sketch for generating pages of film strips
If you have installed Processing and the required libraries (read below) you can use this sketch to generate pages containing strips of 16mm-sized images from image sequences. Using the default settings, this will build a page of 12 strips, each 33 frames long that will comfortably fit on a letter-sized piece of 8.5" x 11" sheet of inkjet transparency film.
![Video converted to film strips](docs/video.jpeg "Video converted to film strips")
If you have installed Processing and the required libraries ([read below](#ffmpeg)) you can use this sketch to generate pages containing strips of 16mm-sized images from image sequences. Using the default settings, this will build a page of 12 strips, each 33 frames long that will comfortably fit on a letter-sized piece of 8.5" x 11" sheet of inkjet transparency film.
By including a path to a *mono* audio file, tested only with .wav files so far, this sketch will build an optical soundtrack facsimile using the [SoundtrackOptical](https://github.com/sixteenmillimeter/SoundtrackOptical) library for Processing and sit it in the correct area of the film strip.
The sketch can be modified to accommodate different desired output; generating Super16 filmstrips, inverting your image to negative or creating double-perf film strips. [Read more about setting the sketch variables below.](#variables)
![filmless_processing.pde Processing sketch](docs/processing.png?raw=true "filmless_processing.pde Processing sketch")
<a name="scripts"></a>
## 3. Scripts for exporting video to image sequences
@ -64,9 +70,14 @@ Then, to run the export script simply pass in a path to your video as the first
sh scripts/export.sh /path/to/my/video.mov
```
This will export the video in a .png sequence to a folder on your Desktop in a folder named "frames". This is the default directory that the `filmless_processing.pde` sketch will look for an image sequence. If your video contained any audio, it will be exported to a mono file named "audio.wav" in the "audio" folder now on your desktop. Otherwise you may see an error message in your terminal telling you that it couldn't find a stream. Oh well.
This will export the video in a .png sequence to a folder on your Desktop in a folder named "frames". This is the default directory that the `filmless_processing.pde` sketch will look for an image sequence. If your video contained any audio, it will be exported to a mono file named "audio.wav" in the "audio" folder now on your desktop. Otherwise you may see an error message in your terminal telling you that it couldn't find a stream. Not to worry.
You don't need to use this script to export your video to image sequences. You can use the application of choice to create your image sequences for the Processing sketch. This script simply lets you do that from the command line without opening up an NLE or media export program. You can even generate image sequences with other Processing sketches, thereby having a completely cameraless and **cough** filmless process for creating 16mm analog movies.
You don't need to use this script to export your video to image sequences. You can use the application of choice to create your image sequences for the Processing sketch. This script simply lets you do that from the command line without opening up an NLE or media export program.
You can alternately generate image sequences with other Processing sketches, thereby having a completely cameraless and **cough** filmless process for creating 16mm analog movies.
![Generative example from Processing sketch](docs/generative2.jpeg)
![Example from a GAN](docs/gan.jpeg)
Note: Processing can only read .tif files produced by the application itself, so unless you are using an image sequence generated by Processing save your files as .png or .jpeg. This
@ -97,11 +108,15 @@ Using long pitch film measurements and 1440 as our DPI. An inch is equal to 25.4
Reducing the sample rate to the maximum that this process can produce serves two purposes: it gives you the best quality soundtrack in the minimum amount of processing time and it allows you to preview some of the distortion that you will hear in your printed soundtrack. Higher frequencies are impossible and you can mix accordingly.
The value you can use will be output in both the `filmless_processing.pde` and `filmless_calibration.pde` sketches when you set your parameters, including your target DPI. [Read more about calibration](#calibration) below.
The value you can use for the soundtrack sample rate will be output in both the `filmless_processing.pde` and `filmless_calibration.pde` sketches when you set your parameters, including your target DPI. [Read more about the calibration sketch](#calibration) below.
### calibration.sh
This script requires [ImageMagick](https://imagemagick.org/index.php) and will convert the images output by the `filmless_calibration.pde` sketch to the correct DPI for accurate scale printing. Make sure to set the "DPI" variable of the script to the same value used in the sketch. Running it will convert any .png in the "filmless_calibration" directory to the desired DPI.
The default DPI of an image created by Processing is 72. Meanwhile, your printer is likely capable of printing at a much higher density. 600, 1200, 2880 or higher. When creating images meant for 1200 DPI but creating one that says it's only 72 DPI will create a nightmare when trying to print at "actual" size.
Use this script to change your calibration .png files to the same DPI used to generate them. Then, when printing, you'll be able to tell your printer to scale the image to 100% rather than some fractional percentage (`1200 / 72` for example).
This script requires [ImageMagick](https://imagemagick.org/index.php) and will convert the images output by the `filmless_calibration.pde` sketch to the correct DPI for accurate scale printing. Make sure to set the `DPI` variable of the script to the same value used in the sketch. Running it will convert any .png in the "filmless_calibration" directory to the desired DPI.
```bash
sh scripts/calibration.sh
@ -109,7 +124,7 @@ sh scripts/calibration.sh
### pages.sh
Similar to the calibration script, this will convert your output .tif files from `filmless_processing.pde` to the correct DPI.
Similar to the calibration script, this will convert your output .tif files from `filmless_processing.pde` to the correct DPI. Also set the `DPI` variable in this script to the one used in your Processing sketch. By default, this looks for files named `page_*.tif` on your Desktop.
<a name="calibration"></a>
#### 4. Calibration
@ -158,11 +173,7 @@ CALIBRATION H (MM): 251.45999
SOUNDTRACK SAMPLE RATE: 10368
```
## Hardware
* Laser cutter
* (optional) Printer
<a name="dependencies"></a>
## Dependencies
* [Processing](https://processing.org/) - [[Download](https://processing.org/download/)]
@ -207,6 +218,7 @@ yum install ffmpeg imagemagick
The scripts are tested on macOS and Linux, but can be converted to work with Windows operating systems with few edits. Check the install links above for the Windows executables for ffmpeg and ImageMagick. Happy to accept pull requests for updates to the bash scripts to support all operating systems.
------
<a name="variables"></a>
## Processing variables