A new version of Karaboss has been released: 1.0.10.3

A new version of Karaboss has been released

The version 1.0.10.3 of Karaboss is available since January 9th, 2025.

download

You can downloadt it from the download area of Karaboss Web Site.

For that you must authenticate .
If you do not have an account yet, don’t panic, it’s free, just create your account and that’s it.

Create an account in two steps

The registration to Karaboss is performed in two steps. All you need is a valid email address.

Step 1:

  • Click on “Register”
  • Fill in the three fields
  • “Username”: this will be your nickname
  • “Email”:  must be valid. You will receive an email with registation confirmation.
  • “Enter Code”:  a simple code to recognize in an image in order to check that you are a human being from the earth and not a cyborg of Eckmuhl (they are a little limited)

Click on “Register” button.

Step 2:

  • Open your mail and the email sent by Karaboss.
    Warning, it can take several minutes to receive the mail, and it may have been classified elsewhere by your email such as “social networks”, “promotions”, or even “junk mail” 🙂
  • Click on registration confirmation link whitin the email in order to display the password creation page.
  • Chose a password  strong enough to hold more than 30,000 years against a quantum computer.
    There you go !

Notes :

  • If you have forgotten your password, you can regenerate it by going to the login page: there is a link at the bottom entitled “Forgot your password?
    (This is available only if you are already registered)
  • If the mail sent never arrives, please post a comment and I will check.

Upgrade to the latest version of Karaboss

Do not uninstall the program as this will delete your settings.
All versions of Karaboss can safely be installed over an existing installation.

