Discuss Scratch
- Discussion Forums
- » Suggestions
- » More powerful microphone blocks
- daffy1234
- Scratcher
100+ posts
More powerful microphone blocks
I've suggested this several months ago with some support. Here's a link to the original post. I'm suggesting it again because 1) further research into how it would work has clarified a few things and 2) with Scratch 3.0 right on the horizon, it might be an excellent addition.
What is it
So, long story short, here's the two blocks I propose.
And potentially these as well
The last 4 are doable with just the first two.
Is it possible?
Definitely yes! There's a thing called the fast fourier transform (FFT) that takes in a bunch of audio samples and outputs a list of frequencies. I'm oversimplifying, but it's not much more complicated than that.
I'd be happy to help implement it!
The last post mentioned privacy concerns?
After further consideration, those privacy concerns are negligible! In practice, you couldn't possibly run it fast enough to get anything recognizable. And even if you could, the original FFT also gives you information about the phase of the frequencies. That information is vital to reconstruct the original audio, and it would be thrown out.
Its perfectly safe!
Ok cool, but is it actually useful?
Yes!! And not in an obscure way! Check the original post for a few reasonable examples. One of the examples was controlling a character with your voice. Here's how you could do it!
Simple enough! The math there is to convert the 200hz to 1000hz range into -180 to 180 range. You could then have obstacles come from the side of the screen flappy bird style that you have to avoid by singing!
I'd love to see this added to scratch and I'm sure many people would too.
What is it
So, long story short, here's the two blocks I propose.
// Outputs a number between 0 and 1 depending on the loudness of a particular frequency
// 440 hz is a standard A note, it would make a nice default
(loudness of frequency (440) hz :: sensing)
// Outputs a number between 20 and 20000 indicating which frequency is the loudest
(loudest frequency :: sensing)
And potentially these as well
// Outputs true or false depending on if the frequency is loud enough
<hearing (440) hz :: sensing>
// All of the following ones are similar to the above, but they are compatible with the "play note ()" block
(loudest note :: sensing)
(loudness of note () :: sensing)
<hearing note () :: sensing>
The last 4 are doable with just the first two.
Is it possible?
Definitely yes! There's a thing called the fast fourier transform (FFT) that takes in a bunch of audio samples and outputs a list of frequencies. I'm oversimplifying, but it's not much more complicated than that.
I'd be happy to help implement it!
The last post mentioned privacy concerns?
After further consideration, those privacy concerns are negligible! In practice, you couldn't possibly run it fast enough to get anything recognizable. And even if you could, the original FFT also gives you information about the phase of the frequencies. That information is vital to reconstruct the original audio, and it would be thrown out.
Its perfectly safe!
Ok cool, but is it actually useful?
Yes!! And not in an obscure way! Check the original post for a few reasonable examples. One of the examples was controlling a character with your voice. Here's how you could do it!
when green flag clicked
forever
set y to (((((loudest frequency :: sensing) - (200)) / (800)) * (360)) - (180))
end
Simple enough! The math there is to convert the 200hz to 1000hz range into -180 to 180 range. You could then have obstacles come from the side of the screen flappy bird style that you have to avoid by singing!
I'd love to see this added to scratch and I'm sure many people would too.
Last edited by daffy1234 (July 10, 2018 02:10:05)
- TheAdriCoolManDude
- Scratcher
1000+ posts
More powerful microphone blocks
20,000 hz? Lower that to like 750 please. Wouldn't something like 20,000 make us deaf forever or even. die of it?
“Outputs a number between 20 and 20000 indicating which frequency is the loudest”
“Outputs a number between 20 and 20000 indicating which frequency is the loudest”
- leapinleopardstar
- Scratcher
500+ posts
More powerful microphone blocks
These blocks don't output sound. 20,000 hz? Lower that to like 750 please. Wouldn't something like 20,000 make us deaf forever or even. die of it?
“Outputs a number between 20 and 20000 indicating which frequency is the loudest”
Anyways, support.
A
- ScratchDiogoh
- Scratcher
1000+ posts
More powerful microphone blocks
Not exactly, if there was this Condition there was a Block Like this: 20,000 hz? Lower that to like 750 please. Wouldn't something like 20,000 make us deaf forever or even. die of it?
“Outputs a number between 20 and 20000 indicating which frequency is the loudest”
set volume to (...) hz :: soundBut it would be very dangerous
they want a Block that Detects the Volume of a
Human Voice from 20 to 20,000
_________________________________________________________________________________
In addition to this Neutral Support, because the Majority is American and does not know much about it
+1700 Bad Posts
- chexbox
- Scratcher
100+ posts
More powerful microphone blocks
Not quite - you cannot set a volume to a frequency. 20 hz is a very low pitch, below what you can hear, and 20,000 hz is at or above the top of what you can hear.Not exactly, if there was this Condition there was a Block Like this: 20,000 hz? Lower that to like 750 please. Wouldn't something like 20,000 make us deaf forever or even. die of it?
“Outputs a number between 20 and 20000 indicating which frequency is the loudest”set volume to (...) hz :: soundBut it would be very dangerous
they want a Block that Detects the Volume of a
Human Voice from 20 to 20,000
____________________________________________
Support.
- TheAdriCoolManDude
- Scratcher
1000+ posts
More powerful microphone blocks
Oh sorry, not that type of Hz.Not quite - you cannot set a volume to a frequency. 20 hz is a very low pitch, below what you can hear, and 20,000 hz is at or above the top of what you can hear.Not exactly, if there was this Condition there was a Block Like this: 20,000 hz? Lower that to like 750 please. Wouldn't something like 20,000 make us deaf forever or even. die of it?
“Outputs a number between 20 and 20000 indicating which frequency is the loudest”set volume to (...) hz :: soundBut it would be very dangerous
they want a Block that Detects the Volume of a
Human Voice from 20 to 20,000
____________________________________________
Support.
People can hear sounds at frequencies from about 20 Hz to 20,000 Hz, though we hear sounds best from 1,000 Hz to 5,000 Hz, where human speech is centered.
- aidenawesome
- Scratcher
18 posts
More powerful microphone blocks
semi support
currently tho only microphone-related block is
having
I DON'T support frequency-based blocks, because
they would be complicated,
and you could detect if someone is out of tune
currently tho only microphone-related block is
(loudness)and it isn't very useful
having
(loudest note::sensing)is better
(loudness of note ()::sensing)
(average loudness::sensing)
(quietest note::sensing)
(note loudnesses::list)
I DON'T support frequency-based blocks, because
they would be complicated,
and you could detect if someone is out of tune
- Discussion Forums
- » Suggestions
- » More powerful microphone blocks