It was quite difficult for me to find an idea for my final project. Eventually I thought that, as a foreigner, this might be a good opportunity for me to introduce some folk instruments from my country. Since my father plays the bagpipes, I decided to do this project about the bagpipes. It is loosely based on this application.
This application serves to introduce people to the bagpipes, a folk instrument found across Europe and beyond. The first part of the application is a map of Europe. While hovering with your mouse over the map, information about the different types of bagpipes of different countries will appear. Also, when your mouse is hovering over a country, you will hear an example of music from a bagpipe from that country. The icon of the speaker in the top left corner lets you turn the sound on and off. When you click on The Netherlands on the map, you can move to the second part of the application (or click here).
At the second part of the application you can get to know more about the type of bagpipe from The Netherlands and Belgium: the Flemish Bagpipe. At the top there are three sliders. One for the bass drone, one for the tenor drone and one for the chanter. These sliders control the volume of the respective parts of the bagpipe. On the image you can see the volume as little smoke clouds that will appear if the bagpipe is playing. The colored buttons let you play a particular note. When pressing one of those buttons, the finger placement that is necessary to play that note will appear on the image. You can also play these notes by pressing the correct button on the keyboard. Which key you need to press for each note is shown between brackets on each button.
Next to these buttons there is an input field and an "add"-button. This is to create a song. In the input field you can give an integer number which represents the length of the note you want to add to the song. After that you click "add". You will see that the note is added in the rectangle at the bottom of the page. You can click "play" to play the song and "stop" to stop it. "reset" will remove everything that was added to the song and set it back to the default position. The slider on top of the box let you adjust the speed of the playback of the song.
When the bagpipe is playing, you will see that the frequency spectrum will appear at the right side of the screen. This is the frequency spectrum of the total output of the application.
For the implementation of the map of europe, I used a plugin from cssmapsplugin. This plugin already has a map with the hover functionality. The only thing I still needed to implement, was the "onmouseover"-function. To play the music when hovering over the map, I used p5.js to load and play the sound.
For the second part of the application I also used p5.js to load and play the different samples, to do FFT-analysis for the frequency spectrum, and to make the GUI.
The samples used in the second part of the application are real samples of a Flemish bagpipe, recorded by my father, who plays the bagpipes. Originally I was planning on using these samples to do FFT-analysis and then reproduce the sound with oscillators. The result, however, was not nice. That is why I decided to use the real samples instead.
What I first wanted to add in the second part of the application was convolution, using an impulse response of several outside places (because that's where the bagpipes sound the best). However, I had trouble with the convolver offered by p5.js. The application never stopped loading when I included a convolver. I first thought that there was a bug in my code, but when I went to look at the examples on the website of p5.js, I noticed that those examples kept loading too. I concluded that the problem must be p5.js and not my code, so I didn't include convolution.
Another addition that can be made is doing the same for the other types of bagpipes from the other countries. That way you could click on every country on the map and go to a similar application as is now the case for The Netherlands.