What’s new?

  • 1.0.10.3 – 09/01/2025
    Corrections: playlists composed of XML/MXL files.
    Display of chords in musicxml files (harmony tag) in the score and in the karaoke window (disengageable option).
  • 1.0.10.2 – 28/12/2024
    Fixes: musicxml: velocity, pan, drums, file name retained for mxml / Chords: display problem in playlists.
  • 1.0.10.0 – 14/12/2024
    Display chords with lyrics in Karaoke.
    Chords can come from 2 sources:
    * Placed in the lyrics. Example “[Am] The little house [G] in the meadow”.
    Chord separators can be the bracket [Am] or the parenthesis (Am).
    Chords placed in the lyrics take precedence over those discovered by Karaboss
    * or automatically discovered by Karaboss (experimental 🙂 ).
  • 1.0.9.5 – 31/10/2024
    Support for musicxml, xml and mxl (compressed) files, especially those with repeats and skips (just not hard to code). You can now open a Musescore musicXML or MXL file directly in MIDI from the Karaboss explorer and keep the lyrics.
    Possibility of displaying and modifying the tempo(s) of a MIDI file.
  • 1.0.9.4 – 10/10/2024
    Chord recognition (version 2): display of drawings showing guitar and piano chords.
    Improved lyric recognition (lyrics without spaces, lyrics in lines)
  • 1.0.9.3 – 30/04/2024
    New URL & more secure Web site: https://karaboss.lacharme.net
  • 1.0.9.2 – 24/03/2024
    Recognition of chords (version 1) from a MIDI file
    Chord grid, lyrics and chords can be exported.
  • 1.0.9.1 – 20/11/2023
    Corrections :
    Export MIDI file dump to text format
    Explorer: file or folder creation, keeps focus on file.
  • 1.0.9.0 – 07/11/2023
    Improved : Import/Export dump of MIDI files in text format.
    Added: Import of musicxml files in MIDI format.
    Playlists accept txt dumps and musicxml files.
    Karaoke: Allows lyrics to be capitalized.
    Rename files: reverses author and song (F7)
  • 1.0.8.2 – 01/05/2023
    Offset notes of a track, Insert/Delete measures – Framework 4.8
  • 1.0.8.1 – 25/09/2021
    Lyrics display: paragraph separation (can be switched off in the options window)
  • 1.0.8.0 – 24/06/2021
    Improved lyrics size, pianoroll more accessible via a button, redesign of pianos and play/stop buttons and interfaces of “Piano”, “Guitar” and “PianoRoll” windows, better management of bar signatures.
  • 1.0.7.4 – 14/02/2021
    Fixed: wrong display of the text in the  lyrics setting window (no linefeed).
  • 1.0.7.3 – 16/01/2021
    Fixed: keep the selected character set in options (ascii, Japanese, Vietnamese, Chinese, Korean) when saving lyrics.
  • 1.0.7.2 – 05/07/2020
    Management of some karaoke for which the words have been entered letter by letter and not syllable by syllable.
    Possibility to change the notes track in the lyrics editing window, and to put the lyrics on the track of your choice.
    Improved recognition of the melody track (important to be able to mute it)
  • 1.0.7.1 – 27/03/2020
    Save MIDI output device (connection to an external keyboard for example).
    The installation program allows you to change the default installation directory.
  • 1.0.7.0 – 12/01/2020
    Ability to read ABC & MML files (experimental)
    Fixed the lyrics search engine on the internet (https)
  • 1.0.6.7 – 01/11/2019
    Possibility to load a text of words including a separator of the syllables.
    For example, if the syllable separator is ‘*’, when loading the text (lyrics only), the following line <<< Ka*ra*boss is a won*der*ful soft*wa*re >> will be cut into syllables and dispatched in the cells of the lyrics editor.
  • 1.0.6.6 – 15/09/2019
    We can now (finally) change the font for karaoke lyrics. Like “Comic Without MS” rather than the sad “Arial”.
  • 1.0.6.5 – 29/07/2019
    Fixes
  • 1.0.6.4 – 15/03/2019
    LRC file format is supported. Lyrics color contour optional. Fixes
  • 1.0.6.3 – 19/01/2019
    Fixes: I tried to fix unwanted refreshes of the explorer.
  • 1.0.6.2 – 08/12/2018
    A lot of fixes, and some design on the player, and well… definitely not my job.
  • 1.0.6.1 – 08/11/2018
    Fixes & improvements on the new module “virtual guitar”, following tests on a large number of MIDI files.
  • 1.0.6.0 – 01/11/2018
    For guitarists and bassists: addition of a new module that displays in real time the notes to play on a neck of guitar or bass.
    (the algorithm remains very perfectible but it’s a start!)
  • 1.0.5.14 – 03/10/2018
    Added: modification of the velocity of a note or a selection of notes.
    Fixes: the player was not always stopped at the end of the playback, recovery of corrupted MIDI files.
  • 1.0.5.136 – 16/09/2108
    Simple improvement following  a request made in the forum: the value used to transpose the notes is now configurable by 1/2 tones. Configurable in the Parameters window: from the explorer, select the menu “Tools”> “Options” > “MIDI Editor”.
  • 1.0.5.12 – 13/07/2018
    Fixes: in case of error, a “ghost” instance of Karaboss remains active even when you leave Karaboss, and prevents to restart Karaboss (No sound card, sound banks large and long to load, synthesizer inaccessible)
  • 1.0.5.11 – 06/05/2018
    Following the purchase of an external sound card, I rewritted the management of input sources (Input Device) in order to select the one that interests us. We can choose for example either the electric keyboard or the sound card.
  • 1.0.5.10 – 01/04/2018
    Mainly some fixes in the score editor.
  • 1.0.5.9 – 17/02/2018
    The lyrics search module now uses lyrics.wikia.com more abundant for French-speaking artists (The module is also renamed “Artists” rather than “Connected”)
    Numerous corrections (linking the songs of a playlist: the song is first loaded before being paused.
  • 1.0.5.8 – 03/02/2018
    Recording from an external MIDI keyboard.
    Many fixes: manual entry of notes, chaining songs of a playlist etc …
  • 1.0.5.7 – 13/01/2018
    Ajust Tempo and tone (transposition) from the player windows.
    Fixes.
  • 1.0.5.6 – 22/12/2017
    Improvement of the lyrics display: removal of the last line sung after 2 beats and switch to the next line.
  • 1.0.5.5 – 07/12/2017
    All the possible combinations between the photos of a slide show: pause, countdown or direct sequence.
    Import / export of entire sequences in MIDI CSV format
    Importing a track from another MIDI sequence or from a CSV MIDI file.
  • 1.0.5.4 – 24/11/2017
    Improved readability of lyrics display when using a slideshow.
  • 1.0.5.3 – 11/11/2107
    Fixes
  • 1.0.5.2 – 29/10/2017
    Adding a new function: Even if you can not read the scores, learn to play the piano with falling notes! a virtual piano like Synthesia.

1 . Download Karaboss

Sorry, but you do not have permission to view this content.

You must be logged in to access this resource

Create an account in two steps

The registration to Karaboss is performed in two steps. All you need is a valid email address.

Step 1:

  • Click on “Register
  • Fill in the three fields
  • “Username”: this will be your nickname. You will use it to connect to your account.
  • “Email”:  must be valid. You will receive an email with a registation confirmation.
  • “Enter Code”:  a simple code to recognize inside an image in order to check that you are a human being from the earth and not a cyborg of Eckmuhl (they are a little limited)

Click on “Register” button.

Step 2:

  • Open your mail and the email sent by Karaboss. Warning,  it may have been classified elsewhere by your email such as “social networks”, “promotions”, or even “junk mail” 🙂
  • Click on registration confirmation link whitin the email in order to display the password creation page.
  • Chose a password  strong enough to hold more than 30,000 years against a quantum computer. There you go !

Notes

  • If you have forgotten your password, you can regenerate it by going to the login page: there is a link at the bottom entitled “Forgot your password? (This is available only if you are already registered. That is to say, you have already a nickname AND a password)
  • If the mail sent never arrives, please post a comment and I will check.

Music chord recognition

Karaboss is now able to display the chords contained in a MIDI file.
Chords can be displayed dynamically, i.e. at the same time as the lyrics (for singing along with an instrument, for example), or at a standstill for more detailed study of a song and its accompaniment.

The chords of a song can be obtained in two different ways:

They can be written manually in the song lyrics.
For example: the text “[Am] Little house [G] on the prairie” indicates that you should play the chord “A minor” and then “G”.
Karaboss will extract the chords from the text and display them above the lyrics.
Adding the chords to the lyrics represents a considerable amount of work, but in return, the chords displayed will be exactly those you have chosen.
Or they can be automatically discovered by Karaboss, which is still a little experimental 🙂 and therefore less accurate than the first method. But in return, it’s much less tiring.
Note that chords placed voluntarily in the lyrics take precedence over those discovered by Karaboss.

The chords are written in international format (C, D, E, F, G, A, B)

I. Displaying chords in the karaoke window

Simply press the “Chords” checkbox in the right-hand panel of the karaoke window, and the chords are immediately displayed above the song text (whether already present in the lyrics or discovered by Karaboss).

Chords + lyrics

Press the checkbox again to return to normal mode: karaoke without chords.
In the case of a file containing the chords written in the lyrics, this is rather indigestible, as can be seen below:

Lyrics with embedded chords

II. The “Chords” module

Click on the “Chords” button in the explorer to access the “Chords” module.

This module has three tabs

  • A first tab displays the song’s chords in the form of a grid
  • A second tab displaying the chord map
  • third tab that displays the song text with its chords.

1. The chord and lyric line

The first tab displays on a line each beat of a bar, with the chord to be played and the syllables belonging to that beat. When the song is started, this enables the musician to play the right chord at the right moment, and possibly sing along with the song.

To make synchronization easier, the song scrolls on the screen, with the square corresponding to the beat and bar played highlighted.

The button bar can be used to enlarge or reduce the size of the squares.

chords recognition

2. The chords map

The second tab displays the chords map contained in the MIDI file.
When the song is started, the box corresponding to the beat is highlighted.

The button bar lets you

  • enlarge or reduce the size of the cells.
  • exports the chords map in PDF format
Chords map

3. The score

The third tab displays the score of the song, qith lyrics and chords above the text.

The button bar lets you export the score to

  • PDF format
  • Text format
tabs

[Fixed]The last update of Windows 10 (2004) available since May 2020 removes the VirtualMidiSynth synthesizer!

At the very beginning of June of this beautiful year 2020, and following the last update of Windows 10 in version 2004, I had the unpleasant surprise to see my MIDI player using again the horrible “Microsoft GS Wavetable Synth” instead of VirtualMidiSynth.

This image has an empty alt attribute; its file name is image-1.png

It is quickly noticeable by ear, the MIDI sound without sound bank is quite unbearable….

A reinstallation of VirtualMidiSynth is not enough, you have to reinstall VirtualMidiSynth each time you reboot your machine.

Or more simply: go to the “Start” menu > “VirtualMidiSynth” > “VirtualMidiSynth Configurator”.
This one then detects that it is not correctly installed and then puts the MIDI driver back in place, but only for the duration of the session.

The developer has well identified and taken into account the problem on his site, but it will not be corrected for some time.
This is a change made by Microsoft in the Windows driver management.
Source: https://coolsoft.altervista.org/en/forum/post/4775#post4775

Let’s hope that the solution will not take too long for VirtualMidiSynth users.

Updated on September 27, 2020 :

The developer of VirtualMIDISynth has fixed the problem with version 2.10.
Originally, it was not a bug, neither from VirtualMidiSynth nor from Microsoft, but from the way new versions of Windows handle drivers.

The virtual guitar

Play guitar with Karaboss

Karaboss has a new module made for bassists and guitarists.
Learn your favorite guitar tracks with Karaboss: Play a song and the playing notes will appear on a virtual guitar neck where you have to put your fingers!

How?

A video is available here.

Select a song in the explorer and click on the “Guitar” button  on the left navigation bar to display the virtual guitar.

Select Virtual Guitar

How to use the virtual guitar?

Each of the guitars included in the MIDI file is displayed and plays its own score.
You will find generally a bass guitar and one or several guitars.

Bass guitars are colored differently from other guitars.

Virtual Guitar

  • To remove one or more guitars from the display, click on the “X” button.
  • You can also slow down or speed up the performance of the song by clicking the “+” and “-” buttons.

What is it for?

Obviously, the display algorithm of positions often gives a very approximate result and far enough from what a normal guitarist would use.
(a normal guitarist does not have fingers twenty centimeters long).

A priori, the perfect algorithm should not be simple…
See this thesis from Elias Mistler proposing to use neural networks :  Generating Guitar Tablatures with Neural Networks

or this one, from  Daniel R. Tuohy:
Creating Tablature and Arranging Music or Guitar with Genetic Algorithms and Artificial Neural Networks

That said, this module, very visual, allows to apprehend a piece faster.

How to sort your MIDI files?

Manage a collection of MIDI files, why and how?

Own thousands of MIDI files, why not? But from a certain number, manual sorting is not enough anymore.
How to make sure of their uniqueness? How to be sure that we do not already have those we add?
Karaboss offers powerful and effective dual detection functions to support you in this daunting task.

Owning a large number of files, basically, is no use if we do not do anything with them.
Except maybe if you have a collector’s soul. But why on earth collect MIDI files when you can collect cheese boxes?

Well, you must have the time to listen to them, or worse, learn to play them if you are a musician, or to sing them if you are a singer.

But be aware that, anyway, even if you have astronomical quantities, you will never have the one you are asked, or you dream to add to your repertoire.

And then often, when you have the right file, it is double, triple, quadruple etc …
Among these duplicates, some have excellent sound quality, but sometimes downright disastrous.

That’s it, for this preamble. The idea is not to know what to do with these 30,000 files, bequeathed by your grandfather, but to make them unique.

Besides having duplicates of the same title can have several meanings.

Different orchestrations of the same piece

In this case, having several versions of the same song is of obvious interest.
Acoustic version, electric version, live version etc …
If the quality is at the rendezvous and if you are a musician, or fan of the artist, it may be interesting to keep them.

The same orchestration, but of very different qualities

In this case it will be necessary to keep the best version.
The only way to do this is to listen to each piece and ruthlessly eliminate those that you think are bad.
It’s hard to throw, I know, it’s too definitive.
Who does not have the versions (1), (2), (3) or even (4) of the same piece?
This is unfortunately sometimes due to the fact that no version really stands out, and in this case why throw this or that version?

And finally the real doubles

They are carpet insidiously in the depths of your directory trees. But how to identify them with certainty?

This is where the utilities offered by Karaboss become interesting!

To do this, Karaboss offers two Search modules:

  • Look for duplicates within your library or any other tree.
  • Look for duplicates in relation to your library.
    In this case, compares the files you want to add to your library to eliminate the ones you already have.

Keep reassured, Karaboss does not search for duplicates based on unsafe criteria such as file name or file size.
To detect duplicates, the software will create an index of all your files, each time calculating the MD5 checksum of the file. If two checksums MD5 are identical, it means that both files have identical content, without necessarily having the same name or the same size.

In addition, when duplicates are detected, no deletion is made.
At the end of the search process, you have the choice to either move the duplicate files to a subdirectory named “doubles”, or touch nothing, but simply display a list of duplicates allowing you to manually process each file.

In the case of moving duplicates to a subdirectory, it is the file with the shortest name that is moved (we don’t want to destroy all your renaming work!)

Choosing to move duplicates to a subdirectory is especially useful when you want to import new files into your library. This automatically deletes the files you already have from your import directory.

How to proceed ?

You access the file management utilities from the Karaboss Explorer.

Menu “Tools” > “Manage my files

Conversion MIDI to MP3, WAV and FLAC

Convert MIDI files to mp3, flac or wav

Would you like to convert your MIDI files to music files (MP3, WAV, FLAC) compatible with Windows Media Player, Winamp etc …?

Do you want them close at hand, so you can listen to them on any occasion, by recording them on a CD, a USB key, or your smartphone?

Do you want to share them with others who do not have Karaboss?

Needless to say that you want a quality conversion that uses your favorite Soundbank.

Do not search anymore !

The solution exists and it is probably already at your disposal!
If you have installed Coolsoft’s VirtualMidiSynth synthesizer, be aware that since version 2.2.0 it has included a MIDI file converter to MP3, WAV and FLAC formats!

How to do ?

When you launch Karaboss, VirtualMidiSynth is also automatically activated without necessarily being visible.

It is however visible in the taskbar of Windows.
Menu Midi conversion

Click on its icon, and the following menu will appear:

Click on the “MIDI file converter” menu
The following window is displayed:
Click on the “+” button to select the file to convert and choose the conversion format (mp3, flac, wav) from the drop-down list.

Midi Conversion Windows

WAV conversion is not a problem and works the first time.
Conversions to MP3 and FLAC, however, require downloading and adding conversion libraries.
These libraries are not included during the installation of VirtualMIDISynth for licensing reasons.
This installation is nevertheless easy and guided by VirtualMIDISynth.

Case of mp3 conversion
For licensing reasons, VirtualMidiSynth does not deliver the mp3 conversion library (LAME).
When you have chosen the MIDI file to convert and click on the “Start Conversion” button, the following message is displayed:

Midi conversion warning

Click on the “OK” button to display the LAME library download page (http://www.rarewares.org/mp3-lame-bundle.php)
Download the zipped compressed file corresponding to your configuration (usually “LAME 3.100 64bit” if you are in Windows 7 or higher.

Unzip the file where it was downloaded, you should get two files “lame.exe” and “lame_enc.dll” and a directory “doc” that it is not necessary to keep.

Simply copy these two files to the “C: \ Program Files \ VirtualMIDISynth \ encoders” directory as shown in the message.

And that’s all, your encoder is ready to convert your MIDI files to mp3.
You will see that the conversion is very fast and that the result is of the same quality as that interpreted by Karaboss, VirtualMIDISynth and your sound bank.

Case of FLAC conversion

Proceed in the same way as for the MP3 format.

How to Hear Your Microphone Through Computer Speakers

How to Listen to the microphone?

When you launch an application on your PC, a video, a mp3, or Karaboss Karaoke player, the sound is transmitted to the speakers.

Unfortunately, the sound of the microphone, remains inaudible …
And a Karaoke without any microphone…

Indeed, by default, Windows does not automatically output the audio through the computer’s speakers.

This is on purpose.

Why ?

It is not to complicate your life, but simply to prevent the microphone, capturing the crystalline sound of your voice, but also that of the speakers, does not create an infernal loop of amplification, which ends with a shrill sound, the effect Larsen.

The sound emitted by the speakers is picked up by the microphone which transmits it amplified to the speakers. This signal is again picked up by the microphone and re-amplified, and so on.

So avoid this on a laptop where the speakers and the built-in microphone are very close, but it is quite possible when using an external microphone and not directed to the speakers.

The solution ?

  • Right-click the speaker icon in the notification area.
  • Choose the “Recording Devices” menu, and the window below is displayed.
  • Select the “Registration” tab.
  • Select the active microphone (make it active if necessary) and click on the “Properties” button.

Select micro
The following window is displayed:

Activate micro
Check the box “Listen to this device”

And now you listen the sound of the microphone in your speakers.
Unfortunately, this manipulation, excessively simple, does not always provide the expected result.

Latency

You listen your microphone in the speakers, but the sound is offset by a fraction of a second. And in the case of Karaoke, it’s just unusable.

On recent versions of Windows, the activity “resident” (everything that runs in the background) is important (services, applications, anti-virus etc …) and sound management is not managed on a high priority.

I was able to successfully test one of the methods recommended by gurus sites: the installation of ASIO drivers.
I did not go so far as to install specific drivers for my motherboard, but the generic ASIO4ALL drivers available here.

After installation, the result was rather correct, but maybe it’s due to my configuration, and it will not work everywhere.

To go further in optimization for management of sound:
https://support.native-instruments.com/hc/en-us/articles/209571729

CSV file structure

RECORD STRUCTURE of CSV files

Source :  John Walker (site fourmilab)
Each record in the CSV representation of a MIDI contains at least three fields:

Track
Numeric field identifying the track to which this record belongs. Tracks of MIDI data are numbered starting at 1. Track 0 is reserved for file header, information, and end of file records.
Time
Absolute time, in terms of MIDI clocks, at which this event occurs. Meta-events for which time is not meaningful (for example, song title, copyright information, etc.) have an absolute time of 0.
Type
Name identifying the type of the record. Record types are text consisting of upper and lower case letters and the underscore (“_”), contain no embedded spaces, and are not enclosed in quotes. Karaboss ignores upper/lower case in the Type field; the specifications “Note_on_c”, “Note_On_C”, and “NOTE_ON_C” are considered identical.

Records in the CSV file are sorted first by the track number, then by time. Out of order records will be discarded with an error message from Karaboss. Following the three required fields are parameter fields which depend upon the Type; some Types take no parameters. Each Type and its parameter fields is discussed below.

Any line with an initial nonblank character of “#” or “;” is ignored; either delimiter may be used to introduce comments in a CSV file. Only full-line comments are permitted; you cannot use these delimiters to terminate scanning of a regular data record. Completely blank lines are ignored.

File Structure Records

0, 0, Header, format, nTracks, division
The first record of a CSV MIDI file is always the Header record. Parameters are format: the MIDI file type (0, 1, or 2), nTracks: the number of tracks in the file, and division: the number of clock pulses per quarter note. The Track and Time fields are always zero.
0, 0, End_of_file
The last record in a CSV MIDI file is always an End_of_file record. Its Track and Time fields are always zero.
Track, 0, Start_track
Start_track record marks the start of a new track, with the Track field giving the track number. All records between the Start_track record and the matching End_track will have the same Track field.
Track, Time, End_track
An End_track marks the end of events for the specified Track. The Time field gives the total duration of the track, which will be identical to the Time in the last event before the End_track.

File Meta-Events

The following events occur within MIDI tracks and specify various kinds of information and actions. They may appear at any time within the track. Those which provide general information for which time is not relevant usually appear at the start of the track with Time zero, but this is not a requirement.

Many of these meta-events include a text string argument. Text strings are output in CSV records enclosed in ASCII double quote (“) characters. Quote characters embedded within strings are represented by two consecutive quotes. Non-graphic characters in the ISO 8859-1 Latin-1 set are output as a backslash followed by their three digit octal character code. Two consecutive backslashes denote a literal backslash in the string. Strings in MIDI files can be extremely long, theoretically as many as 228−1 characters; programs which process MIDI CSV files should take care to avoid buffer overflows or truncation resulting from lines containing long string items. All meta-events which take a text argument are identified by a suffix of “_t”.

Track, Time, Title_t, Text
The Text specifies the title of the track or sequence. The first Title meta-event in a type 0 MIDI file, or in the first track of a type 1 file gives the name of the work. Subsequent Title meta-events in other tracks give the names of those tracks.
Track, Time, Copyright_t, Text
The Text specifies copyright information for the sequence. This is usually placed at time 0 of the first track in the sequence.
Track, Time, Instrument_name_t, Text
The Text names the instrument intended to play the contents of this track, This is usually placed at time 0 of the track. Note that this meta-event is simply a description; MIDI synthesisers are not required (and rarely if ever) respond to it. This meta-event is particularly useful in sequences prepared for synthesisers which do not conform to the General MIDI patch set, as it documents the intended instrument for the track when the sequence is used on a synthesiser with a different patch set.
Track, Time, Marker_t, Text
The Text marks a point in the sequence which occurs at the given Time, for example “Third Movement”.
Track, Time, Cue_point_t, Text
The Text identifies synchronisation point which occurs at the specified Time, for example, “Door slams”.
Track, Time, Lyric_t, Text
The Text gives a lyric intended to be sung at the given Time. Lyrics are often broken down into separate syllables to time-align them more precisely with the sequence.
Track, Time, Text_t, Text
This meta-event supplies an arbitrary Text string tagged to the Track and Time. It can be used for textual information which doesn’t fall into one of the more specific categories given above.
Track, 0, Sequence_number, Number
This meta-event specifies a sequence Number between 0 and 65535, used to arrange multiple tracks in a type 2 MIDI file, or to identify the sequence in which a collection of type 0 or 1 MIDI files should be played. The Sequence_number meta-event should occur at Time zero, at the start of the track.
Track, Time, MIDI_port, Number
This meta-event specifies that subsequent events in the Track should be sent to MIDI port (bus) Number, between 0 and 255. This meta-event usually appears at the start of a track with Time zero, but may appear within a track should the need arise to change the port while the track is being played.
Track, Time, Channel_prefix, Number
This meta-event specifies the MIDI channel that subsequent meta-events and System_exclusive events pertain to. The channel Number specifies a MIDI channel from 0 to 15. In fact, the Number may be as large as 255, but the consequences of specifying a channel number greater than 15 are undefined.
Track, Time, Time_signature, Num, Denom, Click, NotesQ
The time signature, metronome click rate, and number of 32nd notes per MIDI quarter note (24 MIDI clock times) are given by the numeric arguments. Num gives the numerator of the time signature as specified on sheet music. Denom specifies the denominator as a negative power of two, for example 2 for a quarter note, 3 for an eighth note, etc. Click gives the number of MIDI clocks per metronome click, and NotesQ the number of 32nd notes in the nominal MIDI quarter note time of 24 clocks (8 for the default MIDI quarter note definition).
Track, Time, Key_signature, Key, Major/Minor
The key signature is specified by the numeric Key value, which is 0 for the key of C, a positive value for each sharp above C, or a negative value for each flat below C, thus in the inclusive range −7 to 7. The Major/Minorfield is a quoted string which will be major for a major key and minor for a minor key.
Track, Time, Tempo, Number
The tempo is specified as the Number of microseconds per quarter note, between 1 and 16777215. A value of 500000 corresponds to 120 quarter notes (“beats”) per minute. To convert beats per minute to a Tempo value, take the quotient from dividing 60,000,000 by the beats per minute.
Track, 0, SMPTE_offset, Hour, Minute, Second, Frame, FracFrame
This meta-event, which must occur with a zero Time at the start of a track, specifies the SMPTE time code at which it should start playing. The FracFrame field gives the fractional frame time (0 to 99).
Track, Time, Sequencer_specific, Length, Data, …
The Sequencer_specific meta-event is used to store vendor-proprietary data in a MIDI file. The Length can be any value between 0 and 228−1, specifying the number of Data bytes (between 0 and 255) which follow.Sequencer_specific records may be very long; programs which process MIDI CSV files should be careful to protect against buffer overflows and truncation of these records.
Track, Time, Unknown_meta_event, Type, Length, Data, …
If Karaboss encounters a meta-event with a code not defined by the standard MIDI file specification, it outputs an unknown meta-event record in which Type gives the numeric meta-event type code, Length the number of data bytes in the meta-event, which can be any value between 0 and 228−1, followed by the Data bytes. Since meta-events include their own length, it is possible to parse them even if their type and meaning are unknown.Karaboss will reconstruct unknown meta-events with the same type code and content as in the original MIDI file.

Channel Events

These events are the “meat and potatoes” of MIDI files: the actual notes and modifiers that command the instruments to play the music. Each has a MIDI channel number as its first argument, followed by event-specific parameters. To permit programs which process CSV files to easily distinguish them from meta-events, names of channel events all have a suffix of “_c”.

Track, Time, Note_on_c, Channel, Note, Velocity
Send a command to play the specified Note (Middle C is defined as Note number 60; all other notes are relative in the MIDI specification, but most instruments conform to the well-tempered scale) on the given Channelwith Velocity (0 to 127). A Note_on_c event with Velocity zero is equivalent to a Note_off_c.
Track, Time, Note_off_c, Channel, Note, Velocity
Stop playing the specified Note on the given Channel. The Velocity should be zero, but you never know what you’ll find in a MIDI file.
Track, Time, Pitch_bend_c, Channel, Value
Send a pitch bend command of the specified Value to the given Channel. The pitch bend Value is a 14 bit unsigned integer and hence must be in the inclusive range from 0 to 16383. The value 8192 indicates no pitch bend; 0 the lowest pitch bend, and 16383 the highest. The actual change in pitch these values produce is unspecified.
Track, Time, Control_c, Channel, Control_num, Value
Set the controller Control_num on the given Channel to the specified ValueControl_num and Value must be in the inclusive range 0 to 127. The assignment of Control_num values to effects differs from instrument to instrument. The General MIDI specification defines the meaning of controllers 1 (modulation), 7 (volume), 10 (pan), 11 (expression), and 64 (sustain), but not all instruments and patches respond to these controllers. Instruments which support those capabilities usually assign reverberation to controller 91 and chorus to controller 93.
Track, Time, Program_c, Channel, Program_num
Switch the specified Channel to program (patch) Program_num, which must be between 0 and 127. The program or patch selects which instrument and associated settings that channel will emulate. The General MIDI specification provides a standard set of instruments, but synthesisers are free to implement other sets of instruments and many permit the user to create custom patches and assign them to program numbers.

Apparently, due to instrument manufacturers’ skepticism about musicians’ ability to cope with the number zero, many instruments number patches from 1 to 128 rather than the 0 to 127 used within MIDI files. When interpreting Program_num values, note that they may be one less than the patch numbers given in an instrument’s documentation.

Track, Time, Channel_aftertouch_c, Channel, Value
When a key is held down after being pressed, some synthesisers send the pressure, repeatedly if it varies, until the key is released, but do not distinguish pressure on different keys played simultaneously and held down. This is referred to as “monophonic” or “channel” aftertouch (the latter indicating it applies to the Channel as a whole, not individual note numbers on that channel). The pressure Value (0 to 127) is typically taken to apply to the last note played, but instruments are not guaranteed to behave in this manner.
Track, Time, Poly_aftertouch_c, Channel, Note, Value
Polyphonic synthesisers (those capable of playing multiple notes simultaneously on a single channel), often provide independent aftertouch for each note. This event specifies the aftertouch pressure Value (0 to 127) for the specified Note on the given Channel.

System Exclusive Events

System Exclusive events permit storing vendor-specific information to be transmitted to that vendor’s products.

Track, Time, System_exclusive, Length, Data, …
The Length bytes of Data (0 to 255) are sent at the specified Time to the MIDI channel defined by the most recent Channel_prefix event on the Track, as a System Exclusive message. Note that Length can be any value between 0 and 228−1. Programs which process MIDI CSV files should be careful to protect against buffer overflows and truncation of these records.
Track, Time, System_exclusive_packet, Length, Data, …
The Length bytes of Data (0 to 255) are sent at the specified Time to the MIDI channel defined by the most recent Channel_prefix event on the Track. The Data bytes are simply blasted out to the MIDI bus without any prefix. This message is used by MIDI devices which break up long system exclusive message into small packets, spaced out in time to avoid overdriving their modest microcontrollers. Note that Length can be any value between 0 and 228−1. Programs which process MIDI CSV files should be careful to protect against buffer overflows and truncation of these records.

EXAMPLES

The following CSV file defines the five-note motif from the film Close Encounters of the Third Kind using an organ patch from the General MIDI instrument set. When processed by Karaboss and sent to a synthesiser which conforms to General MIDI, the sequence will be played.

0, 0, Header, 1, 2, 480
1, 0, Start_track
1, 0, Title_t, "Close Encounters"
1, 0, Text_t, "Sample for MIDIcsv Distribution"
1, 0, Copyright_t, "This file is in the public domain"
1, 0, Time_signature, 4, 2, 24, 8
1, 0, Tempo, 500000
1, 0, End_track
2, 0, Start_track
2, 0, Instrument_name_t, "Church Organ"
2, 0, Program_c, 1, 19
2, 0, Note_on_c, 1, 79, 81
2, 960, Note_off_c, 1, 79, 0
2, 960, Note_on_c, 1, 81, 81
2, 1920, Note_off_c, 1, 81, 0
2, 1920, Note_on_c, 1, 77, 81
2, 2880, Note_off_c, 1, 77, 0
2, 2880, Note_on_c, 1, 65, 81
2, 3840, Note_off_c, 1, 65, 0
2, 3840, Note_on_c, 1, 72, 81
2, 4800, Note_off_c, 1, 72, 0
2, 4800, End_track
0, 0, End_of_file

Midi CSV conversions

Convert MIDI files to CSV text files and vice versa

Source :  John Walker (site fourmilab)

The MIDI file format is perfect for what it was designed for, but it is not very open.
It is recorded in binary format and its complex format requires specialized libraries for reading and writing, not common in commercial tools.

The advantage of exporting functions to the CSV text format is to open the MIDI format to tools that manipulate text.
Then simply re-import the result of these processing in MIDI format with the inverse import function.

Export

Karaboss has an export function that allows you to convert a MIDI file into a CSV text file, keeping all the information contained in the original MIDI file.

How?

From the Explorer, select a  Midi file and open it in the player (Edit or Play/Stop)
Click on the menu  “File” > “Export Midi file to TEXT”
The MIDI file will be then exported to a text file named “FileName (Dump) .txt” located in the same directory as your original MIDI file, and will be displayed in your default text editor (notepad, notepad ++ etc …)

Import

In the same way, Karaboss has an import function allowing you to convert a CSV text file into MIDI format.

How?

From the MIDI Player, click on the menu “File”> “Import Midi file from TEXT”.
Select a file in compatible format.
The file will then be converted to in the MIDI format and displayed in your editor.

Note:

In principle, exporting and re-importing a file should produce a result equivalent to the original MIDI file.
The import and export functions of Karaboss are not yet fully finalized and do not take into account all MIDI events.

The standard used

See the following document

Simple export example:

0, 0, Header, 1, 2, 480
1, 0, Start_track
1, 0, Title_t, "Close Encounters"
1, 0, Text_t, "Sample for MIDIcsv Distribution"
1, 0, Copyright_t, "This file is in the public domain"
1, 0, Time_signature, 4, 2, 24, 8
1, 0, Tempo, 500000
1, 0, End_track
2, 0, Start_track
2, 0, Instrument_name_t, "Church Organ"
2, 0, Program_c, 1, 19
2, 0, Note_on_c, 1, 79, 81
2, 960, Note_off_c, 1, 79, 0
2, 960, Note_on_c, 1, 81, 81
2, 1920, Note_off_c, 1, 81, 0
2, 1920, Note_on_c, 1, 77, 81
2, 2880, Note_off_c, 1, 77, 0
2, 2880, Note_on_c, 1, 65, 81
2, 3840, Note_off_c, 1, 65, 0
2, 3840, Note_on_c, 1, 72, 81
2, 4800, Note_off_c, 1, 72, 0
2, 4800, End_track
0, 0, End_of_file