# libmidi
**Repository Path**: OpenCodeWin/libmidi
## Basic Information
- **Project Name**: libmidi
- **Description**: midi player base on timidity and imgui
- **Primary Language**: C/C++
- **License**: MIT
- **Default Branch**: main
- **Homepage**: https://github.com/opencodewin/libmidi
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-12-21
- **Last Updated**: 2023-12-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: audio, midi, music, imgui, timdity
## README
# News
- 2023/12/21 Publish libmidi on Gitee!
- 2022/9/22 Update libmidi version to 2.15.3, we support very large midi file playing such as millions voices midi files
[millions voices midi demo](midi_demo/test/red_zone_insane_black_remix.mid)
# Introduction
MIDI player base on timidity and imgui, support soundfont(SF2) and software MIDI keyboard.
- **App main window with paino keyboard view**

- **App main window with event rolling**

- **Soundfont Select**

- **Software MIDI keyboard**

*Software MIDI keyboard mapping*

- **Software MIDI keyboard instrument**

- **Console demo**

# Getting the Source
```bash
git clone --recurse-submodules https://github.com/opencodewin/libmidi
```
# Building
This project supports [CMake](https://cmake.org/) out of the box.
- **Linux**
Install dependence library ncurses with apt
- **MacOS**
Install dependence library ncurses with homebrew
- **Windows**
Using MSYS64 + Mingw64 + Clang/GCC
Install dependence library with pacman
- **imgui build**
See imgui document [imgui](https://github.com/opencodewin/imgui/blob/master/docs/README.md)
### Quick start:
- **download soundfont file**
*[GoogleDrive](https://drive.google.com/drive/folders/1ZwNonqFTQR1dRY0hijSMQbrLkHfJbkvW?usp=sharing)*.
*[BaiduYun](https://pan.baidu.com/s/1FIu6PsjO1FnMSABpSgPK8Q?pwd=901u) code: 901u*.
Copy soundfont files into soundfont folder, then you can using extra soundfont(GM best). if you have SF2 format soundfont files, also put them into folder.
```bash
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release .. && cmake --build .
./build/immidi
./build/timidity
```
# LICENSE
This project is released under [The MIT License](LICENSE)。