Bol Processor BP3 To Do List ============================ This is a list of technical improvements considered during the development of BP3. None of them are critical to its proper functioning. 🎹 However, we need good musical examples to highlight BP3's features! 🎶 The most requested improvements are listed at the top of the list. Current location of this file: https://github.com/bolprocessor/bolprocessor/blob/graphics-for-BP3/BP3-To-Do.txt You can also check the history of changes: https://raw.githubusercontent.com/bolprocessor/bolprocessor/graphics-for-BP3/BP3-changes.txt Csound orchestra ---------------- - New instruments are needed in the styles of: + pipe organ + flute + piano + harpsichord + guitar + horn + saxo + marimba + drums - Study how BP could produce score instructions modifying parameters in some instruments. - Find an instrument that would create a switched bandpass filter with either a sound file or another instrument as input. The idea is to reproduce the effect of sympathetic strings and use it to add partials to other instruments (much like the Indian tanpura). These devices had been successfully wired as "switch filters" in the Shruti Harmonium. - Modify "new-vina" to produce lower frequencies, minimum "C2". MIDI input ---------- - Implement more script instructions previously designed for BP2. Real-time MIDI -------------- - Fix MIDIdriver.c in _WIN64 and __linux__ to compile and handle multiple MIDI inputs/outputs. - Sometimes -da.Alan is not starting when -da.Beatrix is waiting. Maybe a jam in MIDI messages. - When playing back chunked data in real-time MIDI, there may be gaps followed by garbled events due to the time taken to calculate large chunks. Check "-da.Beethoven-fugue-B-flat-major" for this. It's probably unavoidable: a larger value of MaxMIDIMessages (currently 1000 in ConsoleMain.c) is needed, but it blows the memory. - Maybe use a dynamically resizable array for eventStack? Probably not beneficial. - The value of MaxMIDIMessages could also be spacified in the settings file of the project. - Check the accuracy of start times in sound-object pictures. - The use of PortMidi (https://github.com/PortMidi/) could replace the current procedures in MIDIdriver.c and secure the implementation of real-time MIDI in the three environments. Although it makes it easier to program low-level MIDI features, it seems that installing PortMidi itself would require technical skills on the part of the user. We are keeping this option open for the time being. Compilation in Windows and Linux needs to be checked and fixed on real machines. Real-time Csound ---------------- - This development should be easy, using AI tools. - Implement UDP for communicating with Csound. Links: https://csound.com/docs/manual/udpserver.html https://www.geeksforgeeks.org/udp-server-client-implementation-c/ - Implement OSC ? Open Sound Control (OSC) ------------------------ - This development should be easy, using AI tools - Read https://en.wikipedia.org/wiki/Open_Sound_Control - This might create a framework for connecting BP3 with PYO (http://ajaxsoundstudio.com/software/pyo/) - Also try direct communication with MuseScore HTML/PHP/Javascript interface ----------------------------- - Implement command-s (on MacOS) or control-s (on Windows) to save a grammar, data, alphabet, etc. This is almost done in _header.php (line 41) and at the bottom of data.php Standalone application ---------------------- - https://github.com/cztomczak/phpdesktop => Compile BP3 under Linux or MacOS. The MacOS version is still under development by Czarek Tomczak (czarek.tomczak at gmail) Alternate options in case "phpdesktop" doesn't fit: - https://electronforge.io/ - https://github.com/peachpiecompiler/peachpie - https://laravel.com/ - https://cakephp.org/ - https://www.yiiframework.com/ - https://github.com/bcosca/fatfree - https://fuelphp.com/ - https://symfony.com/ - https://phalcon.io/en-us - https://www.chromium.org/Home Csound ------ - (optionally) Revise CsoundWrite to make sure that events are ordered by "note-on" dates, notably with tied notes/sound-objects - Reference: https://csound.com/docs/manual/i.html => use negated p1 for distinct note-off? - Implement output to DAC in the interface: https://csound.com/docs/manual/CommandFlags.html - Csound can compile orchestras and scores directly from strings of text: this feature could be exploited Microtonal scales ---------------- - Include values for optionally stretching each octave - Implement a performance control to set A4 frequency (diapason) in the score Actions ------- - Implement produce-items N action - Implement play-all action - Fix analyze-item action - Implement expand-item & show-beats actions Chunked data in real-time MIDI ------------------------------ - Faulty chunked data (e.g. “-da.Beethoven-fugue-b-flat-major”) produces timing errors in real-time MIDI, although MIDI files are acceptable. This may be difficult to fix due to the size of data. Settings -------- - Use XML to store the settings of projects MIDI file player ---------------- - Implement Pause and Resume (check https://www.midijs.net/midijs_api.html) - Standalone application might not accept to call remote midi.js - Implement connection with FluidSynth (https://www.fluidsynth.org/) Cloud version (probably unrealistic) ------------- - This has been envisaged as an option. Creating a standalone application seems a better choice. - Install a html/php/MySQL server for the sharing of BP console + PHP interface (+ website?) - Set up restricted access via (free) non-anonymous subscription (in compliance with RGPD) - Grant every user some storage space (with time limit?) - Run all features except real-time MIDI in/out - Csound scores could be exported and/or processed by Csound, and WAV files dowloaded and/or played on line via HTML