2020-02-11 23:11:00 +00:00
|
|
|
int DPI = 1440;
|
|
|
|
//Change this to a DPI supported by your printer.
|
|
|
|
//
|
|
|
|
//Make sure to convert the generated "page_#.tif" files to the set DPI
|
|
|
|
//and print at 100% scale. By default, Processing will generate a file
|
|
|
|
//@ 72 DPI which may make the scaling math difficult. Use Preview, Photoshop
|
|
|
|
//or ImageMagick to convert the file to the DPI you set here.
|
|
|
|
|
|
|
|
String PITCH = "long"; // long, short //7.62, 7.605
|
|
|
|
String FORMAT = "16mm"; //16mm or super16
|
|
|
|
int PERFS = 1; //single (1) or double (2) perf film
|
|
|
|
float PAGE_W = 8.5; //page width in inches
|
|
|
|
float PAGE_H = 11.0; //page height in inches
|
|
|
|
float SAFE_W = .25; //safe area on each side of the page
|
|
|
|
float SAFE_H = .5; //safe area on top and bottom of page
|
|
|
|
|
|
|
|
//Change these to calibrate for printer stretch.
|
|
|
|
//Use either the total length markings in the bottom left or top right of the page
|
|
|
|
//to compare the desired length to the actual printed length OR use the
|
|
|
|
//10cm rulers on either axis to compare the printed length that should be 100mm.
|
|
|
|
//
|
|
|
|
//In the case that the printed ruler measures 101.5mm down, change the variable to:
|
|
|
|
//MAGIC_H_CORRECTION = 100 / 101.5; or desired length / printed length
|
|
|
|
//
|
|
|
|
//Once you have this fraction, you can confirm it with a second print of this file
|
|
|
|
//or then use it in the filmless_processing.pde sketch.
|
|
|
|
|
|
|
|
float MAGIC_H_CORRECTION = 1.0;
|
|
|
|
float MAGIC_W_CORRECTION = 1.0;
|
|
|
|
|
|
|
|
/** DON'T CHANGE THESE **/
|
|
|
|
|
|
|
|
float IN = 25.4;
|
|
|
|
float LONG_H = 7.62;
|
|
|
|
float SHORT_H = 7.605;
|
|
|
|
float STD16_W = 10.26; //0.413"
|
|
|
|
float STD16_H = 7.49; //0.295"
|
|
|
|
float SUPER16_W = 12.52; //0.492"
|
|
|
|
float SUPER16_H = 7.41; //0.292'
|
|
|
|
float PERF_W = 1.829;
|
|
|
|
float PERF_H = 1.27;
|
|
|
|
float DPMM = DPI / IN;
|
|
|
|
|
|
|
|
int SPACING = PITCH.equals("long") ? round(LONG_H * DPMM * MAGIC_H_CORRECTION) : round(SHORT_H * DPMM * MAGIC_H_CORRECTION);
|
|
|
|
int PAGE_W_PIXELS = ceil((PAGE_W - (SAFE_W * 2)) * DPI * MAGIC_W_CORRECTION);
|
|
|
|
int PAGE_H_PIXELS = ceil((PAGE_H - (SAFE_H * 2)) * DPI * MAGIC_H_CORRECTION);
|
|
|
|
int FRAME_W = FORMAT.equals("super16") ? round(SUPER16_W * DPMM * MAGIC_W_CORRECTION) : round(STD16_W * DPMM * MAGIC_W_CORRECTION);
|
|
|
|
int FRAME_H = FORMAT.equals("super16") ? round(SUPER16_H * DPMM * MAGIC_H_CORRECTION) : round(STD16_H * DPMM * MAGIC_H_CORRECTION);
|
|
|
|
int LEFT_PAD = round(((16 - STD16_W) / 2) * DPMM * MAGIC_W_CORRECTION); //space to left of frame
|
|
|
|
int COLUMNS = floor(PAGE_W_PIXELS / (16 * DPMM));
|
|
|
|
int ROWS = floor(PAGE_H_PIXELS / SPACING);
|
|
|
|
int FRAME_LINE = round((SPACING - FRAME_H) / 2);
|
2020-02-12 19:52:24 +00:00
|
|
|
int FONT_SIZE = ceil(DPI / 24);
|
2020-02-11 23:11:00 +00:00
|
|
|
|
|
|
|
PGraphics page;
|
|
|
|
|
|
|
|
void printInfo() {
|
|
|
|
println("PAGE SIZE: " + PAGE_W_PIXELS + "x" + PAGE_H_PIXELS);
|
|
|
|
println("FRAME SIZE: " + FRAME_W + "x" + FRAME_H);
|
|
|
|
println("FRAMES PER STRIP: " + ROWS);
|
|
|
|
println("STRIPS PER PAGE: " + COLUMNS);
|
|
|
|
println("FRAMES PER PAGE: " + (ROWS * COLUMNS));
|
|
|
|
|
|
|
|
println("CALIBRATION W (MM): " + (16 * COLUMNS));
|
|
|
|
println("CALIBRATION H (MM): " + (ROWS * (SPACING / DPMM)));
|
|
|
|
|
|
|
|
println("SOUNDTRACK SAMPLE RATE: " + (SPACING * 24));
|
|
|
|
}
|
|
|
|
|
|
|
|
void setup () {
|
|
|
|
printInfo();
|
|
|
|
page = createGraphics(PAGE_W_PIXELS, PAGE_H_PIXELS);
|
|
|
|
page.beginDraw();
|
|
|
|
page.background(255);
|
|
|
|
page.stroke(0);
|
|
|
|
page.fill(0);
|
2020-02-12 19:52:24 +00:00
|
|
|
page.textSize(FONT_SIZE);
|
2020-02-11 23:11:00 +00:00
|
|
|
float leftX = 20 * DPMM * MAGIC_W_CORRECTION;
|
|
|
|
float topY = 20 * DPMM * MAGIC_H_CORRECTION;
|
|
|
|
|
|
|
|
float mmX = DPMM * MAGIC_W_CORRECTION;
|
|
|
|
float mmY = DPMM * MAGIC_H_CORRECTION;
|
|
|
|
|
|
|
|
float cmX = 10 * mmX;
|
|
|
|
float cmY = 10 * mmY;
|
|
|
|
|
|
|
|
//Draw 10cm rulers to compare
|
|
|
|
page.line(0, topY, 0, topY + (cmY * 10));
|
|
|
|
page.line(leftX, 0, leftX + (cmX * 10), 0);
|
|
|
|
|
|
|
|
int len;
|
|
|
|
for (int i = 0; i < 10; i++) {
|
2020-02-12 20:53:18 +00:00
|
|
|
page.text(i + "", 6 * mmX, topY + (cmY * i) + (FONT_SIZE / 2));
|
|
|
|
page.text(i + "", leftX + (cmX * i) - (FONT_SIZE / 4), 6 * mmY);
|
2020-02-11 23:11:00 +00:00
|
|
|
for (int m = 0; m < 10; m++) {
|
|
|
|
if (m == 0 || m == 5) {
|
|
|
|
len = 5;
|
|
|
|
} else {
|
|
|
|
len = 3;
|
|
|
|
}
|
|
|
|
page.line(0, topY + (cmY * i) + (m * mmY), len * mmX, topY + (cmY * i) + (m * mmY));
|
|
|
|
page.line(leftX + (cmX * i) + (m * mmX), 0, leftX + (cmX * i) + (m * mmX), len * mmY);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
page.line(0, topY + (cmY * 9) + (10 * mmY), 5 * mmX, topY + (cmY * 9) + (10 * mmY));
|
2020-02-12 20:53:18 +00:00
|
|
|
page.text(10 + "", 6 * mmX, topY + (cmY * 10) + (FONT_SIZE / 2));
|
2020-02-11 23:11:00 +00:00
|
|
|
|
|
|
|
page.line(leftX + (cmX * 9) + (10 * mmX), 0, leftX + (cmX * 9) + (10 * mmX), 5 * mmY);
|
2020-02-12 20:53:18 +00:00
|
|
|
page.text(10 + "", leftX + (cmX * 10) - (FONT_SIZE / 4), 6 * mmY);
|
2020-02-11 23:11:00 +00:00
|
|
|
|
|
|
|
page.noFill();
|
|
|
|
page.rect(0, 0, 10 * DPMM, 10 * DPMM);
|
|
|
|
page.rect(((16 * COLUMNS) * DPMM) - (10 * DPMM) - 1, 0, 10 * DPMM, 10 * DPMM);
|
|
|
|
page.rect(((16 * COLUMNS) * DPMM) - (10 * DPMM) - 1, ((ROWS * (SPACING / DPMM)) * DPMM) - (10 * DPMM) - 1, 10 * DPMM, 10 * DPMM);
|
|
|
|
page.rect(0, ((ROWS * (SPACING / DPMM)) * DPMM) - (10 * DPMM) - 1, 10 * DPMM, 10 * DPMM);
|
|
|
|
|
|
|
|
page.text((16 * COLUMNS) + "mm", ((16 * COLUMNS) * DPMM) - (10 * DPMM), 12 * DPMM);
|
2020-02-13 17:50:37 +00:00
|
|
|
page.text((ROWS * (SPACING / DPMM)) + "mm", 11 * DPMM, ((ROWS * (SPACING / DPMM)) * DPMM) - DPMM);
|
2020-02-11 23:11:00 +00:00
|
|
|
|
|
|
|
page.endDraw();
|
|
|
|
page.save("calibration_" + PAGE_W + "x" + PAGE_H + "_" + COLUMNS + "strips_" + ROWS + "frames_" + PITCH + "_" + DPI + "dpi.tif");
|
|
|
|
exit();
|
|
|
|
}
|