Skip to content

An app for macOS that lets you play MIDI files as a bard on Final Fantasy XIV.

Notifications You must be signed in to change notification settings

mixxorz/GarageBard

Repository files navigation

GarageBard icon

GarageBard

A macOS app that lets you play songs as a bard on Final Fantasy XIV.

Download button

Why

I find that hearing other players make music in-game adds to the atmosphere and sense of community of the game. With GarageBard, I hope you'll be able to make the game world feel more alive.

Plus BardMusicPlayer is Windows only, but I play on a MacBook... so I made this instead.

How does it work?

You load up MIDI files and GarageBard "plays" them by sending keystrokes to the game.

You can also plug in a MIDI controller and play songs yourself.

Screenshots

Screenshots

Instructions

  1. Download the latest release from GitHub.
  2. Copy GarageBard to your Applications folder
  3. Launch GarageBard and grant it Accessibility access
  4. Load songs by dragging MIDI files into GarageBard
  5. Double click a song to queue it up
  6. Click the tracks icon to choose which track to play
  7. Go to Performance mode in the game with your choice of instrument
  8. Set up your keybindings according to the chart below
  9. Click Play (spacebar)
  10. Rock out 🤘

Performance mode keybindings

Performance mode keybindings

(This is needed because the default keybinds do not have keybinds for all the notes.)

Usage

GarageBard works like a typical music player. You can queue, play, pause, stop, seek, add, remove, and reorder songs.

If you plug in an external MIDI controller, GarageBard will automatically connect it to the game, no extra configuration necessary.

Player

Tracks

Lets you choose which track to play.

MIDI files can contain one or more tracks for different instruments. The track selector lets you select which track GarageBard should play.

It's possible to see strange behaviour with the track selector as some MIDI files are better formatted than others. If you're having issues, one thing you can try is to import the MIDI file into MuseScore and reexport it as MIDI.

Overlay mode

When enabled, GarageBard will stay on top of the game so that it's always visible. This can be activated by clicking the icon on the top right of the window.

This is handy as it's useful to see GarageBard while the game is running.

Settings

Perform

Send keystrokes to the game to play the song.

Normally, GarageBard sends keystrokes directly to the game instance, but if it's unable to find the game instance, keystrokes are sent to the frontmost window.

If a MIDI controller is connected, inputs will be sent as keystrokes to the game.

Listen

Listen to the song using GarageBard's synthesizer.

Useful for auditioning songs before performing them in game.

If a MIDI controller is connected, inputs will be played using GarageBard's synthesizer.

Loop song

Repeat the current song after it ends.

Song looping is in time with the beat. That means if you have a 4 beat MIDI file, those 4 beats will loop with the correct tempo/cadence.

Loop session

Play the first song in the session after the last song ends.

This only works if continuous playback is also turned on.

Continuous playback

Play the songs in the session one after another.

Effects

Transpose

Shows the range of notes on this track.

Type a number to transpose by semitones (e.g. +7, -5). Type a note name to set the lowest note (e.g. C2, G#3). Prefix the note name with a "-" to set the highest note (e.g. -C5, -F#4).

(The game can play notes from C2 to C5.)

Octave remap

Adjusts all notes to fit within the game's playable range (C2-C5).

Notes outside the range are transposed N octaves up or down until they're within the range (e.g. D1->D2, A#7->A#4).

Arpeggiate

Ensures that a chord's notes are played in ascending order.

Notes played concurrently are played in ascending order (e.g. If G, C, and E are played at the same time, C is played first, then E, then G).

This will generally make chords sound better so it's a good option to have on.

Troubleshooting

GarageBard needs Accessibility access in order to send keystrokes to Final Fantasy XIV.

GarageBard works by sending keystrokes to the game process. In order to do this, the app needs to have Accessibility permissions.

To grant GarageBard permissions, click on the message then click "Open System Preferences" on the dialog that pops up. In the System Preferences window that opens, click the lock on the bottom left of the window to unlock the settings. Tick the checkbox next to GarageBard in the list of apps under Accessibility. Finally, close System Preferences.

You know you've done this correctly when the message disappears from GarageBard.

Can't find game instance. Is the game running?

This message means that GarageBard was unable to find the game process. When this happens, the app falls back to sending keystrokes to any app that is in the foreground.

If the game is running but you still see this message, it can still work as long as you have the game focused.

If you have time, please open an issue so I can make the process detection better.

Some notes are out of range

This message means that there are some notes on the current track that fall beyond the range of what can be played in the game.

GarageBard provides a couple of tools to mitigate this; the transposer and the octave remapper. You can try to transpose the track so that all the notes fall within C2-C5. Otherwise, you can turn on the octave remapper (on by default) which will automatically transpose out of range notes to fit within playable range.

The best but hardest way to address this issue is to manually edit the song using a MIDI editor so that all notes fall above C2 and below C5.

License

Copyright (c) 2022 Mitchel Cabuloy