Skip to content

wojciech-graj/TIC-MIDI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TIC-MIDI

A MIDI-to-TIC-80 converter.

"The mission, the nightmares... they’re finally... over." - CT-5385 (presumably about switching to TIC-MIDI ;) )

Features

  • Utilizes up to all 4 audio channels simultaneously
  • Has variable audio resolution to use more or less space in exchange for audio quality
  • Can map midi tracks to sfx as dictated by the user, allowing for different instruments
  • Has variable volume
  • Sets tempo and speed to match input
  • Can insert music into existing cart
  • Can use any memory bank

Limitations

  • Can only write a single file to a single track
  • Disregards multiple MIDI channels
  • Only considers the following MIDI messages: set_tempo, note_on, note_off
  • Only uses the Master Volume TIC-80 command
  • Does not generate sfx and waveforms

Usage

Make sure Python (3.9+) is available on your system.

Install the dependencies:

pip install -e .

OR

pip install 'mido>=1.2.0,<=1.3.2'

Then, simply invoke the script:

python tic_midi.py input_file -o output_file

To learn about the settings you can use, invoke the script with the -h flag:

python tic_midi.py -h

When playing the music with your lua code, set sustain=true in your music function call, since the converter currently doesn't re-play notes when starting a new frame.

A sample MIDI file, and the cartridge produced with it, can be found in the example directory.

Development setup

Install the development dependencies:

pip install -e '.[dev]'

License

    Copyright (C) 2023-2024  Wojciech Graj

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Affero General Public License for more details.

    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

Portions of this software are copyright of their respective authors:

  • mido, Licensed under the MIT License; Copyright (c) Ole Martin Bjørndalen