# MIDI to MakeCode Arcade converter…again

**URL:** <https://forum.makecode.com/t/midi-to-makecode-arcade-converter-again/44655>\
**Category:** Show & Tell\
**Tags:** art, music\
**Created:** [June 22, 2026, 5:53pm UTC](https://forum.makecode.com/t/midi-to-makecode-arcade-converter-again/44655 "2026-06-22T17:53:32Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![UnsignedArduino](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/unsignedarduino/32/592_2.png) [@UnsignedArduino](https://forum.makecode.com/u/UnsignedArduino)\
**Post date:** [June 22, 2026, 5:53pm UTC](https://forum.makecode.com/t/midi-to-makecode-arcade-converter-again/44655/1 "2026-06-22T17:53:32Z")

</div>

Introducing _another_ MIDI-to-MakeCode-Arcade song converter!

> **[GitHub - UnsignedArduino/MIDI-to-MakeCode-Arcade: A Python tool to convert a MIDI file to a MakeCode...](https://github.com/UnsignedArduino/MIDI-to-MakeCode-Arcade)**
>
> A Python tool to convert a MIDI file to a MakeCode Arcade song!

A simple Python CLI tool that converts your MIDI files into a MakeCode Arcade song ready to play! **Unlike previous versions, this tool now supports the base 128 melodic instruments in MIDI and drum notes** , allowing for rich-sounding symphony/orchestra-level/DAW music directly in your MakeCode Arcade games without any extra extensions or complex code - just a (really long) song buffer!

## Demos

The obligatory demos, listed below. (for a more accurate sound, use the links in the detail below that open directly in the beta editor, as per-chord velocity is still in beta) Press B to toggle the track viewer, and use arrow keys in the track viewer to highlight a track if desired.

> **Use these links in this detail to open the demos below in the beta editor**
>
> **It is highly recommended that you open these links in incognito mode or a different browser than normal** so that the beta editor is unable to interact with your regular projects or Microsoft (MakeCode Arcade) or GitHub account!
> 
> - [Open La Campanella in the beta editor](https://arcade.makecode.com/beta#pub:86250-99750-01840-39835)
> - [Open A Cruel Angel’s Thesis in the beta editor](https://arcade.makecode.com/beta#pub:36872-81514-55127-81629)
> - [Open Golden in the beta editor](https://arcade.makecode.com/beta#pub:00845-99229-01720-87687)
> - [Open Never Gonna Give You Up in the beta editor](https://arcade.makecode.com/beta#pub:48529-52282-12898-52789)

> **[Étude S. 141/3 in G♯ Minor (La Campanella) by Franz Liszt](https://arcade.makecode.com/86250-99750-01840-39835)**
>
> Étude S. 141/3 in G♯ Minor (La Campanella) by Franz Liszt
> 
> Source from @ClassicMan from https://musescore.com/classicman/scores/106022
> 
> Instrument file by @UnsignedArduino
> 
> Generated by https://github.com/UnsignedArduino/MIDI-to-MakeCode-Arcade
> 
> Song...

> **[A Cruel Angel's Thesis from Neon Genesis Evangelion](https://arcade.makecode.com/36872-81514-55127-81629)**
>
> A Cruel Angel's Thesis from Neon Genesis Evangelion
> 
> From SpessaSynth's demo catalog
> 
> Instrument file by @UnsignedArduino
> 
> Generated by https://github.com/UnsignedArduino/MIDI-to-MakeCode-Arcade
> 
> Song visualizer from...

> **[Golden (Huntrix) from KPop Demon Hunters](https://arcade.makecode.com/00845-99229-01720-87687)**
>
> Golden (Huntrix) from KPop Demon Hunters
> 
> Arranged by @Di5co3 from https://musescore.com/user/50785068/scores/26779480
> 
> Instrument file by @UnsignedArduino
> 
> Generated by https://github.com/UnsignedArduino/MIDI-to-MakeCode-Arcade
> 
> Song visualizer from...

> **[Never Gonna Give You Up by Rick Astley](https://arcade.makecode.com/48529-52282-12898-52789)**
>
> Never Gonna Give You Up by Rick Astley
> 
> Arranged by @Banana1242 from https://musescore.com/user/33272014/scores/6356612
> 
> Instrument file by @UnsignedArduino
> 
> Generated by https://github.com/UnsignedArduino/MIDI-to-MakeCode-Arcade
> 
> Song visualizer...

## How it Works

### Instrument parameter files

> **Expand detail to read**
>
> A 1.5k handwritten YAML file is used to define what all 128 melodic instruments and 61 drum notes sound like. Excerpts below:
> 
> ```auto
> melodic_instruments:
> # Pianos
> - instrument: 0
> _comment: Acoustic Grand Piano
> waveform: triangle
> amp_envelope: { attack: 5, decay: 500, sustain: 200, release: 200, amplitude: 768 }
> pitch_envelope: { attack: 0, decay: 0, sustain: 0, release: 0, amplitude: 0 }
> amp_lfo: { frequency: 0, amplitude: 0 }
> pitch_lfo: { frequency: 0, amplitude: 0 }
> 
> ```
> 
> ```auto
> - instrument: 12
> _comment: Marimba
> waveform: sine
> amp_envelope: { attack: 5, decay: 300, sustain: 0, release: 200, amplitude: 1024 }
> pitch_envelope: { attack: 0, decay: 0, sustain: 0, release: 0, amplitude: 0 }
> amp_lfo: { frequency: 0, amplitude: 0 }
> pitch_lfo: { frequency: 1, amplitude: 1 }
> 
> ```
> 
> ```auto
> - note: 38
> _comment: Snare Drum 1
> start_freq: 800
> start_vol: 300
> steps:
> - { waveform: triangle, target_freq: 100, target_vol: 300, duration: 10 }
> - { waveform: noise, target_freq: 0, target_vol: 300, duration: 10 }
> - { waveform: noise, target_freq: 0, target_vol: 200, duration: 10 }
> - { waveform: noise, target_freq: 0, target_vol: 0, duration: 40 }
> 
> ```
> 
> ```auto
> - note: 36
> _comment: Bass Drum 1
> start_freq: 120
> start_vol: 1024
> steps:
> - { waveform: sine, target_freq: 70, target_vol: 850, duration: 25 }
> - { waveform: sine, target_freq: 45, target_vol: 350, duration: 35 }
> - { waveform: sine, target_freq: 35, target_vol: 0, duration: 50 }
> 
> ```
> 
> It follows exactly the instrument encoding for MakeCode Arcade songs:
> 
> [https://github.com/microsoft/pxt/blob/master/pxtlib/music.ts#L23-L94](https://github.com/microsoft/pxt/blob/master/pxtlib/music.ts#L23-L94)
> 
> Then some Python scripting is used to read and map the MIDI file’s note on/off for each instrument into a song! Funnily enough, most of the effort was actually writing the instrument file by hand, as [Claude’s attempt](https://github.com/UnsignedArduino/MIDI-to-MakeCode-Arcade/blob/main/example/instrument_params_2.yaml) resulted in something interesting…I think I’ll let Claude and Gemini help me with coding…

### What it Supports

Excerpt from the README:

> Standards:
> 
> - [General MIDI 1](https://en.wikipedia.org/wiki/General_MIDI) melodic instruments (0-127) and the standard drum kit notes (35-81)
> - [General MIDI 2](https://en.wikipedia.org/wiki/General_MIDI_Level_2) extended drum note range (27-87) on the standard drum kit only
> - Roland GS/Yamaha XG SysEx messages for track switching to standard drums only
> 
> Features/MIDI messages:
> 
> - Tempo changes
> - MIDI ports and channels
> - Common control changes and Roland GS/Yamaha XG SysEx messages to switch a track to a drum track and back (will only use the standard drum kit notes)
> - Per-note velocity (MakeCode Arcade will ignore this for now, but it’s in the song’s output - MakeCode Arcade beta at the time of writing supports it)

See [`src/midi_to_song/timeline/parser.py`](https://github.com/UnsignedArduino/MIDI-to-MakeCode-Arcade/blob/main/src/midi_to_song/timeline/parser.py) to find the exact messages and their values that are supported.

## Other Tools / Versions

Here are some other similar tools you should check out!

- @richard’s [MIDI converter](https://forum.makecode.com/t/makecode-midi-converter/43881), which works on the web! It’s better at respecting the MakeCode Arcade song editor’s constraints and using the default instruments. I’d also like to thank Richard for [helping me a lot overall with this!](https://forum.makecode.com/t/new-song-format/17763)
- @WoodysWorkshop’s [MIDI converter](https://forum.makecode.com/t/midi-to-makecode/40857), which also works on the web and supports lyrics!
- [pxt-rtttl](https://forum.makecode.com/t/rtttl-tunes-extension/4193) to play music written in RTTL syntax.
- [arcade-mml](https://forum.makecode.com/t/extension-arcade-mml/31351) to play music written in MML syntax.

And previous versions of MIDI in MakeCode Arcade by me (that are now basically garbage compared to this…)

- [ArcadeMIDI](https://forum.makecode.com/t/arcademidi-extension/15079) which uses images to convey music information and play it back with an extension. Worse performance as JS is managing notes, and less features and is less accurate.
- [Musical-Images](https://forum.makecode.com/t/music-requests/6454/22) which also uses images to convey music information and play it back with an extension. Even worse than ArcadeMIDI in every way.

## Using it Yourself

To create your own MakeCode Arcade songs, follow the instructions in the README to set up and run the Python tool. (this is not a web app - you need to be able to run Python code somewhere. If you are a Chromebook user and cannot set up Linux usage, try an online environment like GitHub Codespaces, which provides a full Linux environment. Python knowledge is highly recommended - use your favorite search engine or AI assistant or post below or in GitHub issues if you need help or run into any issues!)

The GitHub repo’s README also includes instructions on creating/tuning your own instrument parameter files if desired.

If you want to use the song visualizer yourself, you can find that [here](https://github.com/UnsignedArduino/Song-Visualizer) (you can import it in an incognito tab/different browser in the beta editor to then paste your own song output). The code was adapted from my original [piano synthesia code](https://forum.makecode.com/t/piano-synthesia/22138), which permanently borrowed code from @AqeeAqee’s [Karaoke](https://forum.makecode.com/t/karaoke/22038).

Enjoy!

---

<div class="post-metadata">

**Author:** ![YamJam](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/yamjam/32/29681_2.png) [@YamJam](https://forum.makecode.com/u/YamJam)\
**Post date:** [June 23, 2026, 7:19pm UTC](https://forum.makecode.com/t/midi-to-makecode-arcade-converter-again/44655/2 "2026-06-23T19:19:25Z")

</div>

So now you can create music in another editor like musescore and then convert it into makecode? Sweet!

---

<div class="post-metadata">

**Author:** ![GoObErsandwichdude64](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/goobersandwichdude64/32/34178_2.png) [@GoObErsandwichdude64](https://forum.makecode.com/u/GoObErsandwichdude64)\
**Post date:** [June 24, 2026, 4:59pm UTC](https://forum.makecode.com/t/midi-to-makecode-arcade-converter-again/44655/3 "2026-06-24T16:59:36Z")

</div>

yo @UnsignedArduino when i go to [https://unsignedarduino.github.io/song-visualizer/](https://unsignedarduino.github.io/song-visualizer/) i get 404 did you forget to turn it in to a page?

---

<div class="post-metadata">

**Author:** ![UnsignedArduino](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/unsignedarduino/32/592_2.png) [@UnsignedArduino](https://forum.makecode.com/u/UnsignedArduino)\
**Post date:** [June 25, 2026, 2:36am UTC](https://forum.makecode.com/t/midi-to-makecode-arcade-converter-again/44655/4 "2026-06-25T02:36:06Z")

</div>

Didn’t intend on using the GitHub pages as my normal workflow was open MakeCode Arcade Beta in incognito tab, import that repo, add in song and change title, etc., and share a link and then done. I never decided to create a release because the song visualizer is a one-off thing, but thanks for letting me know.

---

<div class="post-metadata">

**Author:** ![GoObErsandwichdude64](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/goobersandwichdude64/32/34178_2.png) [@GoObErsandwichdude64](https://forum.makecode.com/u/GoObErsandwichdude64)\
**Post date:** [June 25, 2026, 2:38am UTC](https://forum.makecode.com/t/midi-to-makecode-arcade-converter-again/44655/5 "2026-06-25T02:38:41Z")

</div>

yo @UnsignedArduino again i get this Traceback (most recent call last):  
File “/workspaces/makecode-music-convert/MIDI-to-MakeCode-Arcade/src/main.py”, line 6, in   
from cli import generate\_and\_parse\_args, generate\_melodic\_instrument\_sample,   
File “/workspaces/makecode-music-convert/MIDI-to-MakeCode-Arcade/src/cli.py”, line 9, in   
from midi\_to\_song import InstrumentParameterMapping, TestingOptionsForMIDIToSong,   
File “/workspaces/makecode-music-convert/MIDI-to-MakeCode-Arcade/src/midi\_to\_song/ **init**.py”, line 10, in   
from midi\_to\_song.instruments import InstrumentParameterMapping  
File “/workspaces/makecode-music-convert/MIDI-to-MakeCode-Arcade/src/midi\_to\_song/instruments.py”, line 9, in   
from midi\_to\_song.models import TestingOptionsForLoadInstrumentParams  
File “/workspaces/makecode-music-convert/MIDI-to-MakeCode-Arcade/src/midi\_to\_song/models.py”, line 32, in   
class ChannelState:  
File “/workspaces/makecode-music-convert/MIDI-to-MakeCode-Arcade/src/midi\_to\_song/models.py”, line 37, in ChannelState  
drum\_determined\_by: DrumDeterminationSource  
^^^^^^^^^^^^^^^^^^^^^^^  
NameError: name ‘DrumDeterminationSource’ is not defined  
help peezzz my audio file is the it is a mid  
[https://zeldacentral.com/midi/spirit-tracks](https://zeldacentral.com/midi/spirit-tracks) it is the Spirit Tracks - Fleeing by Demon Train.mid file help

---

<div class="post-metadata">

**Author:** ![Rune](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/rune/32/18951_2.png) [@Rune](https://forum.makecode.com/u/Rune)\
**Post date:** [June 25, 2026, 2:42am UTC](https://forum.makecode.com/t/midi-to-makecode-arcade-converter-again/44655/6 "2026-06-25T02:42:36Z")

</div>

Yet another one! The piano graphics are a nice touch.

---

<div class="post-metadata">

**Author:** ![UnsignedArduino](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/unsignedarduino/32/592_2.png) [@UnsignedArduino](https://forum.makecode.com/u/UnsignedArduino)\
**Post date:** [June 25, 2026, 6:06pm UTC](https://forum.makecode.com/t/midi-to-makecode-arcade-converter-again/44655/7 "2026-06-25T18:06:16Z")

</div>

Its definitely defined cause it runs perfectly fine on my computer lol, are you in the root directory and running the program like `python src/main.py ...`? What version of Python are you on?

---

<div class="post-metadata">

**Author:** ![GoObErsandwichdude64](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/goobersandwichdude64/32/34178_2.png) [@GoObErsandwichdude64](https://forum.makecode.com/u/GoObErsandwichdude64)\
**Post date:** [June 25, 2026, 9:20pm UTC](https://forum.makecode.com/t/midi-to-makecode-arcade-converter-again/44655/8 "2026-06-25T21:20:42Z")

</div>

uuuhhhh what ever github codespaces is

---

<div class="post-metadata">

**Author:** ![UnsignedArduino](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/unsignedarduino/32/592_2.png) [@UnsignedArduino](https://forum.makecode.com/u/UnsignedArduino)\
**Post date:** [June 26, 2026, 4:41pm UTC](https://forum.makecode.com/t/midi-to-makecode-arcade-converter-again/44655/9 "2026-06-26T16:41:58Z")

</div>

I’ve fixed it and pushed the new code, so you can `git pull` or delete and reinit the codespace. Apparently Python 3.14 introduced forward references, and Codespace’s current Python 3.12 doesn’t support something like this out of the box, so a simple `from __future__ import annotations` fixes it.

```py
@dataclass
class ChannelState:
    program: int # instrument
    bank_select_msb: int
    bank_select_lsb: int
    is_drum: bool
    drum_determined_by: DrumDeterminationSource # used before definition below

class DrumDeterminationSource(IntEnum):
    DEFAULT = 0
    CC = 1 # control change
    SYSEX = 2

```

Thanks for bringing this to my attention!

---

<div class="post-metadata">

**Author:** ![UnsignedArduino](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/unsignedarduino/32/592_2.png) [@UnsignedArduino](https://forum.makecode.com/u/UnsignedArduino)\
**Post date:** [July 30, 2026, 5:07pm UTC](https://forum.makecode.com/t/midi-to-makecode-arcade-converter-again/44655/10 "2026-07-30T17:07:13Z")

</div>

Updated the tool a bit (using `requirements.txt` and `pip` in the big 2026 is crazy); now it can import lyrics (I added lyrics to these two with MuseScore, it wasn’t that bad). Besides showing lyrics, you could use it to sync events, such as in a rhythm or story game. For a more accurate sound, use the links in the detail below that open directly in the beta editor, as per-chord velocity is still in beta.

> **Use these links in this detail to open the demos below in the beta editor**
>
> **It is highly recommended that you open these links in incognito mode or a different browser than normal** so that the beta editor is unable to interact with your regular projects or Microsoft (MakeCode Arcade) or GitHub account!
> 
> - [Open Golden (Huntrix) from KPop Demon Hunters in the beta editor](http://arcade.makecode.com/beta#pub:62571-45539-73542-76141)
> - [Open Never Gonna Give You Up in the beta editor](https://arcade.makecode.com/beta#pub:17599-66404-81028-76431)

> **[Golden (Huntrix) from KPop Demon Hunters](https://arcade.makecode.com/62571-45539-73542-76141)**
>
> Golden (Huntrix) from KPop Demon Hunters
> 
> Arranged by @Di5co3 from https://musescore.com/user/50785068/scores/26779480
> 
> Instrument file by @UnsignedArduino
> 
> Lyrics added by @UnsignedArduino
> 
> Generated by...

> **[Never Gonna Give You Up by Rick Astley](https://arcade.makecode.com/17599-66404-81028-76431)**
>
> Never Gonna Give You Up by Rick Astley
> 
> Arranged by @Banana1242 from https://musescore.com/user/33272014/scores/6356612
> 
> Instrument file by @UnsignedArduino
> 
> Lyrics added by @UnsignedArduino
> 
> Generated by...

Press B to switch through the main interface (no popup), track viewer, and lyric viewer. Run the Python tool with ` --generate-extra-code` to get something like this:

```ts
// Generated by https://github.com/UnsignedArduino/MIDI-to-MakeCode-Arcade
const songHex = hex`00780004186C0800001C...`;
const midiDrumNoteMap: number[] = [36, 38, 42, 44, 45, 46, 47, 48, 49, 50, 57];
const trackInstrumentMap: number[] = [34, 48, 52, 56, 57, 88, 90, -1];
const lyricTicks: number[] = [943, 956, 968, 981, 994, 1007, 1134, 1147, 1160, 1172, 1211, 1223, 1249, 1262, ...];
const lyricTexts: string[] = ["We're ", "no ", "stran", "gers ", "to ", "love ", "/You ", "know ", "the ", "rules ", "and ", "so ", "do ", "I ", ...];

```

`lyricTicks` and `lyricTexts` line up to say which string happens at which song tick.

---

<div class="post-metadata">

**Author:** ![not\_a\_lemon](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/not_a_lemon/32/35289_2.png) [@not\_a\_lemon](https://forum.makecode.com/u/not_a_lemon)\
**Post date:** [August 4, 2026, 8:43pm UTC](https://forum.makecode.com/t/midi-to-makecode-arcade-converter-again/44655/11 "2026-08-04T20:43:47Z")

</div>

How do I change the instrument a track uses?

---

<div class="post-metadata">

**Author:** ![UnsignedArduino](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/unsignedarduino/32/592_2.png) [@UnsignedArduino](https://forum.makecode.com/u/UnsignedArduino)\
**Post date:** [August 5, 2026, 2:40am UTC](https://forum.makecode.com/t/midi-to-makecode-arcade-converter-again/44655/12 "2026-08-05T02:40:06Z")

</div>

Can you explain more what you are trying to do? Like if you have a music or MIDI file, you can open that in a music notation software, MIDI editor, DAW, etc. and then modify the track to use a different instrument (like change marimba to xylophone or something). The instrument sounds themselves do not change (unless you change the instrument parameter file), they are only assigned depending on the instrument specified in the MIDI file

---

<div class="post-metadata">

**Author:** ![not\_a\_lemon](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/not_a_lemon/32/35289_2.png) [@not\_a\_lemon](https://forum.makecode.com/u/not_a_lemon)\
**Post date:** [August 5, 2026, 5:19pm UTC](https://forum.makecode.com/t/midi-to-makecode-arcade-converter-again/44655/13 "2026-08-05T17:19:04Z")

</div>

I mean like in makecode. Whenever I convert a MIDI file, it always uses instrument 1, and I also don’t think the tempo is right.

---

<div class="post-metadata">

**Author:** ![UnsignedArduino](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/unsignedarduino/32/592_2.png) [@UnsignedArduino](https://forum.makecode.com/u/UnsignedArduino)\
**Post date:** [August 5, 2026, 5:51pm UTC](https://forum.makecode.com/t/midi-to-makecode-arcade-converter-again/44655/14 "2026-08-05T17:51:07Z")

</div>

Hm, are you sure you are using a MIDI file that uses one of the 127 base instruments? (could you send it over for me to debug maybe?) Any of the sub bank melodic instruments in general midi 2 aren’t supported, only general midi 1. Additionally, most tempo markings should be respected, but once again, it could be a bug

---

<div class="post-metadata">

**Author:** ![not\_a\_lemon](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/not_a_lemon/32/35289_2.png) [@not\_a\_lemon](https://forum.makecode.com/u/not_a_lemon)\
**Post date:** [August 5, 2026, 5:57pm UTC](https://forum.makecode.com/t/midi-to-makecode-arcade-converter-again/44655/15 "2026-08-05T17:57:15Z")

</div>

Uhhhhh Idk  
I was only able to export a MIDI clip and not the full song, like this

 ![image](https://us1.discourse-cdn.com/flex020/uploads/makecode/original/3X/a/6/a622ee1af17f0e99aee6813dc6f5bbef174de236.png)  
(Only the yellow track highlighted blue could be exported, I can’t export the whole song or even multiple tracks)

Are the 127 instruments strictly defined or are they catergories (like ‘Violin’ meaning any type of Violin vs. ‘Violin’ meaning one specific instrument only)?

---

<div class="post-metadata">

**Author:** ![UnsignedArduino](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/unsignedarduino/32/592_2.png) [@UnsignedArduino](https://forum.makecode.com/u/UnsignedArduino)\
**Post date:** [August 5, 2026, 6:18pm UTC](https://forum.makecode.com/t/midi-to-makecode-arcade-converter-again/44655/16 "2026-08-05T18:18:58Z")

</div>

It is the exact instrument, not a range or category. Those instruments look incredibly specific, the instruments that are supported can be found here:

> **[General MIDI](https://en.wikipedia.org/wiki/General_MIDI)**
>
> General MIDI (also known as GM or GM 1) is a standardized specification for electronic musical instruments that respond to MIDI messages. GM was developed by the American MIDI Manufacturers Association (MMA) and the Japan MIDI Standards Committee (JMSC) and first published in 1991. The official specification is available in English from the MMA, bound together with the MIDI 1.0 specification, and in Japanese from the Association of Musical Electronic Industry (AMEI). GM imposes several requiremen...

Plus, there aren’t any features like pitch or mod bend; MakeCode Arcade’s song format is closer to traditional sheet music (editors like Sibelius, Dorico, Finale, MuseScore) than the full feature set of MIDI (DAWs like Ableton Live, FL Studio)
