Start a new topic

I wrote a program to allow most common chords to be played on the Instrument with just 1 to 2 fingers

After many months of works (on and off), I finally made it to a point that I can show people my progress.

First of all, I should point out that my guitar playing skills is at a level that I can only play the most basic chords. But I want to play accompaniment when I sing. 

When I first found out that the Instrument has a Smart Strum mode, I wanted to give it a try. I got to say that, I was quite disappointed. I only got to play 12 pre-selected chords. On top of that, as easy as it sounds, going from chord 1 to chord 12 would require someone to travel all the way across the entire fretboard. 

Some people might give up at that point. But fortunately, I can program. So, I started writing a program to remap the Instrument's grid mode so that most common chords can be played with just 1 to 2 fingers, with no pre-selection required like the Smart Strum mode. 


As seen from above, the first row of "strings" are assigned the C, D, E, F#, G#, and A# major chord. The second row of strings are assigned the C#, D#, F, G, A and B major. To play a minor chord, technically, I will need to hold the root's note and the note directly under it. For example, to play the C# min, I need to hold (refer to the image above) the C and the C#. But I found a shortcut -- by holding the "cross section" between the 2 notes, Instrument 1 will recognize that both notes are being played. Therefore, with just 1 finger, I can play both major and minor from C to B. 

Just the major and minor chord alone will be enough for most pop songs ever written. However, I also want to add in additional flexibility, so I added the 7th chords to my program.


The 7th is a bit more complicated. Using the D chord as an example. If I want to play the D7, I will hold the D note with one finger, then hold the note to left of the note directly under the D note (which is a C#, if you refer to image 1). To play the Dmin7, I will start with the Dmin (holding the crosssection b/w D and D# using one finger), and hold the same "7" note. D Major7 is similar to Dmin7, starting with the crosssection M7 above, and the same "7" note. All other 7th chords will follow the same pattern, except for C and C#, because that's the end of the left edge. So, for C and C#, I simply reverse the direction and use the right side as the "7" note.

Right now, I've programmed it to a point that all major, minor, and 7th chords root position can be played. I am planning to add support of suspended and diminished chord to it, but in my use case, those are not necessary. 

You can see how it's working in action from this video (please bear with my singing): 

Frankly, I am hoping Artiphon could officially release a feature similar to what I am doing. Even better, if they make an Instrument 2, they should consider adding this and built-in sound to the device. 

1 person likes this idea

hi did you ever finish your program such that it can be shared ?

Of course! After I clean up the codes a little bit, I am going to open source it. I am on vacation right now, so may be some times next week

Hi.  Would it be possible for you to contact me? I am handicapped and am only able to play the Instrument 1 with 1 finger, (sometimes 2). Your programming sounds like it might solve my problem of only to be able to play 12 chords per song and/or having to program in each song individually. I have over 200 presets right now because I entered the chords for every song individually. I am VERY VERY interested in seeing your progress and chatting with you. ~ Sue

Hi, Sue. I've been trying to refactor it into a web page and here's a very very rough draft that you can try it on. 

Before you can play, you need to configure your Instrument 1 like the following:


After that, go to the web page below (if asked, you need to grant MIDI access to the page): 

Choose "INSTRUMENT 1" as the "MIDI Input". To get started, let's ignore the "MIDI Output" for now, and check the "Use Built-in Instrument" checkbox. Then, press the "Initialize" button.

At this point, if everything works as expect, strumming the bridge should produce some sounds generated by the built-in instrument. 

Since my original post, I've made some changes to the chord patterns, but the major and minor chords are still done the same as before: 


I have mapped the first 6 rows of the neck to the major and minor chords. So, there are 3 variations of each major and minor chords available. Generally speaking, the further down the neck, the higher the notes the chord contains.

As for the 7th, they are now played slightly differently. I hope the sample diagram below can explain it clearly: 


Again, 3 variations of each 7th chord are mapped.

I actually mapped more than just the major, minor and 7th, but I haven't made up my mind on the patterns. On the other hand, I did not plan to dictate how the pattern works anyway -- chords are mapped by a configuration file, but since it's a web page now, I haven't implement a way to allow you to save your own chord map. I am also not sure if the configuration file is easy enough to use. May be you can take a look and let me know how you think -- you can see it at:

Back to using MIDI Output. If you want to use an external sound engine (more likely than not, you want to, because the built-in instrument just doesn't sound that good), you need to create a virtual MIDI port. You can find instructions at this page:

Once you create a virtual MIDI port, set it as the MIDI Output (you will need to reflesh the page to see the new port). Then, obviously, you will need to wire the virtual port to your VST or whatever sound engine that you are using.

Feel free to ask if you are having problems (it probably won't be problem-free).






Hi again. I configured the Instrument 1 on my iPhone as per your diagram. Then went to your webpage. Received an error. I did not write down the error but was able to bypass it. I CANNOT select Instrument 1 as the Midi Input. When I click on "MIDI Input" Screen says "No options"

Here is a screenshot of the error 


It looks like your iPhone browser doesn't support Web MIDI. I use Android, so I need to wait until my son come back from Texas tonight before I can check it on his iPhone. In the meantime, can you tell me what iPhone model you have and which browser you are using?

Yes. I have an iPhone Mini 13 and I use Safari.     Also have an iMac computer and use Safari. Got the same error on both. I'm so excited to try this. Thank you.

I did some Google searches, and it looks like Apple never implements the Web MIDI API on Safari, even though it's been available for years. Can you download Chrome to your Mac and give it a try? I don't think the iOS version of Chrome will work since it's basically Safari with a Chrome skin.

I am in Chrome on the Mac. Got as far as Initialize. Looks like Initialize works but no sound coming out. Went to my computer settings and changed input from Internal Speakers to Instrument 1 and Output from Internal Microphone to Instrument 1. Still no sound.

Did you check the "Use Built-in Instrument" checkbox before pressing "Initialize"? If there's still no sound coming out, it may have to do with the built-in sound. It is from an open source sound font player, and since I only use Windows and Android, I don't know if it works on the Mac as well. Although, the Chrome browser pretty much standardize everything among all its platforms (other than the iOS version).

Let me ask you one thing: After you press "Initialize", did you try press a chord on your Instrument 1? If you do, did you see the web page showing the name of the chord that you play? Did you make sure your Instrument's mode has been switched?

If you can, try openinging the Chrome DevTools by pressing F12 on your keyboard. Then click on "Console" to see if there's any errors.

Your speaker settings shouldn't affect the sound, though -- if you set it to your internal speakers, the sound should come out from the internal speaker.

One more thing, just to make sure. Click on the "lock" icon next to the URL in Chrome address bar. Then click "Site Settings" and check if MIDI devices is set to "Allow".

Yes. Use But in Instrument was checked before clicking Initialize.

Yes, tried pressing many different chords. No sound. But most of the chords generate a chord change on the Mac screen, ie. CScale0, AScale1, etc. Some of the chords don't change at all.

What do you mean by "make sure the instruments mode has been switched"?

I opened the Console and see 3 issues. Sorry I don't know anything about coding and can't seem to copy the text to send to you.

I clicked on the lock. Permission was set to Ask. I changed it to Allow. Still no sound.


Is this correct?

Login or Signup to post a comment