Implementation
Design notes
The implementation here runs entirely in the browser (at least once all the files are downloaded). I have taken a few (hopefully minor) liberties with the implementation. Differences from the prototype include:
- Addition of position lights at the platforms
- In the prototype the signaller would have been able to look out the windows of the signal box and see trains waiting directly at the platforms. That's not possible on the simulation (there's no real room to add windows and anyway I don't have any suitable images to display even if there was space.
- Not all of the repeater instruments added to the shelf
- I added the instruments I understood, but I'm not 100% sure of the operation of the remaining instruments
- Sounds not taken from the preserved box
- With the coronavirus lockdown I'm unable to record accurate sounds from the preserved signal box. That said the bell and plunger sounds I'm using (from Alexander at Orange Free Sounds) do, to my ear at least, sound fairly reasonable
- Ancillary lights omitted
- I have consider adding the ancillary lights to the diagram (for example, the lights indicating the state of the automatic half barriers at Halterworth), but I'm not yet convinced that it is worth cluttering the diagram even further!
- Train timings
- Although I've based the train schedule based on modern day schedules, the timing of the trains for the various track sections is based on a guess. Some day I plan to spend a day riding the various passenger services and trying to record more accurate timings. In any event I definitely have either prototypical timetables or timings!
Programming Notes
Impressively (to me at least), a lot of the coding for the simulation is handled by the cascading style sheets. In fact the largest part of the code for the simulation (as measured by the byte count) is actually for the sounds used by the simulation! There is a fair amount of javascript that the drives the simulation. The code is based on my original arduino based hardware simulation, but I do think the javascript is, somewhat incredibly, easier than the corresponding C++ code. That said I may well end up trying to bring my development workflow more up to date - through the main benefit of moving from my Ant based build system would simply be the ability to use the latest javascript tools for unit testing - so it may just be that that I take a look at!
Current Version
This site currently has Romsey Signal Box Simulation Version 3.244.0 installed.