Bol Processor BP3 history of changes ==================================== Current location of this file: https://github.com/bolprocessor/bolprocessor/blob/graphics-for-BP3/BP3-changes.txt Read also the "to-do" file: https://raw.githubusercontent.com/bolprocessor/bolprocessor/graphics-for-BP3/BP3-To-Do.txt 2024-10-07 -> 2024-10-09 (version 3.0.12) Glyphs ‘≠’, ‘≤’ and ‘≥’ are now accepted in grammar flags. This extends the use of conditions, e.g. /K12 ≥ 0/, beyond ‘=’, ‘<’ and ‘>’. ----- 2024-10-04 -> 2024-10-06 (version 3.0.11) Fixed microtonality algorithms so that any scale can be used in real-time MIDI (out and in) or MIDI files as well as in Csound. For example, the Bohlen-Pierce scale with a a "tritave" interval of ratio 3/1 instead of 2/1. See updates on https://bolprocessor.org/check-midi-microtonality/ Protection against setting the same port for input and output ----- 2024-10-01 Problems of file permissions in Linux have been solved. Now running with 775 permissions on htdocs/bolprocessor. ----- 2024-09-26 -> 2024-09-27 Added code to warn against looping processes (instead of crashing the server) and protection against excessively large data or trace files. Maximum compute time is also checked. ----- 2024-09-18 -> 2024-09-22 (version 3.0.10) Fixed (old) bug with locating out-of-time objects. A clean warning if the settings file is empty (because it hasn't been saved). Fixed errors handling 2-byte input events. Channel pressure (aftertouch) can now be caught by _capture(). Fixed NoteOff ≠ NoteOn in MacOS, Windows, Linux. Fixed e.type = NORMAL_EVENT in MakeSound.c Updated BP3_help.txt. ----- 2024-09-16 (version 3.0.9) Controller and pitchbend MIDI messages can also be recorded. This means that MIDI streams designed for MIDI Polymetric Expression can be captured. MIDI events can be captured even if they are not sent to the output. Only the "treat" option is required. ----- 2024-09-13 (version 3.0.8) This version of the console is able to capture events from the MIDI input(s) while playing a piece. The command that controls this is _capture(x), where x (in the range 1...127) is an identifier of the 'source'. The captured events and the events performed on them are stored in a 'capture' file in the 'temp_bolprocessor' folder. Currently the interface does not process this data. Work is currently underway to construct a polymetric structure containing both the performed and captured data. ----- 2024-09-06 This release accepts the "_script(Wait forever)" command. Installation files and scripts have been updated to handle the future "BP3_help.txt" documentation source. ----- 2024-09-03 (several uploads) Fixed the display of frequencies when tracing the microtonality, the calculation of Csound frequencies using microtonal scales, and a bug in the Improvize mode. ----- 2024-08-27 Microtonal adjustments can now be saved in MIDI files. This works with all MIDI devices that are pitch-bending sensitive, regardless of their compatibility with MPE. Microtonality issues with Csound have been fixed. The "Trace microtonality" option shows the cent corrections and the frequencies of the notes. This takes into account the tuning of the A4 diapason. This tuning may not be effective in the MIDI device. ----- 2024-08-26 (version 3.0.7) Microtonality is now fully compliant with tonal scales defined in "-to" tonality resources, both in real-time MIDI and in Csound. This includes the retuning of incoming MIDI events. The new PHP interface imports and exports SCALA (scale) and KBM (keyboard mapping) files. ----- 2024-08-20 (version 3.0.6) 😀 This is the first version of BP3 to deal with microtonality in real time MIDI. This is achieved by using scales stored in "-to" tonality files, already used by Csound. It mimics the MIDI Polyphonic Expression (MPE) method of modifying pitchbend values on notes distributed on separate channels (up to 15 simultaneous notes). However, it works on devices that are not MPE-compliant. They should only be sensitive to pitchbend messages. Test the operation with "-da.tryMPE" While waiting for a MIDI event, the computer can retune any incoming NoteOn/NoteOff to a tonal scale and send it to the output. • The diapason of the external MIDI device is tried to be adjusted if it is different from 440 Hz. (Not all devices support this.) • A backup of the previous version is created when a data or grammar project is saved. ----- 2024-08-12 (version 3.0.5) Tonality files "-to" are completely independent of Csound resources "-cs". Old "-cs" files containing scale definitions will automatically create an associated "-to" file containing those definitions. MIDI orchestra files "-or" are no longer used. ----- 2024-07-29 (version 3.0.4) Problems with MIDI device connections have been solved in the Windows version. A check for duplicate input MIDI events has been implemented for MacOS, Windows and Linux. This avoids a "chain reaction" if there is a loop in the connection. The Linux version displays detailed error messages when MIDI connections don't work. These include insufficient memory. Resized the maximum line length in ReadOne() as -cs.tryTunings wasn't loading. Fixed timing when using time patterns in a striated time structure. Finalised shell scripts for installation and versioning on Linux. ----- 2024-07-24 😀 This is the first version of BP3 to compile and run on Linux, MacOS and Windows! Tested on an HP Intel Core i5-6200U (2.3 GHz, 8 GB RAM) running Linux Lite 7.0 (64-bit) in the Ubuntu environment. Csound has not been checked yet… because the installation procedure is not clear. Read and try to figure out: https://packages.ubuntu.com/search?suite=all&searchon=names&keywords=csound A few bugs remain regarding the synchronisation of multiple instances of the program in real-time MIDI. Still, protection against bouncing messages has been implemented. There will be installers for Linux, Windows and MacOS. On Linux, we need to run shell scripts in admin mode to get the owners and permissions set up correctly. Linux geeks will of course be able to install this version (and its interface!) themselves. The installation instructions (https://bolprocessor.org/check-bp3/) will be updated. The Windows MIDI driver has been fixed to handle multiple input/output devices. For geeks: The "compile.php" file is now in the "php" folder. This can be taken into account during installation. ----- 2024-07-09 On Windows, MIDI input is now handled by a dedicated thread. This results in a faster response to input messages. This version handles (temporary) scripts on the interface. Download https://github.com/bolprocessor/bp3-ctests/archive/main.zip to get updated scripts, and the interface! ----- 2024-07-07 The first version that compiles and runs on both MacOS and Windows! 😀 The Linux version is on the way. This version has been tested on an HP Intel Core i5-6200U (2.3 GHz, 8 GB RAM) running Windows 10 with a 64-bit x64 processor. MAMP, 7-Zip and MinGW (x86_64) have been installed to run the interface and compiler. Only MAMP (or XAMPP) is required to run the Bol Processor. The compilation is automatic (single click) on both MacOS and Windows platforms. Pre-compiled executables ("bp" for MacOS and "bp.exe" for Windows) are also distributed. This can save you the trouble of compiling. Csound (version 6.18) has been installed on the Windows computer by means of an "exe" installer. Real-time MIDI in/output has been checked on both platforms. 👉 Don't forget to install the latest PHP interface: https://github.com/bolprocessor/php-frontend/archive/master.zip For geeks: Memory leaks have been traced and checked (on the Mac) using the LLDB debugger and compiling with the AddressSanitizer option. Use Makefile-full-tests to do the same. ----- 2024-06-21 If we have a phrase containing _script(wait for C3 channel 1) _script(wait for D3 channel 1) the performance will resume in case either note C3 or D3 is received. A few fixes to how scripts are handled during performance, especially when they pause on an out-time event. The HP computer has been received and set up for Windows. The installation and compilation of BP3 is being checked. Wait for the next version! ----- 2024-06-19 New script instructions: • Velocity parameter K... = channel ... • Control parameter K... = # channel ... These scripts modify the values of the built-in parameters K1, K2, ... K127 by receiving the velocity of a given MIDI note or the value of a given MIDI controller. BP2_help has been updated to include these instructions. ----- 2024-06-17 New script instructions: • Hold for … milliseconds • MIDI send Start, Continue, Stop • Wait for Start, Continue, Stop "Reset notes and pedals off at the end of item" is now an option, because it is better to discard it in interactions. BP3 now creates an invisible MIDI event (ActiveSensing) at the end of each element to which it can append the final scripts. ----- 2024-06-14 This release has revised code for compilation on Windows and Linux. Some Linux procedures in initializeMIDISystem() need to be completed once the compilation has been checked and fixed. The display of the file index in each workspace has been improved: each file is placed in a specific box according to its type. ----- 2024-06-13 The prefixes and suffixes of some files have been changed to make them more meaningful: • Prefix "-ho" and suffix "bpho" are replaced by "-al" and "bpal" (Alphabet files) • Prefix "-mi" and suffix "bpmi" are replaced by "-so" and "bpso" (Sound-object files) These changes are automatically managed by the interface and by the console. The old prefixes/suffixes were used to denote homomorphisms and MIDI codes. Alphabet files may still contain homomorphisms but this doesn't need to be emphasised. Sound-objects can now contain Csound scores in addition to, or instead of, MIDI codes. ----- 2024-06-05 This version takes care of filters on MIDI outputs. These can specify the types and channels of events sent to each output. ----- 2024-06-02 This version accepts any number of sources for MIDI events. A "sync delay" parameter has been added to the settings to compensate for the delay when controlling another BP3. Comments can be attached to MIDI inputs and outputs to help identify peripherals. ----- 2024-05-30 Important changes to facilitate real-time MIDI interaction between multiple instances of BP3. The MIDI port and filter settings are now stored in a file whose name depends on both the session number and the project name. This allows multiple projects to run simultaneously, either on different browsers or on the same browser under different names. If this temporary file is not found, it will be retrieved from the (permanent) "midi_resources" folder. ----- 2024-05-28 This version handles real-time MIDI input/output filters in the same way as BP2. Don't forget to download and update the PHP/Javascript interface! More scripts to come… All system-dependent codes dealing with MIDI have been stored in MIDIdriver.c Windows and Linux compilation still needs to be checked and fixed. The MacOS version is fully functional. ----- 2024-05-25 😀 First version to handle incoming MIDI events. Script procedures have been partially rewritten. This version only supports command _script(IN Wait for C3 channel 1) which is used to delay the start of the performance. Unused MIDI code has been stored in MIDIstubs.c, which is no longer compiled. Useful MIDI code is available in MIDIstuff.c. ----- 2024-05-21 Images are displayed even if errors have been found. (Fixed in produce.php) All images can be displayed (if this option is selected) during the reading of chunked data. The STOP and PANIC buttons seem to succeed in shutting down the console for good when playing chunked data in real-time MIDI. Data and grammar pages have a search and replace function with the option of regular expressions. ----- 2024-05-20 Fixed bug loading Csound instruments to the console: comments are ignored. Fixed bug in timing the Csound score on chunked Data. In real-time MIDI, the clock is synchronised on the first NoteOn event. The stop() function has a "now" parameter to decide whether it should work immediately or wait for the next half second. MaxMIDIMessages = 1000. More may be necessary to handle very large chunks of data in real-time MIDI. ----- 2024-05-19 Fixed timing problem in real-time MIDI when playing chunked data. Faulty chunked data still doesn't play well (in real time), although it produces acceptable MIDI files. (Next version will handle MIDI input events.) The stop() function that checks for "_stop" or "_panic" files now only performs this check twice per second. This saves time for sending MIDI events at the correct time. ----- 2024-05-18 Fixed unwanted cross effects when playing multiple instances of BP3 together. ----- 2024-05-17 Important change: multiple instances of BP3 can play together on the same browser. The STOP button now stops the performance it is attached to, while the PANIC button stops all performances. In addition, the STOP and PANIC buttons are always effective because a session_abort() was done in produce.php before the command was sent to the console. In a forthcoming version, these instances will be able to communicate and control each other (along with external MIDI devices) in terms of synchronisation and parameter changes. Progress has been made on checking compilation under Windows, although it is not yet complete. ----- 2024-05-16 MIDI source and output ports can now be set up on the interface. The console checks that these ports are available and suggests changes to numbers and names if the match is not perfect. Ports are saved along with each project (Grammar or Data). Some (but not all?) types and procedures that were in conflict with similar ones in Windows have been fixed. ----- 2024-05-14 Created "MIDIinputtest" to test the reception of MIDI messages (e.g. from a piano keyboard) and their immediate forwarding to the first available MIDI device (e.g. a synthesiser). Windows and Linux users are encouraged to compile and fix "MIDIinputtest.c". Real-time MIDI input/output functions have been included in the BP3 source code for the three environments. However, only MacOS (CoreMIDI) has been tested. In this version, MIDI output is on port #0 and MIDI input is on port #1. Change the values of MIDIoutput and MIDIsource at the top of MIDIstubs.c to adapt them. In the next version these parameters will be set by the interface. ----- 2024-05-13 Modified "MIDItest.c" so that it compiles and run under Windows. Compilation was checked with Visual Studio. Then, BP3 was updated so that it will compile under Windows and produce real-time MIDI output. ----- 2024-05-12 No changes to core algorithms. Only features that affect images. Fixed "Timeset.c" to correctly calculate the left image border when an out-time object is at time = 0. Limits of coordinates have been fixed to deal with very large images. Image links (objects, not pianoroll) now show start dates in Improvize mode. ----- 2024-05-11 Interface now accepts alternative names of the Csound console. ----- 2024-05-10 Fixed timing in Csound scores (when improvising). Real dates are displayed on sound-object graphs in the Improvize mode, but not yet on pianoroll graphs. Fixed add_time for silences at the end of items in the Improvize mode. (Needs more checking.) Sometimes the console stays hanging and the interface no longer responds. To get out of this problem, restart Apache (or the MAMP application). ----- 2024-06-04 This version accepts any number of outputs for MIDI events. MIDI port number management has been improved. If they are changed from the console, the changes are automatically applied to the page when the project is saved. The display of the SHOW HELP ENTRIES command has been corrected. ----- 2024-05-07 😀 This is the first implementation of real-time MIDI output in the BP3. It works well, but the STOP button used to interrupt improvisation does not always immediately create the "_stop" file that tells the application to stop. The current MIDI output sends MIDI messages to the first available MIDI destination, but it will be easy to modify the interface and the console to select more destinations. This version should work on all platforms: MacOS, Linux and Windows. Conditional compilation of C code and interpretation of PHP code make it possible. However, we need feedback from Linux and Windows users. A (very small) dummy application called "MIDItest" has been designed to check MIDI output on the three platforms. Its source code "MIDItest.c" is provided so that Linux/Windows testers can suggest modifications to make it work as expected. Real-time MIDI uses CoreMIDI on MacOS, ALSA on Linux and MinGW on Windows. More information on this page (which you can help to improve): https://bolprocessor.org/check-bp3/#compile-bp-and-check-its-operation -----