Software Developed or Open-Sourced by Ropley IT

Ropley IT develops and supports a number of software products. These products are all written in .NET and are currently Microsoft platform hosted. Some are licensed commercially, others are free-licensed binaries with source code IP kept within the company. One or two products are published with source code under the MIT licence, and are available to download or access from GitHub.

Digital Signal Processing Library

This suite of libraries implements a (growing) set of classes and algorithms for creating, designing and experimenting with digital filters. In its current form, the library offers the following capabilities:

  • Generating Butterworth filter polynomials for low and high pass Butterworth filters of any order
  • Implementing the bilinear Z transform so that analogue-equivalent filters such as the Butterworth filters mentioned above can be mapped to the sampled digital domain
  • Applying frequency pre-warping so that the cut-off frequencies for the digital filters are at the same frequency as their analogue counterparts
  • Rendering the waveforms output from digital signal processing libraries to SVG, BMP, JPEG or PNG files
  • Creating standard periodic waveforms or transient pulses to feed throuugh filters or Fourier transformers
  • Creating window functions and applying them to waveforms to reduce spectral leakage when applying digital Fourier transforms

The documentation for these libraries will be found on their Github wiki, while the libraries themselves are available from their Github repository.

PDF Presenter

PDF Presenter is a tool that manages the presentation of slides held in a PDF file on a second monitor or projector attached to a Windows PC. The tool has a main window on the PC itself, with a separate full screen view of the currently selected slide on the projector/second monitor. A suite of annotation tools are available on the main tool window for annotating the corrently displayed page, the annotations appearing immediately on the projected image of the page as they are made. The tool remembers the annotations painted over each page so that if you return to that page the annotations represent themselves. The tool also allows you to create any number of blank slides on which you can draw your own slides while presenting. These annotated blanks are also remembered by the tool and can be returned to later by selecting them from a list of favourite slides in the tool’s main window. There are many other features built into the tool. This product is not currently available as open source code but can be made available as an installable binary. If you would like to try it out, please contact us.

Software Requirements Editor

The Use Case Editor is a tool used by business analysts and requirements engineers for capturing and organising functional and non-functional requirements. Specifically it captures and formally documents use cases using an automated document template, captures logical data models,  and automatically generates activity diagrams from use case primary and alternative path specifications.

Documentation giving instructions on  its installation and use can be found here.

The tool is available for download by downloading the zipped version of the file UCEditorInstaller.msi.

GLR Grammar Parser

The GLR parsing suite ParseLR is a tool that generates and provides the runtime for .NET hosted generalised LR grammar parsers, as well as generating C# state machines from formal state machine descriptions. Similar in purpose to Bison or Yacc, this tool also incorporates the state-splitting algorithms used to extend it into a GLR parser. The tool takes an input grammar, and converts it into a C# source code parsing engine that is then incorporated into an application that needs a parser.

The parser can act as a compile-time tool generating fixed source code for a parser for a specific grammar. Alternatively it can operate dynamically, allowing the grammar rules to be specified or changed dynamically at run-time, with a new state machine parser being generated and launched as and when the grammar changes.

Note that the parser also incorporates the ability to call condition-testing functions at each shift or reduction. It is this that enables it to also implement complex finite state machines driven by grammar rules.

The source code is made available on GitHub at this URL along with several runnable examples and copious documentation on its GitHub Wiki.

At-Runtime C# Code Compilation and Execution

The DynamicCSharp library is a .NET Core library that makes it possible to read C# source code from a string or a file in a running program, to compile it to an assembly, to load that assembly back into the same running program, and to invoke the methods and classes of the dynamically generated assembly.

This project is released under the MIT licence, and is available together with its documentation from its Github repository as source code, or from nuget.org as a NuGet package.

Visual Studio Folder Cleaner and Zipper

The VSClean utility is a tool for cleaning out all but the bare essential files from a C# solution and its project sub-folders. When Visual Studio is run to build and run automated tests for an application, a huge overhead in binary folders and test data folders gets created. Combine this with the download and installation of packages from repositories such as NuGet, and your solution folder becomes too big to zip up and attach to emails, or to put on a USB key. VSClean strips all these unnecessary files out, leaving the bare minimum files needed to reconstruct the product later.

VSClean uses a filter file that itself uses the same filter specification as used in Git’s .gitignore files. Because of this, it is possible to configure VSClean to clean files from folders for other languages and development environments than its default C# filter set.

VSClean is available at source code level together with its documentation at its own GitHub repository.

Image Compaction

The ImagePacking application is a tool written in C# for shrinking images from one folder into another, while preserving the maximum quality in the images achievable for the output image size. So often poeple upload images onto web servers and web sites that are way bigger than the small rectangle in which they are displayed, leading to slow page downloads and unnecessary server disk use. ImagePacking allows you to identify maximum width height and file size in kilobytes for each image file, then shrinks all images from an input folder to smaller versions in a selected output folder, while preserving image aspect ratio in each case.

The ImagePacking suite is made available on Github under the MIT license.

Involute Gear Vector Generator

This application is used by CNC machinists who want well designed profiles for involute gear wheels that they intend to machine from flat stock using a CNC machine. It provides options for cutting gears with differing modules, pressure angles, profiles and other technical parameters used by involute gear designers. The application can also design ratchet wheels, escapement wheels (if you are a clock designer), and wheels for roller chains or clock chains.

The application is available in two forms. As a console app for use in scripted situations, or as a web site implemented using Blazor Server technology. The code itself is all written in C# and runs on .NET 5.0 or later.

To investigate the code and the documentation, please go to the application’s GitHub repository.

Handbell Music Score Editor

This is an application used by societies that ring music on handbells, for authoring the music scores and also for displaying them on a tablet device when handbell teams are playing the music. It supports audio playback of the scores to verify that they have been written correctly while editing.

The code is open source, but designed specifically to run on Windows-based laptops and tablets.

The code and its documentation are available for download from its GitHub repository.

Composition Proof Engine

This application, named ERIL (Extendend Ringing Language), is used by campanologists to search for compositions that are ‘true’ (contain no repeating changes) to be used when ringing changes either on tower bells, or when ringing changes two in hand. It is a specialist tool with little meaning to anyone outside the change ringing community.

The executables are designed to run on Windows platforms in their current configuration, but a newer Windows or Linux build is available shortly.

Detailed doumentation together with the files needed to install and run this application may be found here.