<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://vjmedia.wpi.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nfbrown</id>
	<title>vjmedia - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://vjmedia.wpi.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nfbrown"/>
	<link rel="alternate" type="text/html" href="https://vjmedia.wpi.edu/Special:Contributions/Nfbrown"/>
	<updated>2026-06-09T22:33:19Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.8</generator>
	<entry>
		<id>https://vjmedia.wpi.edu/index.php?title=Image_to_MIDI&amp;diff=245083</id>
		<title>Image to MIDI</title>
		<link rel="alternate" type="text/html" href="https://vjmedia.wpi.edu/index.php?title=Image_to_MIDI&amp;diff=245083"/>
		<updated>2017-01-03T18:16:02Z</updated>

		<summary type="html">&lt;p&gt;Nfbrown: Change download to Google Drive link. Dropbox public links got suspended.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Image to MIDI is a small program made in Max that allows users to input an image and use that image to create and play MIDI notes. The program has a few different options for ways to control pitch, velocity, and duration of notes based on different types of data in each pixel of the image.&lt;br /&gt;
&lt;br /&gt;
I wanted to create a program that would take some type of file input and create music from it. I eventually decided that using images as inputs would create some interesting sounds. With almost any image, the settings I have created can allow the user to make decent sounding music from most images.&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/open?id=0ByruEACt8vubWk55eEpKaWE0S00 Download] (contains Windows and Mac versions of the application, the original Max patch, a Max for Live patch, and the description video)&lt;br /&gt;
&lt;br /&gt;
Description video:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;VMHkXbTVySs&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Interactive Systems]]&lt;br /&gt;
[[Category: Advisor:Manzo]]&lt;/div&gt;</summary>
		<author><name>Nfbrown</name></author>
		
	</entry>
	<entry>
		<id>https://vjmedia.wpi.edu/index.php?title=Category:Inquiry_Seminary_in_Music_Technology:_Interactive_Music_Systems_(3910)&amp;diff=242643</id>
		<title>Category:Inquiry Seminary in Music Technology: Interactive Music Systems (3910)</title>
		<link rel="alternate" type="text/html" href="https://vjmedia.wpi.edu/index.php?title=Category:Inquiry_Seminary_in_Music_Technology:_Interactive_Music_Systems_(3910)&amp;diff=242643"/>
		<updated>2014-10-17T17:30:14Z</updated>

		<summary type="html">&lt;p&gt;Nfbrown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Inquiry Seminary: Interactive Music Systems==&lt;br /&gt;
