All Projects → aquietlife → harvester

aquietlife / harvester

Licence: other
A hand-held, portable sampler and sequencer for playing music with everyday sounds

Programming Languages

c
50402 projects - #5 most used programming language
shell
77523 projects
python
139335 projects - #7 most used programming language
Rich Text Format
576 projects
Makefile
30231 projects

Harvester

Harvester in front of Pink Flowers

Harvester on grass

Harvester Profile

The Harvester is a hand-held, portable live sampler that lets you make music with everyday sounds. With the instrument, you are able to capture sounds around you (your voice, another musical instrument, environmental noises etc.). The instrument provides an interface that lets you play back the sampled sound based around a musical, pentatonic scale. This allows for a wildly expressive sonic palette that can be used for musical performance and sound art installations.

Features

  • Completely open-source software and hardware

  • Audio I/O through onboard microphones, built-in speaker, and 1/4" output

  • Gyroscope for 3-axis sensor input for affecting audio output

  • Eight buttons for sample playbaack

  • Recording button for sampling

  • Looper button for simple looping

  • Rechargable LiPo battery (completely portable and battery-powered!)

  • Supports wall power/charging as well

Videos

Video of Harvester playing in snow

Video of Harvester playing with gyroscope

Video of Harvester playing in the Everglades

Parts

A list of parts and costs can be found on this Google Sheet

Installation Instructions

Solder up Harvester hat

  • Full documentation TBD; The board itself has layouts for where compoenents should go!

Install Raspian for Raspberry Pi

touch /Volumes/boot/ssh

  • Also, create a file called wpa_supplicant.conf in the boot directory

vim /Volumes/boot/wpa_supplicant.conf

  • And add the following lines, replacing MySSID and MyPassword with you WiFi's network name and password:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={ 
ssid="MySSID" 
psk="MyPassword" 
}
  • Afterwards, plug your SD card into your RPI, power it on, and try to SSH into it:

ssh [email protected]

The password is raspberry

Then run the following command to set up your RPI to keep SSH on:

sudo raspi-config

Most importantly, go to Interfacing Options > SSH and enable SSH!

Select finish, then your RPi will reboot. Try connecting again and if everything is working, move on to the next section :D

Set up Harvester Hat Hardware

** Part 1 **

  • On your RPi, clone this repo

git clone https://github.com/aquietlife/harvester

At this point, it would probably be nice to install vim ;)

sudo apt-get install vim

Turn on i2s support in /boot/config.txt

sudo vim /boot/config.txt

Uncomment the following lines:

#dtparam=i2s=on

#dtparam=i2c_arm=on

#dtparam=spi=on

#dtparam=audio=on

Also add the following new entry:

dtparam=i2c_vc=on

Override bcm2708.vc_i2c_override in cmdline.txt

sudo vim /boot/cmdline.txt

Add the following line at the end of the line with a space after the word "consoles":

bcm2708.vc_i2c_override=1

Finally enabled i2c arm from raspi-config

Then reboot your RPi

** Part 2 **

Start your Pi and move into the audio configuration scripts:

cd ~/harvester/software/custom-voice-hat/audio-config/scripts/

Make the scripts executable:

sudo chmod +x ./custom-voice-hat.sh

sudo chmod +x ./install-i2s.sh

Run the Executable scripts:

sudo ./custom-voice-hat.sh

sudo ./install-i2s.sh

Run the custom-voice-hat.sh script again until you get .bak notification.

sudo ./custom-voice-hat.sh

Reboot!

Test Audio and Microphone

Test your audio:

  • sudo aplay /usr/share/sounds/alsa/Front_Center.wav

Test your microphones:

  • sudo arecord test.wav

  • sudo aplay test.wav

Install Python OSC server

  • Install pyOSC

pip install pyosc

You might also need to run it as:

pip2 install pyosc

Install Pd

  • Install Pd

sudo apt-get install pd-comport

git clone git://github.com/umlaeute/pd-iemnet.git

cd pd-iemnet

make

sudo make install

cd ..

  • Install Pd libraries

wget http://puredata.info/downloads/osc/releases/0.1/OSC-0.1.tar.gz

tar -xzvf OSC-0.1.tar.gz

cd OSC-0.1/

make

sudo make install

cd ..

wget http://puredata.info/downloads/osc/releases/0.2/osc-0.2.tar.gz

tar -xzvf osc-0.2.tar.gz

cd osc-0.2/

make

sudo make install

cd ..

Install Harvester Software

Harvester Pd Software

  • Install this repo

  • Test scripts manually

python harvester/software/raspberrypi/gpio-osc.py &

pd -stderr -nogui -verbose -audiodev 4 harvester/software/raspberrypi/harvester.pd &

  • Celebrate!

Autostart software

Add the following lines to the bottom of /home/pi/.bashrc

vim /home/pi/.bashrc

if pgrep -x "python" > /dev/null
then
    echo "Python is already runnning"
else
    echo "Python is not running, attempting to run Python"
	python harvester/software/raspberrypi/gpio-osc.py >/dev/null 2>&1 &
fi

if pgrep -x "pd" > /dev/null
then
    echo "Pd is already running"
else
    echo "Pd is not running, attempting to run Pd"
	pd -stderr -nogui -verbose -audiodev 4 harvester/software/raspberrypi/harvester.pd >/dev/null 2>&1 &
fi

References

Setting up Raspberry Pi

Misc

Credits

Voice sample: Miyu Hosoi

Circuit layout: Mark Kleeb

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].