{"id":16177960,"url":"https://github.com/mixxorz/garagebard","last_synced_at":"2025-03-19T01:30:43.080Z","repository":{"id":42980074,"uuid":"466565101","full_name":"mixxorz/GarageBard","owner":"mixxorz","description":"An app for macOS that lets you play MIDI files as a bard on Final Fantasy XIV.","archived":false,"fork":false,"pushed_at":"2022-10-27T06:11:02.000Z","size":2166,"stargazers_count":12,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-28T13:39:58.772Z","etag":null,"topics":["macos","midi","music"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mixxorz.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-03-05T20:51:43.000Z","updated_at":"2024-08-01T16:22:47.000Z","dependencies_parsed_at":"2023-01-20T02:17:41.397Z","dependency_job_id":null,"html_url":"https://github.com/mixxorz/GarageBard","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mixxorz%2FGarageBard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mixxorz%2FGarageBard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mixxorz%2FGarageBard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mixxorz%2FGarageBard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mixxorz","download_url":"https://codeload.github.com/mixxorz/GarageBard/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243958024,"owners_count":20374785,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["macos","midi","music"],"created_at":"2024-10-10T05:11:34.205Z","updated_at":"2025-03-19T01:30:42.767Z","avatar_url":"https://github.com/mixxorz.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg width=\"180\" src=\"./GarageBard/Assets.xcassets/AppIcon.appiconset/icon_256x256.png\" alt=\"GarageBard icon\"\u003e\n\n# GarageBard\n\nA macOS app that lets you play songs as a bard on Final Fantasy XIV.\n\n\u003ca href=\"https://github.com/mixxorz/GarageBard/releases/latest/download/GarageBard-1.3.0.dmg\"\u003e\n   \u003cimg width=\"150\" src=\"https://user-images.githubusercontent.com/3102758/158105072-519b1bbe-2d58-4aa0-a534-f1858add2e9b.png\" alt=\"Download button\"\u003e\n\u003c/a\u003e\n\n## Why\n\nI find that hearing other players make music in-game adds to the atmosphere and\nsense of community of the game. With GarageBard, I hope you'll be able to make\nthe game world feel more alive.\n\nPlus [BardMusicPlayer](https://bardmusicplayer.com/) is Windows only, but I play\non a MacBook... so I made this instead.\n\n## How does it work?\n\nYou load up MIDI files and GarageBard \"plays\" them by sending keystrokes to the game.\n\nYou can also plug in a MIDI controller and play songs yourself.\n\n## Screenshots\n\n![Screenshots](https://user-images.githubusercontent.com/3102758/160221757-da0d9eaf-0226-4a8f-92d8-ca3021902ecc.png)\n\n## Instructions\n\n1. Download the [latest release](https://github.com/mixxorz/GarageBard/releases/latest/download/GarageBard-1.2.0.dmg) from GitHub.\n1. Copy GarageBard to your Applications folder\n1. Launch GarageBard and grant it Accessibility access\n1. Load songs by dragging MIDI files into GarageBard\n1. Double click a song to queue it up\n1. Click the tracks icon to choose which track to play\n1. Go to Performance mode in the game with your choice of instrument\n1. Set up your keybindings according to the chart below\n1. Click Play (spacebar)\n1. Rock out 🤘\n\n### Performance mode keybindings\n\n![Performance mode keybindings](https://user-images.githubusercontent.com/3102758/158063314-6fcbc177-d41f-4fb5-bd04-8c24ea7040ee.png)\n\n_(This is needed because the default keybinds do not have keybinds for all the notes.)_\n\n## Usage\n\nGarageBard works like a typical music player. You can queue, play, pause, stop,\nseek, add, remove, and reorder songs.\n\nIf you plug in an external MIDI controller, GarageBard will automatically\nconnect it to the game, no extra configuration necessary.\n\n### Player\n\n**Tracks**\n\nLets you choose which track to play.\n\nMIDI files can contain one or more tracks for different instruments. The track\nselector lets you select which track GarageBard should play.\n\nIt's possible to see strange behaviour with the track selector as some MIDI\nfiles are better formatted than others. If you're having issues, one thing you\ncan try is to import the MIDI file into [MuseScore](https://musescore.org/en)\nand reexport it as MIDI.\n\n**Overlay mode**\n\nWhen enabled, GarageBard will stay on top of the game so that it's always\nvisible. This can be activated by clicking the icon on the top right of the\nwindow.\n\nThis is handy as it's useful to see GarageBard while the game is running.\n\n### Settings\n\n**Perform**\n\nSend keystrokes to the game to play the song.\n\nNormally, GarageBard sends keystrokes directly to the game instance, but if it's\nunable to find the game instance, keystrokes are sent to the frontmost window.\n\nIf a MIDI controller is connected, inputs will be sent as keystrokes to the\ngame.\n\n**Listen**\n\nListen to the song using GarageBard's synthesizer.\n\nUseful for auditioning songs before performing them in game.\n\nIf a MIDI controller is connected, inputs will be played using GarageBard's\nsynthesizer.\n\n**Loop song**\n\nRepeat the current song after it ends.\n\nSong looping is in time with the beat. That means if you have a 4 beat MIDI\nfile, those 4 beats will loop with the correct tempo/cadence.\n\n**Loop session**\n\nPlay the first song in the session after the last song ends.\n\nThis only works if continuous playback is also turned on.\n\n**Continuous playback**\n\nPlay the songs in the session one after another.\n\n### Effects\n\n**Transpose**\n\nShows the range of notes on this track.\n\nType a number to transpose by semitones (e.g. +7, -5). Type a note name to set\nthe lowest note (e.g. C2, G#3). Prefix the note name with a \"-\" to set the\nhighest note (e.g. -C5, -F#4).\n\n(The game can play notes from C2 to C5.)\n\n**Octave remap**\n\nAdjusts all notes to fit within the game's playable range (C2-C5).\n\nNotes outside the range are transposed N octaves up or down until they're within\nthe range (e.g. D1-\u003eD2, A#7-\u003eA#4).\n\n**Arpeggiate**\n\nEnsures that a chord's notes are played in ascending order.\n\nNotes played concurrently are played in ascending order (e.g. If G, C, and E are\nplayed at the same time, C is played first, then E, then G).\n\nThis will generally make chords sound better so it's a good option to have on.\n\n## Troubleshooting\n\n**GarageBard needs Accessibility access in order to send keystrokes to Final Fantasy XIV.**\n\nGarageBard works by sending keystrokes to the game process. In order to do this,\nthe app needs to have Accessibility permissions.\n\nTo grant GarageBard permissions, click on the message then click \"Open System\nPreferences\" on the dialog that pops up. In the System Preferences window that\nopens, click the lock on the bottom left of the window to unlock the settings.\nTick the checkbox next to GarageBard in the list of apps under Accessibility.\nFinally, close System Preferences.\n\nYou know you've done this correctly when the message disappears from GarageBard.\n\n**Can't find game instance. Is the game running?**\n\nThis message means that GarageBard was unable to find the game process. When\nthis happens, the app falls back to sending keystrokes to _any_ app that is in\nthe foreground.\n\nIf the game _is_ running but you still see this message, it can still work\nas long as you have the game focused.\n\nIf you have time, please [open an issue](https://github.com/mixxorz/GarageBard/issues/new)\nso I can make the process detection better.\n\n**Some notes are out of range**\n\nThis message means that there are some notes on the current track that fall\nbeyond the range of what can be played in the game.\n\nGarageBard provides a couple of tools to mitigate this; the transposer and the\noctave remapper. You can try to transpose the track so that all the notes fall\nwithin C2-C5. Otherwise, you can turn on the octave remapper (on by default)\nwhich will automatically transpose out of range notes to fit within playable\nrange.\n\nThe best but hardest way to address this issue is to manually edit the song\nusing a MIDI editor so that all notes fall above C2 and below C5.\n\n# License\n\nCopyright (c) 2022 Mitchel Cabuloy\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmixxorz%2Fgaragebard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmixxorz%2Fgaragebard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmixxorz%2Fgaragebard/lists"}