&lt;br /&gt;
Course files for ''Interactive Music Systems'' go here&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Do NOT''' tag anything other than assignments in these Categories. Projects should be tagged in other Categories&lt;br /&gt;
*'''Do NOT''' make new pages in this category. A new page is created and titled according to the year/term&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
_________________________________&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A-Term 2014 Projects ==&lt;br /&gt;
* Ryan Santos: [[Developing_Mini-games_for_&amp;quot;Before_Heaven&amp;quot;]]&lt;br /&gt;
* Nick Brown, Tom Paolillo, Hristos Giannopoulos: [[Interactive_Drums]]&lt;/div&gt;</summary>
		<author><name>Nfbrown</name></author>
		
	</entry>
	<entry>
		<id>https://vjmedia.wpi.edu/index.php?title=Interactive_Drums&amp;diff=242642</id>
		<title>Interactive Drums</title>
		<link rel="alternate" type="text/html" href="https://vjmedia.wpi.edu/index.php?title=Interactive_Drums&amp;diff=242642"/>
		<updated>2014-10-17T17:28:34Z</updated>

		<summary type="html">&lt;p&gt;Nfbrown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Interactive Systems]]&lt;br /&gt;
[[Category: Advisor:Manzo]]&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
This project was done by Nick Brown, Tom Paolillo, and Hristos Giannopoulos for MU3910, taught by V.J. Manzo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Abstract'''&lt;br /&gt;
&lt;br /&gt;
Our goal was to design and implement a low-cost addition to a drum kit designed to add a level of interactivity to the set. We used a Cypress PSoC for the embedded processing, which handled hit detection and lighting up different LEDS on each drum. This was combined with a Python application which could parse MIDI files, and send the data to the PSoC, which would then light up appropriate drums to teach the user how to play a song.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Description'''&lt;br /&gt;
&lt;br /&gt;
There are three main components to this project:&lt;br /&gt;
*Embedded code written in C for a Cypress Programmable System-on-a-Chip (PSoC)&lt;br /&gt;
*Backend code written in Python for parsing MIDI files and sending data to the PSoC over serial&lt;br /&gt;
*Graphical user interface (GUI) written in Python using Tkinter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Embedded'''&lt;br /&gt;
&lt;br /&gt;
The embedded code handled three things: lighting up LEDs on drums that need to be hit, detecting drum hits, and communicating over serial to the PC. The code works as follows:&lt;br /&gt;
&lt;br /&gt;
1. Receives data from PC including which drums to light up and when&lt;br /&gt;
&lt;br /&gt;
2. Turns on red LED on drum before it needs to be hit&lt;br /&gt;
&lt;br /&gt;
3. Turn off red LED and turn on green LED when the drum needs to be hit&lt;br /&gt;
&lt;br /&gt;
4. Checks for drum hit using microphones attached to each drum&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PC Backend'''&lt;br /&gt;
&lt;br /&gt;
The Python backend includes two modules, one that deals with the communication between the PC and the PSoC using the pySerial library, and one that uses the Mido library to parse drum based MIDI files to convert them to a predefined packet structure that the PSoC is programmed to understand. The packet structure can theoretically support up to 16 drums, but the PSoC can only support 8. We used 4 drums for this project to keep things relatively simple, since only created a prototype.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PC GUI'''&lt;br /&gt;
&lt;br /&gt;
The GUI, written in Python using Tkinter, allows the user to select between the three different modes of play as well as allowing them to choose a song. The three modes of play are Training Mode, Score Mode, and Show Mode. Training Mode will set the PSoC to wait for the player to hit the drum before continuing to the next note. Score Mode requires the user to play the drums, in time, as the PSoC lights them up. Both Training Mode and Score Mode will display a score on screen for the player. Show Mode does not require a song, and instead lights up the drums in reaction to them being hit. This mode could possibly be extended to be used to create MIDI drum files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Difficulties'''&lt;br /&gt;
&lt;br /&gt;
The most difficult parts of the project were related to detecting drum hits and parsing MIDI files. For hit detection, we decided to use cheap microphones places right beneath or inside the drums. When the PSoC is powered on, it lights up each drum in order, and the user must hit them to calibrate the threshold that the PSoC will use to detect drum hits. For MIDI parsing, we used an existing library to parse out each of the MIDI events to attempt to turn them into serial packets to send to the PSoC. Because the PSoC is set up to process packets on a timer, we have to send packets to the PSoC regardless of whether or not drums need to be hit. This made converting the time in MIDI note on events into a series of packets very difficult. We ended up with MIDI parsing that appears to work on relatively simple MIDI files that contain only drum tracks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Conclusion'''&lt;br /&gt;
&lt;br /&gt;
This system could be installed on an existing drum kit for less than approximately $30. While it is a relatively rudimentary system, it is accessible and extensible. Currently, the system only supports Linux PCs, but we plan to add support for Mac and possibly Windows in the future.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=5bVihZEgty4&amp;amp;feature=youtu.be Demo Video]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nfbrown/interactive-drums Source Code on GitHub]&lt;/div&gt;</summary>
		<author><name>Nfbrown</name></author>
		
	</entry>
	<entry>
		<id>https://vjmedia.wpi.edu/index.php?title=Interactive_Drums&amp;diff=242641</id>
		<title>Interactive Drums</title>
		<link rel="alternate" type="text/html" href="https://vjmedia.wpi.edu/index.php?title=Interactive_Drums&amp;diff=242641"/>
		<updated>2014-10-17T17:28:21Z</updated>

		<summary type="html">&lt;p&gt;Nfbrown: Created page with 'Category:Interactive Systems Category: Advisor:Manzo '''Background''' This project was done by Nick Brown, Tom Paolillo, and Hristos Giannopoulos for MU3910, taught by V.…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Interactive Systems]]&lt;br /&gt;
[[Category: Advisor:Manzo]]&lt;br /&gt;
'''Background'''&lt;br /&gt;
This project was done by Nick Brown, Tom Paolillo, and Hristos Giannopoulos for MU3910, taught by V.J. Manzo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Abstract'''&lt;br /&gt;
&lt;br /&gt;
Our goal was to design and implement a low-cost addition to a drum kit designed to add a level of interactivity to the set. We used a Cypress PSoC for the embedded processing, which handled hit detection and lighting up different LEDS on each drum. This was combined with a Python application which could parse MIDI files, and send the data to the PSoC, which would then light up appropriate drums to teach the user how to play a song.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Description'''&lt;br /&gt;
&lt;br /&gt;
There are three main components to this project:&lt;br /&gt;
*Embedded code written in C for a Cypress Programmable System-on-a-Chip (PSoC)&lt;br /&gt;
*Backend code written in Python for parsing MIDI files and sending data to the PSoC over serial&lt;br /&gt;
*Graphical user interface (GUI) written in Python using Tkinter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Embedded'''&lt;br /&gt;
&lt;br /&gt;
The embedded code handled three things: lighting up LEDs on drums that need to be hit, detecting drum hits, and communicating over serial to the PC. The code works as follows:&lt;br /&gt;
&lt;br /&gt;
1. Receives data from PC including which drums to light up and when&lt;br /&gt;
&lt;br /&gt;
2. Turns on red LED on drum before it needs to be hit&lt;br /&gt;
&lt;br /&gt;
3. Turn off red LED and turn on green LED when the drum needs to be hit&lt;br /&gt;
&lt;br /&gt;
4. Checks for drum hit using microphones attached to each drum&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PC Backend'''&lt;br /&gt;
&lt;br /&gt;
The Python backend includes two modules, one that deals with the communication between the PC and the PSoC using the pySerial library, and one that uses the Mido library to parse drum based MIDI files to convert them to a predefined packet structure that the PSoC is programmed to understand. The packet structure can theoretically support up to 16 drums, but the PSoC can only support 8. We used 4 drums for this project to keep things relatively simple, since only created a prototype.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PC GUI'''&lt;br /&gt;
&lt;br /&gt;
The GUI, written in Python using Tkinter, allows the user to select between the three different modes of play as well as allowing them to choose a song. The three modes of play are Training Mode, Score Mode, and Show Mode. Training Mode will set the PSoC to wait for the player to hit the drum before continuing to the next note. Score Mode requires the user to play the drums, in time, as the PSoC lights them up. Both Training Mode and Score Mode will display a score on screen for the player. Show Mode does not require a song, and instead lights up the drums in reaction to them being hit. This mode could possibly be extended to be used to create MIDI drum files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Difficulties'''&lt;br /&gt;
&lt;br /&gt;
The most difficult parts of the project were related to detecting drum hits and parsing MIDI files. For hit detection, we decided to use cheap microphones places right beneath or inside the drums. When the PSoC is powered on, it lights up each drum in order, and the user must hit them to calibrate the threshold that the PSoC will use to detect drum hits. For MIDI parsing, we used an existing library to parse out each of the MIDI events to attempt to turn them into serial packets to send to the PSoC. Because the PSoC is set up to process packets on a timer, we have to send packets to the PSoC regardless of whether or not drums need to be hit. This made converting the time in MIDI note on events into a series of packets very difficult. We ended up with MIDI parsing that appears to work on relatively simple MIDI files that contain only drum tracks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Conclusion'''&lt;br /&gt;
&lt;br /&gt;
This system could be installed on an existing drum kit for less than approximately $30. While it is a relatively rudimentary system, it is accessible and extensible. Currently, the system only supports Linux PCs, but we plan to add support for Mac and possibly Windows in the future.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=5bVihZEgty4&amp;amp;feature=youtu.be Demo Video]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nfbrown/interactive-drums Source Code on GitHub]&lt;/div&gt;</summary>
		<author><name>Nfbrown</name></author>
		
	</entry>
	<entry>
		<id>https://vjmedia.wpi.edu/index.php?title=Image_to_MIDI&amp;diff=129122</id>
		<title>Image to MIDI</title>
		<link rel="alternate" type="text/html" href="https://vjmedia.wpi.edu/index.php?title=Image_to_MIDI&amp;diff=129122"/>
		<updated>2013-12-20T19:22:05Z</updated>

		<summary type="html">&lt;p&gt;Nfbrown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Image to MIDI is a small program made in Max that allows users to input an image and use that image to create and play MIDI notes. The program has a few different options for ways to control pitch, velocity, and duration of notes based on different types of data in each pixel of the image.&lt;br /&gt;
