element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
MusicTech
  • Challenges & Projects
  • Design Challenges
  • MusicTech
  • More
  • Cancel
MusicTech
Blog Kazumi - 01 - Introduction
  • Blog
  • Forum
  • Documents
  • Polls
  • Files
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: luiszayas
  • Date Created: 8 Feb 2016 8:41 PM Date Created
  • Views 748 views
  • Likes 1 like
  • Comments 1 comment
  • music tech
  • music_tech
  • musictech
  • music-tech
  • kazumi
Related
Recommended

Kazumi - 01 - Introduction

luiszayas
luiszayas
8 Feb 2016

Hi everybody,

 

I'm a Product Design Engineer and musician based in London. It has taken long for me to make this first blog post but I will hopefully start posting more regularly from now on.

 

I will start off by giving a short introduction of my project in its current state.

Kazumi

Kazumi is an accessible instrument for aspiring musicians and makers. It is self-contained and is designed as an open-source DIY kit so that users can adapt it easily. Each of the seven surfaces is a touch-pad that either triggers or modulates sounds, which are tuned differently depending on how the structure is rotated on its base. Playing music on Kazumi is a tactile, sensual experience, hands exploring and caressing to draw different notes from the integrated speaker. Experimental and immediately accessible, Kazumi is something to play, and therein lies its wonderful attraction, drawing those into music-making those who might feel alienated by more traditional instruments.

 

image

 

Hardware

Kazumi v1 is made up of the following:

 

Off-the-shelf:

1x Raspberry Pi 2 Model B

4x MPR121 Capacitive Sensing Breakout Boards

1x Raspberry Pi Soft-Shutdown Breakout Board

1x 6000mAh Power Bank

1x 2.5W Portable Speaker

10x 10mmx3mm Neodymium Magnets

 

Custom-made:

1x Structure:

- Foam base (laser cut)

- ABS base (laser cut)

- 7 Acrylic legs (laser cut)

- 7 Pad rests (laser cut acrylic + magnetic tape)

- ABS top (laser cut)

7x Touch Pads:

- Polypropylene tray (laser cut) + magnetic tape

- 5 Copper Adhesive Electrodes (cut on a vinyl cutter)

- Foam insert (laser cut)

- Reflective PVC cover (cut on vinyl cutter) + magnetic tape

 

image

 

Software

On startup, the Raspberry Pi is running a python script that asks the MPR121s for the baseline and filtered datastreams, subtracts them and sends the difference to Pure Data:

import socket
import time
import MPR121


# Create MPR121 instances
cap1 = MPR121.MPR121()
cap2 = MPR121.MPR121()
cap3 = MPR121.MPR121()
cap4 = MPR121.MPR121()


# Initialize communication with all 4 MPR121
cap1.begin( 0x5a )
cap2.begin( 0x5b )
cap3.begin( 0x5c )
cap4.begin( 0x5d )




s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("localhost", 9001))


# Start loop
while True:


    # Filtered and baseline data are commented out
    # filtered = [cap1.filtered_data(i) for i in range(12)]
    # print 'Filt:', '\t'.join(map(str, filtered))
    # base = [cap1.baseline_data(i) for i in range(12)]
    # print 'Base:', '\t'.join(map(str, base))
    
    # Difference for all 4 boards are calculated, printed in terminal and sent to Pure Data
    diff1 = [cap1.baseline_data(i)-cap1.filtered_data(i) for i in range(12)]
    print 'Diff1:', '\t'.join(map(str, diff1))
    s.send('diff1: ' +  '\t'.join(map(str, diff1)) + ';')
    
    diff2 = [cap2.baseline_data(i)-cap2.filtered_data(i) for i in range(12)]
    print 'Diff2:', '\t'.join(map(str, diff2))
    s.send('diff2: ' +  '\t'.join(map(str, diff2)) + ';')
    
    diff3 = [cap3.baseline_data(i)-cap3.filtered_data(i) for i in range(12)]
    print 'Diff3:', '\t'.join(map(str, diff3))
    s.send('diff3: ' +  '\t'.join(map(str, diff3)) + ';')
    
    diff4 = [cap4.baseline_data(i)-cap4.filtered_data(i) for i in range(12)]
    print 'Diff4:', '\t'.join(map(str, diff4))
    s.send ('diff4: ' +  '\t'.join(map(str, diff4)) + ';')
    
    # Short pause before repeating loop
    time.sleep(0.001)

 

In the background, Pure Data receives the datastreams and organises them into number boxes that correspond to each pad/note. It also gets the capacitance from the magnets from the base, in order to know if the top part is snapped into position and which side is the tonic note. I will share more about the patches in later posts, when I adapt this for Heavy Audio Tools to run on the Bela Platform and BeagleBone Black.

 

---

 

That's all for now. In the next post, I will talk about my objectives for this challenge and explain why I have decided to use BeagleBone Black.

  • Sign in to reply
  • DAB
    DAB over 9 years ago

    Very cool device.

     

    I can see a lot of ways to combine the sense data to make music and sounds.

     

    DAB

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube