Over the past few weeks we’ve been exploring how forScore uses MIDI in all sorts of different ways. First, we detailed the process for setting up shortcuts so you can trigger any of forScore’s most popular functions from your MIDI device. Then, we discussed using an incoming message to open a particular score. Finally, we showed you how to set up MIDI messages to be sent automatically when you open a score. That last example is particularly powerful, but it has one drawback: as soon as you change songs your MIDI setup will change. That can be a problem if you’re using a setlist and you accidentally flip over to the next song, or if you’d just like to take a look at the next piece before the current one is finished.
That’s why we introduced Buttons in forScore 9. Buttons can do a lot (if you haven’t had a chance to use them yet be sure to check out the user guide for complete instructions), but today we’ll focus on their MIDI capabilities. Just like scores can send messages immediately when they’re opened, buttons can send messages when they’re tapped. They can be set up to send program change messages, song select messages, or raw hexadecimal codes, and they can even memorize incoming commands or add a delay between messages.
Since Buttons wait to send their messages until they’re tapped, you can even use them to change your settings partway through a piece. They’re incredibly flexible, and next week we’ll be discussing Presets which make sending common MIDI messages even easier, so be sure to check back next Friday for even more!
As we discussed last week, MIDI is much more like a language than a single-purpose tool. It can be used in a variety of situations to convey a lot of information, and for this Feature of the Week we’ll be looking at the most flexible application of MIDI in forScore: score-specific MIDI commands.
While editing information for a score or bookmark in your library, the bottom portion of the metadata panel splits up a lot of valuable options into a few different sections. One of those sections is called “MIDI”, and that’s what we’ll be talking about today. The MIDI section of the metadata panel gives you access to three different features: Open, Send, and Presets. We’ll save Presets for another day, but lets start with a quick overview of the first two.
Open
Last week we showed you how to use incoming MIDI messages as shortcuts to forScore’s most popular functions. In the “Open” section of the metadata panel, you can set up a similar shortcut but instead of triggering a tool or menu, the MIDI message you use here will always open that particular score or bookmark.
Send
In the “Send” section, you can set up one or more MIDI messages to be broadcast immediately when you open an item. This can be useful if you need to change some of your MIDI device’s settings for a particular piece.
Messages
On a technical level, MIDI messages consist of hexadecimal codes. These codes use numbers (0-9) and letters (A-F), pairing any two for a total of 128 combinations. Fortunately, you don’t generally need to know what they mean, just what they do. And, since you’ll usually be working with one of two common message types, forScore makes entering this information a little easier.
The first type of message is a Program Change. This message tells your MIDI device which instrument or voice to use. It’s specific to one device, so you’ll need to specify which channel to use to send the message. The rest of the message must consist of at least one single number between 0 and 127, and it may also allow for additional MSB or LSB values in order to provide a wider range of possible sounds.
The other type of message you may need to use is called a Song Select message. This message consists of a single value between 0 and 127, and is sent to all connected devices so no channel number is required.
For everything else, you can type in actual hexadecimal codes for complete control.
Adding Codes
Tap the “+” button in the lower right-hand corner of the metadata panel to add a message to the current score (one incoming “Open” message, and as many outgoing “Send” messages as you need). You can choose from the three message types we’ve already discussed—Program Change, Song Select, or Hex Codes—or you can use the “Learn…” option to listen for incoming commands and save them automatically. For sent messages, you can also add a delay in case your device needs a moment to process incoming signals.
So that’s an overview of forScore’s ability to use MIDI messages in score-specific ways. If you missed last week’s introduction to MIDI and app-wide shortcuts, be sure to check it out, and stay tuned as we continue our exploration of forScore’s MIDI integration next week!
MIDI, the ubiquitous musical language, has been around for decades. It has proven to be remarkably resilient despite numerous attempts to replace it with more modern alternatives. While MIDI may be almost everywhere, it’s not very approachable and most people only understand part of what it can do. For years, we got requests from our customers to add MIDI features to forScore. The problem was that every customer wanted something different, so finding ways to weave MIDI functions into forScore required balancing technical capability with practical usability.
Instead of creating a single MIDI panel that would duplicate a lot of forScore’s existing functions, we chose to reverse it and supplement some of our existing features with advanced MIDI functionality. Today, we’ll be looking at just one of those cases, with more to follow in the coming weeks.
As we discussed in our previous Devices Feature of the Week, the “Page turners & shortcuts” section of the Settings panel lets you trigger many of forScore’s functions with an external device. If you tap on a function, forScore listens for incoming signals from a variety of sources and can associate anything it hears with the selected function. When you’re using a keyboard or a keyboard-based page turner, it works just like shortcuts on a computer complete with support for modifiers like shift, alt, command, or control. If you’re using a Bluetooth Smart stylus like FiftyThree’s Pencil or an accessory like the iRig Blueboard, you can either press or press and hold a button to set up two different functions per physical control.
The process is similar for a MIDI device: tap your function, then use your device to send a signal (press a button, flip a switch—it depends on your device). If forScore recognizes and can use that signal, you should see your MIDI command appear to the right of the selected function. Now, any time you send that exact same signal, forScore will respond by initiating the corresponding feature.
There is one caveat to watch out for, however. Since forScore listens for the exact same signal, some kinds of MIDI controls won’t work reliably. Anything that senses levels of pressure, like a piano key for instance, will include a velocity value. Unless you hit that key with exactly the same amount of force each time, forScore won’t react. Other switches use a range of values, like a volume knob, and will have the same problem. Otherwise, any simple on/off control should work fine. If you’re not sure how a specific control works, consult your device’s manual.
That’s just the start, though, so be sure to check back over the next few weeks as we explore the entirety of forScore’s MIDI functionality.
Some features aren’t appropriate for all users or situations, and that’s why forScore offers Restrictions. They’re a lot like iOS’s system-wide Parental Controls but they’re specific to forScore.
In the tools menu, select Settings, then Restrictions to see which features you can disable if needed. Currently, that includes the Services panel, the in-app purchase storefront, the ability to transfer files to other forScore users via a direct Bluetooth connection, and the ability to share files using the standard iOS share sheet (this includes the ability to email or print a file, to share it with nearby devices over AirDrop, or copy it to another app that implements iOS’s “open in” protocol).
Before you can disable any of these features, you’ll need to enable restrictions and enter in a four digit passcode. Then, just turn off the features you don’t want and press the back button or tap away to close the tools popover. Now, you’ll need to type in your passcode any time you want to view the Restrictions panel or make changes, so don’t forget it!
Way back when forScore was just an idea, we made the decision to design it around the PDF file format. It’s the most ubiquitous format for documents that feature precise layouts (anything more than basic text). There are many versions of the PDF specification, but all of them include some basic information about a file like its author, subject, and keywords.
Since one of forScore’s most fundamental features is its ability to organize your music by these kinds of metadata, it made sense to connect the two dots. “Fetching” is the term we came up with to describe the process by which forScore reads a PDF’s metadata and adopts some of it when it makes sense to. This can happen automatically (if the “automatic fetching for new files” setting is enabled) or manually from the metadata panel (tap a text field and then use the “Fetch…” button just above the keyboard). In either of these cases, the PDF file’s “author” is used to fill in forScore’s “composer” field, “subject” becomes “genre”, and “keywords” become “tags.”
This all works wonderfully if your PDF files include this kind of information, and if that information is correct. Unfortunately, many scanning programs will either fill in their application name or your own as the Author, so whether or not this feature will save you time depends largely on where your PDF files come from. When used correctly, however, this kind of metadata can be a great, permanent way of tagging your files. If your forScore library is lost and you don’t have a backup, or if you’re using your files with another PDF reader, this information will still exist within each PDF file and can be easily retrieved.
Bonus tip: If you want to get really fancy, forScore can read specially-formatted keywords as rating and difficulty. Use the keyword “forScore-difficulty:2” with a number between 1 and 3, or use the keyword “forScore-rating:3” with a number between 1 and 5.