This skill plays a sound in the given note or an sound in the given guitar string. This can be used to tune a musical instruments.
Mycroft is using the even tempered (aka equal tempered) scale, where an octave is a frequency ratio of exactly two and a semitone is a frequency ratio of exactly the twelfth root of two. In the real world however many different temperaments may be used - see en.wikipedia.org/wiki/Musical_temperament - and octaves too can vary in size, see en.wikipedia.org/wiki/Stretched_octave.
Also Mycroft call middle C for “C4” : this is the commonest octave numbering but some people call middle C for “C3” or even for “C5”.
How to install Sound Tuner
mycroft-msm install https://github.com/andlo/sound-tuner-skill.git
How to test Sound Tuner
- Ask Mycroft to “Give em an A note”
- Ask Mycroft to “Give me an guitar Low E string”
Mycroft should reply and make the correct sound.
Can Mycroft play low sounds like C1 and high sound like C6 ?
Does we need a way to ask Mycroft “Give me an 440.0 note”?
Does we need to add more instruments like Bass, mandolin or Cello ?
Where feedback on Sound Tuner should be directed a
Please give feedback on the Skill through Issues on GitHub, via Mycroft Chat, or as reply on this topic.
I won’t have a chance to test this for a few days, but here are some initial thoughts;
- I LOVE the idea behind this Skill - stringed instruments get out of tune very quickly, and if you don’t have perfect pitch, you constantly need to re-tune them.
- Generally I tune with a tuner instrument - do you think it would be a valid test to test the sound-tuner-skill against an auto-tuner?
- This is a feature request - however at the moment this Skill can play a particular note / frequency. However it can’t tell you the difference between a note it’s heard and the desired pitch. With the GUI on the Mark 2, it would be great to be able to show whether the heard note is flat or sharp.
Well - the skill is atm vwry simple. But yes testing the sound against a tuner app on a phone should give correct messurements.
I were thinking of making a real tuner skill - but not having a graphics display it is difficult to tell the user if the tune is a little to low or to high. And I thin that people that actual use istruments do use their phone for tuning.
But I got all th pieses to actual make a real tuner, so maybe when I get a mk2 I will use that as a way to figureout how to use display
Mostly I did the skill to se how fast I could get from idea to actualy have a working skill. And I must say it is so easy to make a skill to mycroft, and google some python examples, and transform it to an skill.
Very good idea! Personally I like it’s simplicity. I always tune my instrument by ear, don’t like those fancy auto-tuner apps. But it’s essential to have a reference note. So I find it really useful…
Great to hear
Should there be a way to set for how long the sound is? should the sound fade in and out or just like now start and stop? Should I add a way to change A=440 ? And should it be posible to ask mycroft “give me an 487Hz tone” ?
I were thinking of a metronome skill as well - simple but sometimes usefull.
I have added more instruments and are thinking adding a way to set for how long. like
Give me an guitar high e string for 5 secunds.
My problem here is that the sounds are made before played, so it will take 5 seconds before playing. But maybe I can write and read to the file at same time…I will try.
And I did look at who to make a tuner so playing a string will say which note and if it is to low or high. But that code isnt made into the skill yet. But it is working
Hey @andlo this is a really great skill!
It installed perfectly with msm
When I asked it for an A, the sound it generated really startled me, maybe have a prerecording of a piano for this?
When I asked it for a guitar low e string: it wouldn’t pick up my request. But when I typed the exact command in it worked see the picture (The first and last are me speaking the command, the middle one is my typing) —> This means that you should add more lines in your intent files
Again, the guitar sound kind of scared me - maybe adding a real guitar string sound (I’d be happy to contribute )
Final suggestion - maybe the skill name should be tuner-skill instead of sound-tuner-skill - this makes it easier to install.
Overall, this is a great skill which I can’t wait to use on my guitar!
That is great feedback.
he skill do create its own sound and dont uses samples. The idea by “give me a guitar low e string” is not to make a sound like a guitar lowstring, but tune a sound whith a frequency gorresponding to the low e string on a guitar.
I did look for instruments samples, but didnt think that is what the skills is about.
For tuning, I think Ill waite for the mark_2 so showing frequency and corrsponding note (and up and down to tune) can be displayed making it a real tuner skill.
I also think of ading a metronome (or make a nother skill) bt not beeing a mucisian I do need to read up on that first
Okay, thanks - the sound just startled me - it isn’t that pretty to listen to
Thanks - can’t wait to see it in the skill store!
Hi there, many thanks for this skill, will have to check it out! Do you still have plans for that metronome skill? I would really love to see that happen!
Thanks - yah I have many plans, but hassnt time for all of it…First problem that gave me headace were that I actualy dont know how a ordanary metronome works - well is makes tik and tak and you can set the frequense. But how and what messurements do a ordanary metronome have ? Do you hae some information for that ?
After a metronome one could add a simple rythmebocs with simple drum sounds, but my musical knoledges is from way back in school…Maybe I ick up this skill again
Thanks for the feedback. Great to hear you’re still considering this skill. Maybe we should start a new thread for it? I’m no skill developer myself although I have some basic understanding of programming principles. I could help with the musical and mathematical input, though. A basic metronome is as simple as you say: it should give you a click at any given tempo/frequency given in beats per minute (bpm) where to my knowledge each bpm corresponds to a quarter note. I actually think in a very first step a simple set of two commands could already do the trick:
“Hey Mycroft, start a click (track) at 120 bpm.”
“Hey Mycroft, stop click (track).”
This would already make the skill useful for most situations. There are online calculators to help convert bpm tempos to milliseconds which I assume Mycroft would need.
The next step should be to be able to set certain metres (4/4, 4/8, 3/4, etc.) where the first tone of each bar gets accentuated by a different or louder click tone and the frequency would be doubled at a switch from quarter to eighth notes.
“Hey Mycroft, start a click track at 120 bpm with a metre of four eighth-notes.”
This example should illustrate what I’m talking about: https://www.youtube.com/watch?v=76A_XcLV8N4. This is a 4/16 metre at 70 bpm, meaning the accentuated note is put out at the actual 70 bpm while the overall bpm for each 16th note is 280.
Finally, drum loops could be implemented so you can jam along to Mycroft. There are android metronome apps that could be used as a reference such as “Soundbrenner”. What do you think, could you make this work?
For Picroft and Mark-I you will probably run into timing problems, so you should have a “timer process” running which is indepent from the skills process. This might be helpful: https://github.com/the-fool/metronome-py
Just what could be perfect for how to do it. Then I have all I need,just missing the time to make it