Choir Rehearsal Print Out

Template that generates a clean, print-ready rehearsal order. Designed for simplicity and readability. Features: Alternating row shading for easy readability Songs displayed in dark blue for quick visual scanning Inline "Choir Tab" notation pulled from item notes Item descriptions and details displayed in a structured, pre-formatted style Configurable via simple Liquid variable toggles at the top of the file (show/hide BPM, key, arrangement name, lyrics, people, times, and more) Rehearsal time footer

Preview

Report Preview


  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
<!--
QUICK CUSTOMIZATION:

PLAN NOTE OPTIONS
{% assign print_plan_notes = false %}

PLAN ITEM OPTIONS
{% assign print_plan_items = true %}
{% assign print_plan_item_times = false %}
{% assign print_plan_item_length = false %}
{% assign print_song_key = false %}
{% assign print_arrangement_name = false %}
{% assign print_song_bpm = false %}
{% assign print_song_sequence = false %}
{% assign print_item_details = true %}

PLAN PEOPLE OPTIONS
{% assign print_plan_people = false %}

TIME OPTIONS
{% assign print_times = false %}
{% assign print_service_times = false %}
{% assign print_rehearsal_times = true %}
{% assign print_other_times = false %}

OTHER OPTIONS
{% assign force_page_break = false %}

LYRICS OPTIONS
{% assign print_lyrics = false %}
{% assign print_ccli_number = true %}
{% assign print_author = true %}
{% assign print_copyright = true %}
-->

<html>
<head>
<title>{{ plan.ministry.name }}:: {{ plan.dates }}</title>
<style>
* { font-family: Verdana, Arial, sans-serif; font-size: 10pt; margin:0; padding:0; box-sizing: border-box; }
body { margin: 0; padding: 10px; }

table#header { width: 100%; border: none; margin-bottom: 12px; }
table#header td { padding: 2px; vertical-align: top; }

.ministry_title { font-size: 26pt; font-weight: bold; text-align: center; border-bottom: dashed 1px black; padding-bottom: 4px; }
.plan_dates { text-align: center; font-weight: bold; font-size: 14pt; }
.series_title { text-align: right; font-size: 11pt; }

table#plan { 
    width: 100%; 
    border-top: solid 3px black; 
    border-bottom: solid 3px black; 
    border-collapse: collapse; 
}
table#plan th { 
    border-bottom: solid 2px black; 
    border-top: solid 2px black; 
    vertical-align: bottom; 
    padding: 6px 4px; 
    text-align: center;
}
table#plan td { 
    border-bottom: solid 1px #aaa; 
    padding: 6px 8px; 
    vertical-align: top; 
}
table#plan .header { 
    background-color: #DDEEFF; 
    color: black; 
    font-weight: bold; 
    padding: 8px; 
    font-size: 11pt;
}
table#plan .item { 
    padding: 8px 6px; 
}
table#plan .item_title { 
    font-weight: bold; 
    font-size: 11pt; 
}
table#plan .song { 
    color: darkblue; 
    /* NO italics */
}
table#plan .choir-tab {
    font-weight: bold;
    color: #444;
    text-align: right;
    white-space: nowrap;
    padding-left: 20px;
    font-size: 9.5pt;
}
table#plan .description { 
    font-size: 9pt; 
    white-space: pre-wrap; 
    font-style: normal; 
    margin: 4px 0 2px 0; 
    color: #333;
}
.details-indent {
    margin-left: 36px;
    font-size: 9pt;
    white-space: pre-wrap;
    font-style: normal;
    color: #444;
}
table#plan .odd { background-color: #f8f9fa; }
table#plan .even { background-color: #ffffff; }

H1, H2, H3 { margin: 0; padding: 0; text-align: center; }
</style>
</head>
<body>

<!-- HEADER -->
<table id="header">
<tr><td colspan="3" class="ministry_title">{{ plan.ministry.name }}</td></tr>
<tr>
    <td width="30%">{{ plan.plan_title }}</td>
    <td width="40%" class="plan_dates">{{ plan.dates }}</td>
    <td width="30%" class="series_title">{{ plan.series_title }}</td>
</tr>
</table>

<!-- MAIN PLAN TABLE -->
{% if print_plan_items == true %}
<table id="plan">
<tbody>
{% for item in plan.items %}
{% case item.item_type %}

{% when 'Header' %}
<tr style="page-break-after: avoid;">
    <td colspan="1" class="header">
        {{ item.title }}
    </td>
</tr>

{% else %}
<tr class="item {% cycle 'odd', 'even' %}">
    <td>
        <div style="display: flex; justify-content: space-between; align-items: baseline;">
            <span class="item_title {% if item.song %}song{% endif %}">{{ item.title }}</span>
            {% assign has_choir_tab = false %}
            {% for note in item.notes %}
                {% if note.category_name == "Choir Tab" %}
                    {% assign has_choir_tab = true %}
                    <span class="choir-tab">{{ note.note }}</span>
                {% endif %}
            {% endfor %}
            {% unless has_choir_tab %}
                <!-- optional fallback if needed -->
            {% endunless %}
        </div>

        {% if item.arrangement %}
            {% if print_arrangement_name %}<span style="font-size:9pt; color:#555;">{{ item.arrangement.name }}</span>{% endif %}
            {% if item.arrangement.music_key != "" and print_song_key %}<span style="font-size:9pt;"> in {{ item.arrangement.music_key }}</span>{% endif %}
        {% endif %}

        {% if item.description %}<pre class="description">{{ item.description }}</pre>{% endif %}
        {% if print_item_details and item.details %}<pre class="description details-indent">{{ item.details }}</pre>{% endif %}
    </td>
</tr>
{% endcase %}
{% endfor %}
</tbody>
</table>
{% endif %}

<!-- Optional rehearsal times reminder -->
{% if print_rehearsal_times and plan.rehearsal_times.size > 0 %}
<div style="margin-top: 20px; font-size: 10pt; color: #555;">
    <strong>Rehearsal:</strong> 
    {% for time in plan.rehearsal_times %}
        {{ time.starts_at | date: '%I:%M%p' | downcase }}{% unless forloop.last %}, {% endunless %}
    {% endfor %}
</div>
{% endif %}

</body>
</html>