From b39a7f348408167d9928239487f7aebd95d2c881 Mon Sep 17 00:00:00 2001 From: Galen Nickel Date: Tue, 3 Apr 2018 19:31:35 -0700 Subject: [PATCH] Add 'Mindstorms Music' tutorial (#418) * Add 'Mindstorms Music' tutorial * Add image and edits --- docs/static/tutorials/mindstorms-music.png | Bin 0 -> 10439 bytes .../mindstorms-music/play-tone-dropdown.png | Bin 0 -> 13075 bytes .../mindstorms-music/press-my-buttons.png | Bin 0 -> 13341 bytes docs/tutorials.md | 6 ++ docs/tutorials/mindstorms-music.md | 72 ++++++++++++++++++ 5 files changed, 78 insertions(+) create mode 100644 docs/static/tutorials/mindstorms-music.png create mode 100644 docs/static/tutorials/mindstorms-music/play-tone-dropdown.png create mode 100644 docs/static/tutorials/mindstorms-music/press-my-buttons.png create mode 100644 docs/tutorials/mindstorms-music.md diff --git a/docs/static/tutorials/mindstorms-music.png b/docs/static/tutorials/mindstorms-music.png new file mode 100644 index 0000000000000000000000000000000000000000..3c66b56f6b41c0fdbd1fd7290d02a71142d8921d GIT binary patch literal 10439 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 J8mL+5{{Y>G)gS-> literal 0 HcmV?d00001 diff --git a/docs/static/tutorials/mindstorms-music/play-tone-dropdown.png b/docs/static/tutorials/mindstorms-music/play-tone-dropdown.png new file mode 100644 index 0000000000000000000000000000000000000000..9ba13771353d6ebdff5e1b0e397d2e7572745e02 GIT binary patch literal 13075 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 E0Cb{~_5c6? literal 0 HcmV?d00001 diff --git a/docs/static/tutorials/mindstorms-music/press-my-buttons.png b/docs/static/tutorials/mindstorms-music/press-my-buttons.png new file mode 100644 index 0000000000000000000000000000000000000000..ad3c9c3373fe17848b8f0f2de4cc98d3061e2816 GIT binary patch literal 13341 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 literal 0 HcmV?d00001 diff --git a/docs/tutorials.md b/docs/tutorials.md index 912177f9..9f6293f7 100644 --- a/docs/tutorials.md +++ b/docs/tutorials.md @@ -24,5 +24,11 @@ Step by step guide to coding your @boardname@. "cardType": "tutorial", "url":"/tutorials/what-animal-am-i", "imageUrl":"/static/tutorials/what-animal-am-i.png" +}, { + "name": "Mindstorms Music", + "description": "Transform your LEGO Mindstorms Brick into a musical instrument!", + "cardType": "tutorial", + "url":"/tutorials/mindstorms-music", + "imageUrl":"/static/tutorials/mindstorms-music.png" }] ``` \ No newline at end of file diff --git a/docs/tutorials/mindstorms-music.md b/docs/tutorials/mindstorms-music.md new file mode 100644 index 00000000..29180f26 --- /dev/null +++ b/docs/tutorials/mindstorms-music.md @@ -0,0 +1,72 @@ +# Mindstorms Music + +## Introduction @fullscreen + +Transform your LEGO Mindstorms Brick into a musical instrument! + +![Press my buttons message](/static/tutorials/mindstorms-music/press-my-buttons.png) + + +## Step 1 + +Open the ``||brick:Brick||`` Toolbox drawer. From the **Screen** section, drag out a ``||brick:show string||`` block onto the Workspace, and drop it into the ``||loops:on start||`` block. You should hear and see the block click into place. + +```block +brick.showString("Hello world", 1) +``` + +## Step 2 + +In the ``||brick:show string||`` block, type the text ``"Press my buttons to make music!"`` to replace ``"Hello world"``. + +```block +brick.showString("Press my buttons to make music!", 1) +``` + +# Step 3 + +Open the ``||brick:Brick||`` Toolbox drawer. From the **Buttons** section, drag out an ``||brick:on button||`` block onto the Workspace (you can put it anywhere). + +```block +brick.buttonEnter.onEvent(ButtonEvent.Pressed, function () { + +}) +brick.showString("Press my buttons to make music!", 1) +``` + +## Step 4 + +Open the ``||music:Music||`` Toolbox drawer. Drag out **5** ``||music:play tone||`` blocks onto the Workspace, and drop them into the ``||brick:on button||`` block. **Note:** you can also right-click on a block and select "Duplicate" to copy blocks. + +```block +brick.buttonEnter.onEvent(ButtonEvent.Pressed, function () { + music.playTone(0, music.beat(BeatFraction.Half)) + music.playTone(0, music.beat(BeatFraction.Half)) + music.playTone(0, music.beat(BeatFraction.Half)) + music.playTone(0, music.beat(BeatFraction.Half)) + music.playTone(0, music.beat(BeatFraction.Half)) +}) +brick.showString("Press my buttons to make music!", 1) +``` + +## Step 5 + +In the ``||music:play tone||`` blocks, use the drop-down menu to select a note to play for each block. You can also set the duration to play each note for. + +![Tone selector keyboard](/static/tutorials/mindstorms-music/play-tone-dropdown.png) + +```block +brick.buttonEnter.onEvent(ButtonEvent.Pressed, function () { + music.playTone(440, music.beat(BeatFraction.Half)) + music.playTone(494, music.beat(BeatFraction.Half)) + music.playTone(392, music.beat(BeatFraction.Half)) + music.playTone(196, music.beat(BeatFraction.Half)) + music.playTone(294, music.beat(BeatFraction.Whole)) +}) +brick.showString("Press my buttons to make music!", 1) +``` + +## Step 6 + +Now, let’s download our program to the brick. Plug your EV3 brick into the computer with the USB cable, and click the blue **Download** button in the bottom left of your screen. Follow the directions to save your program to the brick. You can add more ``||brick:on button||`` blocks to the Workspace and create other ``||music:play tone||`` melodies when different buttons are pressed to transform your Mindstorms brick into a musical instrument! + \ No newline at end of file