&lt;br /&gt;
I wanted to create a program that would take some type of file input and create music from it. I eventually decided that using images as inputs would create some interesting sounds. With almost any image, the settings I have created can allow the user to make decent sounding music from most images.&lt;br /&gt;
&lt;br /&gt;
[https://www.dropbox.com/s/e0ej91px5kuzu84/image_to_midi.zip Download] (contains Windows and Mac versions of the application, the original Max patch, a Max for Live patch, and the description video)&lt;br /&gt;
&lt;br /&gt;
Description video:&lt;br /&gt;
&amp;lt;mediaplayer&amp;gt;http://youtu.be/VMHkXbTVySs&amp;lt;/mediaplayer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Interactive Systems]]&lt;br /&gt;
[[Category: Advisor:Manzo]]&lt;/div&gt;</summary>
		<author><name>Nfbrown</name></author>
		
	</entry>
	<entry>
		<id>https://vjmedia.wpi.edu/index.php?title=Image_to_MIDI&amp;diff=129120</id>
		<title>Image to MIDI</title>
		<link rel="alternate" type="text/html" href="https://vjmedia.wpi.edu/index.php?title=Image_to_MIDI&amp;diff=129120"/>
		<updated>2013-12-20T19:18:33Z</updated>

		<summary type="html">&lt;p&gt;Nfbrown: Created page with 'Image to MIDI is a small program made in Max that allows users to input an image and use that image to create and play MIDI notes. The program has a few different options for way…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Image to MIDI is a small program made in Max that allows users to input an image and use that image to create and play MIDI notes. The program has a few different options for ways to control pitch, velocity, and duration of notes based on different types of data in each pixel of the image.&lt;br /&gt;
&lt;br /&gt;
I wanted to create a program that would take some type of file input and create music from it. I eventually decided that using images as inputs would create some interesting sounds. With almost any image, the settings I have created can allow the user to make decent sounding music from most images.&lt;br /&gt;
&lt;br /&gt;
[https://www.dropbox.com/s/e0ej91px5kuzu84/image_to_midi.zip Download] (contains Windows and Mac versions of the application, the original Max patch, a Max for Live patch, and the description video)&lt;br /&gt;
&lt;br /&gt;
A video of the application in use:&lt;br /&gt;
[[File:Image_to_MIDI_(low_quality).mp4‎]]&lt;br /&gt;
&lt;br /&gt;
This video is low quality due to the file size limit for the wiki, but the download contains a high quality version of the video with captions that briefly explain parts of the project.&lt;br /&gt;
&lt;br /&gt;
[[Category:Interactive Systems]]&lt;br /&gt;
[[Category: Advisor:Manzo]]&lt;/div&gt;</summary>
		<author><name>Nfbrown</name></author>
		
	</entry>
	<entry>
		<id>https://vjmedia.wpi.edu/index.php?title=File:Image_to_MIDI_(low_quality).mp4&amp;diff=129106</id>
		<title>File:Image to MIDI (low quality).mp4</title>
		<link rel="alternate" type="text/html" href="https://vjmedia.wpi.edu/index.php?title=File:Image_to_MIDI_(low_quality).mp4&amp;diff=129106"/>
		<updated>2013-12-20T18:37:08Z</updated>

		<summary type="html">&lt;p&gt;Nfbrown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nfbrown</name></author>
		
	</entry>
</feed>