Page 1 of 1

1 Bit Sound

Posted: Oct 4th, '15, 00:27
by mguzdial
This one involves a little bit of block-dragging to get the full effect.

(1) Drag the get samples from thisisatest into the "array" slot of the play samples from block, connected to "Go." Press Go. That's our original sound.

(2) Drag the getSamples block out and click on it. Notice that what's inside those samples are real numbers between -1.0 and +1.0.

(3) Click the button to set newsound to a list with only a "1" in it.

(4) Now, drag the getSamples block into the array slot of the for loop block, with the two ifs in it. This loop will create a new sound with *ONLY* -1 and +1 in it. Click to execute the block script.

(5) Now click on the newsound block by itself. It ONLY has -1 and +1 in it.

(6) Drag the newsound block into the play block. BEFORE YOU HIT "Go," ask yourself, "Will you hear the words 'this is a test'?"

Re: 1 Bit-per-sample Sound - now with display

Posted: Oct 5th, '15, 17:00
by mguzdial
The 1-bit-per-sample sound story works better if you can see the sound, so I put together a simple sound visualization script.

Here's the original "this is a test" sound.
thisisatest.png
Here's the 1 bit per sample version.
1-bit-sound.png
Side note: I'd love a "video" format where I could record the actions needed to make this work, but freezable/modifiable at any point, and the student could play from there. I think that this is how the programming recordings in Khan Academy work, but I've not tried them.

Re: 1 Bit Sound

Posted: Oct 6th, '15, 15:34
by JohnM
This is SO cool! I love that you were able to create your own sound visualizations in GP.

I just recently learned how to make a screen recording using Quicktime Player, which comes with Mac OS. You start Quicktime Player and select "New Screen Recording" in the menu. You can record the entire screen, the contents of one window, or just a section. To stop recording, click the stop button in the Mac menu bar. (When I first did this, I recorded only a portion of the screen and the stop button in the menu bar appeared to be grayed out, so it took me a while to figure out how to stop recording.) Once you've got the recording, you can actually do some simple video editing using the "split clip" command in the Edit menu. I assume you could add narration or a background music using iMovie, although I haven't tried that.

Re: 1 Bit Sound

Posted: Oct 7th, '15, 17:00
by mguzdial
I'll try the Quicktime recorder -- thanks!

An item for the wishlist: I now have this script that can (crudely) let me see a waveform. I'd love to be able to encapsulate this script in a block that I could put into the block pane -- across projects. There are lots of places where I'd like to be able to visualize a sound.

Re: 1 Bit Sound, or, how to make an extension block from a blocks script

Posted: Oct 7th, '15, 18:30
by mguzdial
I wanted to see how hard it was to go from blocks into an extension, so I tried it with the sound display code. It really wasn't hard at all!

Here's my original script, and the new block that I created.
set-costume-from.png
I converted the script to text, then copy-pasted it into my samples extension. Here's what that looked like:

Code: Select all

whenKeyPressed 'space'
local 'sound' (getSamples 'bassoon-g4')
self_createCostume 500 300
self_fillWithColor (colorSwatch 231 231 231 255)
local 'x' 10
for sample (stepSample ((count sound) / 500) sound) {
  h = (100 * sample)
  self_fillRect x (150 + h) 2 2 (colorSwatch 32 107 221 255)
  x += 1
}

To turn this into a callable script, I made these modifications:

Code: Select all

to displaySound s1 {
  self_createCostume 500 300
  self_fillWithColor (colorSwatch 231 231 231 255)
  local 'x' 10
  for sample (stepSample ((count s1) / 500) s1) {
    h = (100 * sample)
    self_fillRect x (150 + h) 2 2 (colorSwatch 32 107 221 255)
    x += 1}
}
And added to the AuthoringSpecs array:

Code: Select all

  (array ' '	'displaySound'		'set costume from samples _' 'array' nil)
It worked! It's super cool to have this block anywhere now. (I've attached the project where I'm playing with this, and the version of samplesExtension with the new set costume block.)