PotatoMidi
Configurable MIDI playback however you see fit! Like, singing notes, playing drums with a boxing glove...
About this mod Author’s original text
🎸Potato🥔Midi🎤
This mod takes MIDI input and allows you to configure it to output through not only guitar but in-game sounds, _however you see fit..._
Like, singing, or playing drums with a boxing glove, and more...
It's for power users who want to experimenting and enjoy playing around with a configuration file to make more noises than just guitar notes!
[!WARNING]
If you are not comfortable with editing
--or learning how to edit--
a.json config file, you should use something like MidiStrummer instead.
Project
Changelog
Contributing - pull requests welcomed
Known Issues
Report an issue / Feedback
Roadmap and feature requests
Configuration
Any changes made to the configuration file will take effect immediately!
Issues with the configuration file will be logged to the log file and the player warned, if in-game (and so the chat window is visible).
_If you want to reset your configuration file to default, delete the file and it'll be recreated!._
%AppData%\Godot\app_userdata\webfishing_2_newver\PotatoMidi.json
Structure
The configuration file has the following structure:
- version: The PotatoMidi configuration-scheme version number
- channel_mappings: A dictionary mapping your chosen instrument names to MIDI channel numbers.
- instruments: A list of your instrument configurations
Version
- Type: int
- Description: The version of the configuration file.
- Current version: 1
- Example:
"version": 1
Channel mappings
These are named references, for you convenience, to map to channel numbers- you can name them _whatever you want_.
- Type: Dictionary
- Description: A dictionary mapping user-defined names to MIDI channel numbers.
- Example:
"channel_mappings": {
"acoustic_grand_piano": 0,
"bright_acoustic_piano": 1,
"banana": 2,...
}
Instruments
- Type: Array of Dictionaries
- Description: Each dictionary defines an instrument with unique properties and specific parameters.
- Keys:
- instrument: The name of the instrument.
- Type: String
- Description: The name of the instrument.
- Example:
"instrument": "guitar_strummer"
- channels
- Type: Array of Strings
- Description: A list of MIDI channel names for the instrument.
- Example:
"channels": [
"acoustic_grand_piano",
"bright_acoustic_piano",
"electric_grand_piano",
"honky_tonk_piano",
"rhodes_piano",
"chords",
"synth_pad"
]
- Pitch
- _One_ of the following:
- pitch_range
- Type: Dictionary
- Description: A dictionary with the minimum and maximum pitches for the instrument.
- Keys:
- min: The minimum pitch for the instrument.
- Type: int
- Description: The minimum pitch for the instrument.
- Example: 40
- max: The maximum pitch for the instrument.
- Type: int
- Description: The maximum pitch for the instrument.
- Example: 80
- Example:
"pitch_range": {
"min": 40,
"max": 80
}
- pitch
- Type: int
- Description: The pitch of the instrument.
- Example:
"pitch": 40
- pitch_list
- Type: Array of ints
- Description: An array of pitches for the instrument.
- Example:
"pitch_list": [
40,
45,
50,
55,
59,
64
]
MIDI Percussion Conventions
For MIDI Channel 10, each MIDI KEY number ("NOTE#") corresponds to a
different drum sound, as shown below. While many current instruments
also have additional sounds above or below the range show here, and
may even have additional "kits" with variations of these sounds, only
these sounds are supported by General MIDI Level 1 devices.
| Key# | Note | Drum |
| ---- | ---- | ------------------ |
| 36 | C1 | Bass Drum 1 |
| 35 | B0 | Acoustic Bass Drum |
| 37 | C# | 1 Side Stick |
| 38 | D1 | Acoustic Snare |
| 39 | Eb1 | Hand Clap |
| 40 | E1 | Electric Snare |
| 41 | F1 | Low Floor Tom |
| 42 | F# | 1 Closed Hi Hat |
| 43 | G1 | High Floor Tom |
| 44 | Ab1 | Pedal Hi-Hat |
| 45 | A1 | Low Tom |
| 46 | Bb1 | Open Hi-Hat |
| 47 | B1 | Low-Mid Tom |
| 48 | C2 | Hi Mid Tom |
| 49 | C# | 2 Crash Cymbal 1 |
| 50 | D2 | High Tom |
| 51 | Eb2 | Ride Cymbal 1 |
| 52 | E2 | Chinese Cym
Install & use Install: follow the bundled instructions
- Unzip the archive from playbuff and read the bundled readme / instructions first.
- Most mods rely on the game's mod loader — the usual route is a community mod manager (such as r2modman): pick this game, install, and it handles the loader and dependencies.
- For a manual install, put the mod files into the matching Mod / plugins folder inside the game directory.
- Launch the game to confirm it loaded; mods with listed dependencies need those installed as well.
Install locations vary a lot between mods — the bundled readme is the most reliable guide. Most WEBFISHING mods need the GDWeave loader; the bundled readme explains where files go.
Install these first, or the mod will not work: