Skip to content

Commit

Permalink
Merge pull request #27 from nai-kon/Aeolian_Duo-Art_Organ_176note
Browse files Browse the repository at this point in the history
Ver3.6.0
  • Loading branch information
nai-kon authored Dec 22, 2024
2 parents e981076 + 4a28ab2 commit fbdcf5c
Show file tree
Hide file tree
Showing 67 changed files with 1,485 additions and 231 deletions.
3 changes: 2 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
{
"cSpell.ignoreWords": [
"Colour",
"mido"
"mido",
"curtime"
],
"python.testing.pytestArgs": [
"test"
Expand Down
29 changes: 15 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
# PlaySK Piano Roll Reader Ver3.5
# PlaySK Piano Roll Reader Ver3.6

Optically reading a piano roll image, emulates expression and output midi signal in real-time.

![Overall System](./assets/Overall_System.webp)

The "virtual tracker bar" optically picks up roll holes then emulates note, pedal and expression code. The expression code is decoded to vacuum level (in inches of water) in real-time, then convert to MIDI velocity.
The "Virtual Tracker Bar" optically picks up roll holes then emulates note, pedal and expression code. The expression code is decoded to vacuum level (in inches of water) in real-time, then convert to MIDI velocity.

Currently, 9 virtual tracker bars are available.
- Aeolian 176-note Duo-Art Pipe Organ ([MIDI output assignment](https://playsk-aeolian176note-midi-assignment.pages.dev/))
- Standard 88-note
- Ampico B
- Duo-Art
- Welte-Mignon Licensee
- Welte-Mignon T-98 (Green)
- Welte-Mignon T-100 (Red)
- Welte-Mignon T-100 (Red) / T-98 (Green) / Licensee
- Philipps Duca (no expression. experimental)
- Recordo version A / B
- Artecho
Expand All @@ -21,9 +20,7 @@ Currently, 9 virtual tracker bars are available.

In the future, Ampico A will be supported.

Support image formats are `.cis`, `.jpg`, `.tif`, `.png`, `.bmp`.

`.cis` supports various scanners such as stepper, wheel/shaft encoder, bi-color, twin-array.
Support image formats are `.CIS`, `.jpg`, `.tif`, `.png`, `.bmp`. The `.CIS` supports various scanners such as stepper, wheel/shaft encoder, bi-color, twin-array.

## Demo

Expand All @@ -33,6 +30,9 @@ Support image formats are `.cis`, `.jpg`, `.tif`, `.png`, `.bmp`.
- Reading a Red Welte T-100 roll with Software Synthesizer
https://www.youtube.com/watch?v=WMEPW-UWhSU

- Reading an Aeolian 176-note Pipe Organ roll with Hauptwerk virtual organ
https://www.youtube.com/watch?v=N0Gm2g1ADjk

## Donation

I personally pay near $100 a year to codesign and notarize software for distribution. Your support greatly contributes to the continuous development and improvement of the Software. Please consider donating.
Expand All @@ -57,12 +57,13 @@ If you check `☑ Manual Expression`, you can express dynamics using the keyboar

## Tips
* The program picks up lighted holes of image.
* Automatically set the tempo if the input filename has the tempo keyword (except .cis)
* e.g.) `Ampico 52305 Clair de Lune tempo90.jpg` -> set the tempo to 90 automatically.
* If no keyword is given, the default tempo is set. 98 for the Welte T-100 and 80 for the others.
* Associate the program with .cis on right-click menu, you can run app by double-clicking .cis file.
* The roll acceleration emulating is done by spool diameter and roll thickness.
* The roll scrolling direction is downward. So the Welte T-100 image should be inverted.
* The vacuum level is emulated in inches of water and later converted to MIDI velocity.
* The roll acceleration is emulated by spool diameter and roll thickness.
* The roll tempo is automatically set.
* CIS images... from CIS header.
* Other images... from .ANN file if exists. Or from filename such as `Ampico 52305 Clair de Lune tempoXX.jpg`.
* Associate the program with .CIS on right-click menu, you can run app by double-clicking .CIS file.
* The roll scrolling direction is always downward. So the Welte T-100 image should be inverted.

# For developers

Expand Down
274 changes: 274 additions & 0 deletions assets/Aeolian_176note_MIDI_setting.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,274 @@
<html>
<style type="text/css">
td,th {border: 1px solid #cccccc;}
th {background-color: rgb(226,232,240);}
table {border-collapse: collapse;}
</style>

<p>PlaySK Piano Roll Reader</p>
<h1>Aeolian 176-note tracker bar<br>
MIDI Output Assignment</h1>

<table>
<tr>
<th>Control</th>
<th>MIDI<br>channel</th>
<th>MIDI<br>note number</th>
<th>MIDI<br>control change</th>
<th>MIDI<br>value</th>
<th>supplement</th>
</tr>
<tr>
<td>Swell Notes</td>
<td>1</td>
<td>36-96</td>
<td>-</td>
<td>-</td>
<td>61 notes</td>
</tr>
<tr>
<td>Great Notes</td>
<td>2</td>
<td>36-96</td>
<td>-</td>
<td>-</td>
<td>61 notes</td>
</tr>
<tr>
<td>Pedal Notes</td>
<td>3</td>
<td>36-67</td>
<td>-</td>
<td>-</td>
<td>32 notes</td>
</tr>
<tr>
<td>Swell Expression Shade</td>
<td rowspan="37" colspan="1">4</td>
<td>-</td>
<td>14</td>
<td>30-127</td>
<td rowspan="2" colspan="1">30 is fully closed.<br>127 is fully opened.</td>
</tr>
<tr>
<td>Great Expression Shade</td>
<td>-</td>
<td>15</td>
<td>30-127</td>
</tr>
<tr>
<td>Echo</td>
<td>-</td>
<td rowspan="35" colspan="1">20:ON<br>110:OFF<br><br>For Hauptwerk virtual organ, corresponds to<br>"Notation stop or hold-piston; CC20=on, CC110=off"</td>
<td>0</td>
<td>Echo couples the Ehco division to upper holes and releases Swell. This is not implemented yet.</td>
</tr>
<tr>
<td>Swell Chimes</td>
<td>-</td>
<td>1</td>
<td></td>
</tr>
<tr>
<td>Swell Tremolo</td>
<td>-</td>
<td>2</td>
<td></td>
</tr>
<tr>
<td>Swell Harp</td>
<td>-</td>
<td>3</td>
<td></td>
</tr>
<tr>
<td>Swell Trumpet</td>
<td>-</td>
<td>4</td>
<td></td>
</tr>
<tr>
<td>Swell Oboe</td>
<td>-</td>
<td>5</td>
<td></td>
</tr>
<tr>
<td>Swell Vox Humana</td>
<td>-</td>
<td>6</td>
<td></td>
</tr>
<tr>
<td>Swell Diapason mf</td>
<td>-</td>
<td>7</td>
<td></td>
</tr>
<tr>
<td>Swell Flute 16</td>
<td>-</td>
<td>8</td>
<td></td>
</tr>
<tr>
<td>Swell Flute 4</td>
<td>-</td>
<td>9</td>
<td></td>
</tr>
<tr>
<td>Swell Flute p</td>
<td>-</td>
<td>10</td>
<td></td>
</tr>
<tr>
<td>Swell String Vibrato f</td>
<td>-</td>
<td>11</td>
<td></td>
</tr>
<tr>
<td>Swell String f</td>
<td>-</td>
<td>12</td>
<td></td>
</tr>
<tr>
<td>Swell String mf</td>
<td>-</td>
<td>13</td>
<td></td>
</tr>
<tr>
<td>Swell String p</td>
<td>-</td>
<td>14</td>
<td></td>
</tr>
<tr>
<td>Swell String pp</td>
<td>-</td>
<td>15</td>
<td></td>
</tr>
<tr>
<td>Swell Soft Chimes</td>
<td>-</td>
<td>17</td>
<td></td>
</tr>
<tr>
<td>Great Tremolo</td>
<td>-</td>
<td>18</td>
<td></td>
</tr>
<tr>
<td>Tonal</td>
<td>-</td>
<td>19</td>
<td>Tonal turns on most stops. This is not implemented yet.</td>
</tr>
<tr>
<td>Great Harp</td>
<td>-</td>
<td>20</td>
<td></td>
</tr>
<tr>
<td>Pedal Bassoon 16</td>
<td>-</td>
<td>24</td>
<td></td>
</tr>
<tr>
<td>Pedal String 16</td>
<td>-</td>
<td>25</td>
<td></td>
</tr>
<tr>
<td>Pedal Flute f16</td>
<td>-</td>
<td>26</td>
<td></td>
</tr>
<tr>
<td>Pedal Flute p16</td>
<td>-</td>
<td>27</td>
<td></td>
</tr>
<tr>
<td>Great String pp</td>
<td>-</td>
<td>28</td>
<td></td>
</tr>
<tr>
<td>Great String p</td>
<td>-</td>
<td>29</td>
<td></td>
</tr>
<tr>
<td>Great String f</td>
<td>-</td>
<td>30</td>
<td></td>
</tr>
<tr>
<td>Great Flute p</td>
<td>-</td>
<td>31</td>
<td></td>
</tr>
<tr>
<td>Great Flute f</td>
<td>-</td>
<td>32</td>
<td></td>
</tr>
<tr>
<td>Great Flute 4</td>
<td>-</td>
<td>33</td>
<td></td>
</tr>
<tr>
<td>Great Diapason f</td>
<td>-</td>
<td>34</td>
<td></td>
</tr>
<tr>
<td>Great Piccolo</td>
<td>-</td>
<td>35</td>
<td></td>
</tr>
<tr>
<td>Great Clarinet</td>
<td>-</td>
<td>36</td>
<td></td>
</tr>
<tr>
<td>Great Trumpet</td>
<td>-</td>
<td>37</td>
<td></td>
</tr>
<tr>
<td>Great Chime Damper</td>
<td>-</td>
<td>38</td>
<td></td>
</tr>
</table>

<p>Katz Sasaki<br>14 Dec 2024</p>
<a href="https://github.com/nai-kon/PlaySK-Piano-Roll-Reader">PlaySK Piano Roll Reader</a>
</html>
Binary file modified assets/How to use Mac.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed assets/Overall_System.jpg
Binary file not shown.
Binary file modified assets/Overall_System.webp
Binary file not shown.
Binary file removed assets/dmg-bg.png
Binary file not shown.
Binary file removed assets/dmg-bgx2.png
Binary file not shown.
3 changes: 2 additions & 1 deletion build_mac.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,5 @@ pip-licenses --format=plain-vertical --with-license-file --no-license-path --out
# copy files
cp -p "3rd-party-license.txt" dist/
cp -p "assets/How to use Mac.png" dist/
cp -pr src/playsk_config/ dist/playsk_config/
cp -pr src/playsk_config/ dist/playsk_config/
cp -p "assets/Aeolian_176note_MIDI_setting.html" dist/
2 changes: 1 addition & 1 deletion build_mac.spec
Original file line number Diff line number Diff line change
Expand Up @@ -46,5 +46,5 @@ app = BUNDLE(
name='PlaySK Piano Roll Reader.app',
icon='src/playsk_config/PlaySK_icon.ico',
bundle_identifier=None,
version='3.5.2'
version='3.6.0'
)
3 changes: 2 additions & 1 deletion build_win.bat
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,5 @@ pip-licenses --format=plain-vertical --with-license-file --no-license-path --out
rem copy files
xcopy /i /y "3rd-party-license.txt" ".\dist\PlaySK Piano Roll Reader\"
xcopy /i /y ".\assets\How to use.png" ".\dist\PlaySK Piano Roll Reader\"
xcopy /s /i /y ".\src\playsk_config\" ".\dist\PlaySK Piano Roll Reader\playsk_config\"
xcopy /s /i /y ".\src\playsk_config\" ".\dist\PlaySK Piano Roll Reader\playsk_config\"
xcopy /i /y ".\assets\Aeolian_176note_MIDI_setting.html" ".\dist\PlaySK Piano Roll Reader\"
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "PlaySK-Piano-Roll-Reader"
version = "3.5.2"
version = "3.6.0"
description = "Optically reading a piano roll image, emulates expression and output midi signal in real-time."
authors = ["nai-kon <fxtch686@yahoo.co.jp>"]
readme = "README.md"
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed sample_scans/Ampico B 68711 To Spring tempo100.png
Binary file not shown.
Binary file not shown.
Loading

0 comments on commit fbdcf5c

Please sign in to comment.