🎹 Listen to free MIDI songs, download the best MIDI files, and share the best MIDIs on the web
616
stars
1,464
commits
JavaScript
primary language
Aug 27, 2026
updated
Visit the live site at bitmidi.com, the wayback machine for old-school MIDI files! Check out some examples here:
It's easy to run the code!
git clone git@github.com:feross/bitmidi.com.git
cd bitmidi.com
npm install
sudo apt install graphicsmagickbrew install graphicsmagickimagemin-webp > cwebp-bin
sudo apt install libxi6 libglu1First, copy the sample secret file to a new file:
cp secret/index-sample.js secret/index.js
Second, run a local MySQL Server on port 3306 and create a database called bitmidi.com.
Don't forget to change the credentials in secret/index.js to match what you
configured! If you use a different MySQL version than what is specified, then
remember to change that, too. If you're running an older version of MySQL, you
may need to add a insecureAuth: true option under db.connection.
Once you complete the database setup, run the migrations:
npm run knex -- migrate:latest
To load the site with MIDI files, you need to have a folder with MIDI files in it. You can get a large collection here or some smaller ones here.
Then, in the project root, run this:
node -r @babel/register tools/import.js <path-to-folder-with-midis>
npm run build
npm start
npm run watch
Copyright (c) Feross Aboukhadijeh
JavaScript
93.5%
EJS
3.2%
CSS
1.7%
🎹 Listen to free MIDI songs, download the best MIDI files, and share the best MIDIs on the web
616
stars
1,464
commits
JavaScript
primary language
Aug 27, 2026
updated
Visit the live site at bitmidi.com, the wayback machine for old-school MIDI files! Check out some examples here:
It's easy to run the code!
git clone git@github.com:feross/bitmidi.com.git
cd bitmidi.com
npm install
sudo apt install graphicsmagickbrew install graphicsmagickimagemin-webp > cwebp-bin
sudo apt install libxi6 libglu1First, copy the sample secret file to a new file:
cp secret/index-sample.js secret/index.js
Second, run a local MySQL Server on port 3306 and create a database called bitmidi.com.
Don't forget to change the credentials in secret/index.js to match what you
configured! If you use a different MySQL version than what is specified, then
remember to change that, too. If you're running an older version of MySQL, you
may need to add a insecureAuth: true option under db.connection.
Once you complete the database setup, run the migrations:
npm run knex -- migrate:latest
To load the site with MIDI files, you need to have a folder with MIDI files in it. You can get a large collection here or some smaller ones here.
Then, in the project root, run this:
node -r @babel/register tools/import.js <path-to-folder-with-midis>
npm run build
npm start
npm run watch
Copyright (c) Feross Aboukhadijeh
JavaScript
93.5%
EJS
3.2%
CSS
1.7%