Wednesday, January 27, 2016

Music and Me Part 3

Around two years ago I wrote about building a pipe organ in a post called Music and me continued. At the end of that post I said that the number of solenoids that I would need would cost quite a bit of money and I wasn't sure when I would get back to it (i.e. I am too cheap to spend that kind of money on the project.)

Well, my friend Jim from across the street came over just before Christmas and I was showing him the pipes that I had made and he asked what the next step was in the project. I said that solenoids were too expensive to take it any further and by way of illustration I called up the Electronic Goldmine website (http://www.goldmine-elec-products.com/) and what to my wondering eyes did appear but solenoids on sale for $5 each. I quickly penned a letter to Santa and there, under the tree on Christmas morning were 42 solenoids. I was back in motion once again.

Jim and I spent hours working on designs for the configuration for the solenoids and eventually hit on something that we thought would work, and here it is in the flesh.
In the lower part of the picture is the "wind chest" that I mentioned in my last post on this topic. This is a design that I pretty much just stole from Matthias Wandel from his woodgears.ca website. For springs I used hacksaw blades because they are made of spring steel. You can see that there are two rows of valves with the (mostly) white hacksaw blades pressing them down (closed). Above the wind chest you can see that there are two aluminum angles, the bottom one is populated with solenoids, the top one not yet.

Running down from the solenoids you might be able to spot thin wires attached to the valves. When the solenoid is powered it pulls on the wire and opens the valve.

So far so good. How do I play music? I mentioned in an earlier post that I planned to use MIDI (Musical Instrument Digital Interface). This is a standard that is more than 30 years old. It is used to control digital musical instruments like synthesizers, to manage stage lighting and pyrotechnics that are coordinated with music and so on. There are many thousands of songs in MIDI format available for free online. These are not sound files, though. They are instructions on what notes to play, when, for how long, and at what volume. Here is an example of some lines from a MIDI file converted to text.

   4: 1:  0  |On Note | chan= 3   | pitch=C#2 | vol=66
   |On Note | chan= 3   | pitch=C#1 | vol=64
24 |On Note | chan= 3   | pitch=F#2 | vol=52
43 |(Off) Note  | chan= 3   | pitch=f#2
48 |On Note | chan= 3   | pitch=G#2 | vol=56
61 |(Off) Note  | chan= 3   | pitch=g#2
72 |On Note | chan= 3   | pitch=E 3 | vol=88
   |On Note | chan= 3   | pitch=B 2 | vol=76
   |On Note | chan= 3   | pitch=F#2 | vol=76
   |On Note | chan= 3   | pitch=G#2 | vol=68
90 |(Off) Note  | chan= 3   | pitch=g#2
91 |(Off) Note  | chan= 3   | pitch=b 2
94 |(Off) Note  | chan= 3   | pitch=c#2
95 |(Off) Note  | chan= 3   | pitch=e 3
   |(Off) Note  | chan= 3   | pitch=f#2
      2:  8 |(Off) Note  | chan= 3   | pitch=c#1

The numbers on the left are timing. Then comes the instruction. The channel is the instrument, then the note, and finally the volume. This particular MIDI file breaks each beat into 96 increments. So, for instance, the first line says "at the beginning of the first beat of the fourth measure, for instrument number 3, start playing C# in the second octave at a volume of 66". The next line says "at the same time start playing C# in the first octave". Then after 24/96ths of a beat (or actually 25/96ths of a beat because the counting starts at 0 rather than 1) start playing F# in the second octave. Then 19/96ths (43-24=19) of a beat later turn of F# in the second octave. And so on, and so on.

I had an Arduino Due microcontroller and hooked up an SD card reader to it and put a MIDI file on the SD card.

Here is the Arduino. It has 53 output pins. Under program control it can turn each of these on or off. I wrote a program on the Arduino that assigns each note to a pin. Then it reads the file and turns the pins on and off with the correct timing. Since I only have 42 notes on the organ I only need 42 pins. These pins can only supply a tiny amount of electricity, however, not nearly enough to trigger a solenoid.


















My sister Monica and her husband Jim happened to be visiting, and she and he and I built this board.
The main components are 42 transistors. These work like electronic switches. The tiny amount of electricity from the Arduino can turn on a transistor, and a transistor can switch enough electricity to trigger a solenoid.

I still have to wire all this stuff together but I'm pretty confident that it will work







And what about all those pipes, you might ask. Not tons of progress on that front, with one exception. Again, I have been using the information provided by Raphi Giangiulio's YouTube videos on how to make wooden organ pipes.

In looking at his specifications there was something that didn't make sense to me. As the pitch gets lower the pipes get bigger until we get below C below middle C. Then they are significantly smaller. I didn't understand that so I sent an email to Raphi and he generously responded and explained that Bourdan pipes are stoppered. That means there is an airtight stopper put into the pipe and that lowers the frequency. It's counter-intuitive but it works. Here are a series of five pipes in order of frequency with the lowest on the left.














And here is a shot of a couple of stoppers.

I have only 18 pipes of the 42 pipes made, and so I am not nearly finished with the project but I am re-invigorated. I'll keep you up-to-date.

4 comments:

  1. Hi I am very interested in your build as I am doing some reading before I start my own build. Would you be happy to share your code ? Well done and a great read . Thanks Iain

    ReplyDelete
  2. Thanks Iain. I'd be happy to share my code. There are a couple of things that I would do differently, however, and I'd like to share those with you as well. Rather than do all that here why don't you contact me at wakkap@gmail.com and I'll give you all the info.

    ReplyDelete
  3. What a great job and build up. I am interested in the code too. For a similar reason: my father is building a pipe organ with traditional paper. I want to build an add-on on his "block" reading the paper. This add-on will open/close the holes by solenoids driven by an Arduino. But I tried to understand and read midi-files but I seized up on that. How can we get in contact for this.

    ReplyDelete
    Replies
    1. Hello, Marco,
      Thanks for your comment. Let me describe how my pipe organ system works. I pre-process the midi files, using a raspberry pi, converting them from binary to text files. I do this for a couple of reasons. First, it lets me calculate the timing for the entire piece, accounting for tempo change, channel changes and so forth. Second, I have the organ play lots of different midi files, most of which have no pipe organ parts under the General Midi specification. The text files make it easy for me to change the instrument specified for a particular channel. The raspberry pi then sends the note-on, note-off commands to the arduino to execute. I used a python library posted on github by vishnubob to assist in the conversion from binary to text. I'm happy to give you my code but I'm not sure it would be directly applicable. Contact me at wakkap@gmail.com and I'll send you the code or if you don't think it will work for you maybe I can help you in some other way.
      Regards,
      Wendell

      Delete