# Make a Sound Machine

Make a Sound Machine that can play a rhythm, music or just noise!

![Maker – Make a Sound Machine Main Image](/static/lessons/make-a-sound-machine/lego-maker-sound-machine-1.jpg)

## Connect 

Music is made up of a combination of sounds, notes and rhythm. A rhythm is a regular movement or repeated pattern of movements that can be used in many different ways. In mechanical machines, a rhythm can help keep a machine running smoothly. It can also be used to generate different sounds in music. 

![Sound Machine 3 Stock Footage Images](/static/lessons/make-a-sound-machine/three-stock.jpg)

Look at the photos and think about:

* What do you see?
* Can you see any new design opportunities?
* What problems can you see?
* How could you make use of the LEGO bricks, the EV3 Programmable Brick, motors, and sensors?

### Things You’ll Need

* [@boardname@ Core Set](https://education.lego.com/enus/products/legomindstormseducationev3coreset/5003400)

Additional materials to add to your Sound Machine:

* Small musical instruments, such as chimes, bells, and small drums
* Arts and crafts materials such as:
>* Cardboard
>* Construction paper
>* Pipe cleaners
>* Plastic or paper cups 
>* Recycled materials
>* Rubber bands
>* Wire

### Prior Knowledge

This activity uses motor rotations and sensor inputs. You may want to try the [Use](/getting-started/use) or [Object Detection](/coding/object-detection) activity before this one. Or, you can start out with this activity and tinker with coding motor and sensor inputs on your own.

## Contemplate

Follow the steps of the _Maker Design Process_ for this lesson:

| | |
|-|-|
| ![Paper sheet icon](/static/maker/design-process-icons/define-problem.png) | **Define the Problem** |
| ![Lightbulb icon](/static/maker/design-process-icons/brainstorming.png) | **Brainstorming** |
| ![Checkmark icon](/static/maker/design-process-icons/define-criteria.png) | **Define the Design Criteria** |
| ![Connector icon](/static/maker/design-process-icons/go-make.png) | **Go Make** |
| ![Redo icon](/static/maker/design-process-icons/review-revise.png) | **Review and Revise Your Solution** |
| ![Speaker icon](/static/maker/design-process-icons/communicate.png) | **Communicate Your Solution** |

### Defining the Problem

1. What problems did you imagine? 
2. Pick one problem and explain it to a partner.

### Brainstorm

Now that you have defined a problem, start to generate ideas for solving it. 

### ~hint

Some things to do while brainstorming:

* Use the bricks from the LEGO set to help you brainstorm or sketch your ideas on paper.
* The goal of brainstorming is to explore as many solutions as possible. You can use the tinkering examples in the Sample Solutions section below as inspiration for getting started.
* Share your ideas and get some feedback. It may lead to more ideas!

### ~

### Define the Design Criteria

* You should have generated a number of ideas. Now select the best one to make. 
* Write out two or three specific design criteria your design must meet.

### Go Make

It is time to start making!

* Use the components from the @boardname@ Core Set and additional materials to make your chosen solution. 
* Test and analyze your design as you go and record any improvements that you make. 

### Review and Revise Your Solution

* Have you managed to solve the problem that you defined? 
* Look back at your design criteria. How well does your solution work? 
* How can you improve your design?

### Communicate Your Solution

Now that you have finished you can:
* Make a sketch or take a photo or video of your model.
* Label the three most important parts and explain how they work.
* Share your work with others.

## Continue

### Rhythm Maker - Sample Solution

This example program combined with the small model will make a beat and rhythm on any surface when the program is run.

![Sound Machine Tinkering Example](/static/lessons/make-a-sound-machine/lego-maker-sound-machine.jpg)

#### Programming

1. Drag a run ``||motors:large motor A||`` block inside the ``||loops:forever||`` loop.
2. Press the **(+)**.
3. Change the rotations to `2`.
4. Drag a ``||loops:pause||`` block and place it under the motor block.
5. Change the duration to ``200`` ms.
6. Drag a ``||run large motor A||`` block inside the ``||loops:forever||`` loop.
7. Press the **(+)**.
8. Change the power to `100`.
9. Change the rotations to `1`.

```blocks
forever(function () {
    motors.largeA.run(50, 2, MoveUnit.Rotations)
    pause(200)
    motors.largeA.run(100, 1, MoveUnit.Rotations)
})
```

Click **Download** and follow the instructions to get your code onto your EV3 Brick. Press the ``center`` button on the EV3 Brick to run the program.

### Color Sensor Sounds - Sample Solution

You can also tinker with the use of sensors.

![Sound Machine Color Sensor](/static/lessons/make-a-sound-machine/lego-maker-sound-machine-color-sensor.jpg)

#### Programming

1. Drag an ``||logic:if else||`` Logic block and place it inside the ``||loops:forever||`` loop.
2. Drag a ``||sensors:pause color sensor||`` block and place it inside the ``||logic:if true then||`` block.
3. Change the color to ``blue``.
4. Drag a ``||music:play tone||`` block and place under the sensor block.
5. Change the tone to ``Middle G`` (392 Hz).
6. Drag a ``||sensors:pause color sensor||`` block and place it inside the ``||logic:else||`` block.
7. Change the color to ``red``.
8. Drag a ``||music:play tone||`` block and place under the new sensor block.
9. Change the tone to ``High C`` (523 Hz).
10. Press the **(+)**.
11. Drag a ``||sensors:pause color sensor||`` block and place it inside the ``||logic:else if||`` block.
12. Change the color to ``green``.
13. Drag a ``||music:play tone||`` block and place under the new sensor block.
14. Change the tone to ``High D`` (587 Hz).

```blocks
forever(function () {
    if (true) {
        sensors.color3.pauseUntilColorDetected(ColorSensorColor.Blue)
        music.playTone(392, music.beat(BeatFraction.Whole))
    } else if (false) {
        sensors.color3.pauseUntilColorDetected(ColorSensorColor.Red)
        music.playTone(523, music.beat(BeatFraction.Half))
    } else {
        sensors.color3.pauseUntilColorDetected(ColorSensorColor.Green)
        music.playTone(587, music.beat(BeatFraction.Half))
    }
})
```

Click **Download** and follow the instructions to get your code onto your EV3 Brick. Press the ``center`` button on the EV3 Brick to run the program.