Ebay Classic organs

Collapse

Announcement

Collapse
No announcement yet.

Raspberry Pi Based Organ-top Synthesizer

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Raspberry Pi Based Organ-top Synthesizer

    I wasn't sure which forum to post this into, since it's an organ build (sort of), but the sound generation is entirely in software (thus virtual), and it was designed specifically to replace the top panel of my 1962 Hammond M-111, adding a third keyboard and a lot of additional voices. I decided that the Virtual Organs forum was the best fit. So without further much ado about nothing ...

    This is my Raspberry Pi 3 based organ-top synthesizer. The keyboard is from a Yamaha CN-70 combo-ish organ I picked up cheap ($0). The enclosure is hand made to replace the top panel of the organ.

    Click image for larger version

Name:	pi-synth1.jpg
Views:	1
Size:	83.5 KB
ID:	613555

    Unlike my previous organ-top synthesizer, the keyboard is a good 5cm (2") lower, and a full 61 keys to boot.

    Click image for larger version

Name:	pi-synth1a.jpg
Views:	1
Size:	54.2 KB
ID:	613556

    The 2-line x 40-character LCD shows the currently selected voices. At the moment, the buttons to the left of the screen are for the numbers 0 to 9, and the ones to the right are to select which part of the keyboard to change the voice of, transpose, etc. (not all the buttons do anything yet). I plan to label the keys, once I've settled on the user interface I want.

    Click image for larger version

Name:	pi-synth2.jpg
Views:	1
Size:	93.6 KB
ID:	613557

    Everything is done by a single Raspberry Pi 3 computer, which scans the keyboard matrix (the two bundles of coloured wires), the pushbuttons (upper left ribbon cable), controls the display (lower left ribbon cable), and of course generates all the voices. It is capable of 128-note polyphony.

    Click image for larger version

Name:	pi-synth3.jpg
Views:	1
Size:	106.7 KB
ID:	613558

    Click image for larger version

Name:	pi-synth3a.jpg
Views:	1
Size:	99.9 KB
ID:	613559

    There have been a few sample-based Pi synths out there, but I decided to go with purely synthesized voices. The software is custom written by me, and is controlled by a voice configuration file. Voices are designed by specifying traditional synthesizer parameters (e.g. wave form, ADSR envelope, filters), in combination with other techniques (e.g. list of harmonics, Hammond drawbar registrations). Each voice can consist of up to four layers, each with its own parameters, so it's possible to construct some fairly decent simulations of real instruments.

    The software is still a work in progress, so that capabilities will change and grow over time. I leave the synth on even when the organ is off (it consumes about 4W) so that I can access the Pi to work on the software.

    One issue I'm trying to figure out is related to the Hammond's start motor. When I start up the Hammond, at the point that I release the start motor switch, the synth display goes haywire, filling with garbage characters. The Pi itself is still fine, and reinitializing the display allows everything to continue, but it's annoying. Turning off the start motor seems to produce some sort of very localized EMP that confuses the display.
    Stefan Vorkoetter: http://www.stefanv.com

    1962 Hammond M-111 with Improved Vibrato, Internal Rotary Speaker, Drum Machine,
    Window Seat Tone Cabinets, Completely Rebuilt Amplifier, and Recapped Tone Generator.
    1978 PAiA 1550 Stringz'n'Thingz with many enhancements.
    2017 Raspberry Pi organ-top synthesizer.

  • #2
    It'd be neat if you could demo with some audio files for us to hear.
    Viscount C400 3-manual
    8 channels + 2 reverb channels (w/ Lexicon MX200)
    Klipsch RSX-3 speakers and Klipsch Ultra 5.1 subwoofers

    Comment


    • #3
      Originally posted by rjsilva View Post
      It'd be neat if you could demo with some audio files for us to hear.
      Will do so as soon as I have a chance to make some recordings.
      Stefan Vorkoetter: http://www.stefanv.com

      1962 Hammond M-111 with Improved Vibrato, Internal Rotary Speaker, Drum Machine,
      Window Seat Tone Cabinets, Completely Rebuilt Amplifier, and Recapped Tone Generator.
      1978 PAiA 1550 Stringz'n'Thingz with many enhancements.
      2017 Raspberry Pi organ-top synthesizer.

      Comment


      • #4
        Originally posted by stefanv View Post
        I wasn't sure which forum to post this into, since it's an organ build (sort of), but the sound generation is entirely in software (thus virtual), and it was designed specifically to replace the top panel of my 1962 Hammond M-111, adding a third keyboard and a lot of additional voices. I decided that the Virtual Organs forum was the best fit. So without further much ado about nothing ...

        This is my Raspberry Pi 3 based organ-top synthesizer. The keyboard is from a Yamaha CN-70 combo-ish organ I picked up cheap ($0). The enclosure is hand made to replace the top panel of the organ.

        [ATTACH=CONFIG]27144[/ATTACH]

        Unlike my previous organ-top synthesizer, the keyboard is a good 5cm (2") lower, and a full 61 keys to boot.

        [ATTACH=CONFIG]27145[/ATTACH]

        The 2-line x 40-character LCD shows the currently selected voices. At the moment, the buttons to the left of the screen are for the numbers 0 to 9, and the ones to the right are to select which part of the keyboard to change the voice of, transpose, etc. (not all the buttons do anything yet). I plan to label the keys, once I've settled on the user interface I want.

        [ATTACH=CONFIG]27146[/ATTACH]

        Everything is done by a single Raspberry Pi 3 computer, which scans the keyboard matrix (the two bundles of coloured wires), the pushbuttons (upper left ribbon cable), controls the display (lower left ribbon cable), and of course generates all the voices. It is capable of 128-note polyphony.

        [ATTACH=CONFIG]27147[/ATTACH]

        [ATTACH=CONFIG]27148[/ATTACH]

        There have been a few sample-based Pi synths out there, but I decided to go with purely synthesized voices. The software is custom written by me, and is controlled by a voice configuration file. Voices are designed by specifying traditional synthesizer parameters (e.g. wave form, ADSR envelope, filters), in combination with other techniques (e.g. list of harmonics, Hammond drawbar registrations). Each voice can consist of up to four layers, each with its own parameters, so it's possible to construct some fairly decent simulations of real instruments.

        The software is still a work in progress, so that capabilities will change and grow over time. I leave the synth on even when the organ is off (it consumes about 4W) so that I can access the Pi to work on the software.

        One issue I'm trying to figure out is related to the Hammond's start motor. When I start up the Hammond, at the point that I release the start motor switch, the synth display goes haywire, filling with garbage characters. The Pi itself is still fine, and reinitializing the display allows everything to continue, but it's annoying. Turning off the start motor seems to produce some sort of very localized EMP that confuses the display.
        I programed with arduino and find it better than raspberry pi, the pi has a OS software that comes with rather than be blank like arduino and makes for a better micro controller, but i suspect that their is something overloading, the EMP could be reduced by adding a diode to squelch any sparks that are radiating from the start buttons. but it looks like you have unwanted voltage spikes in the circuit, or build a metal casing around your start and run switch and ground it and the problem could be alleviated that way i would like to see some schematics if you have any to further diagnose the problem.
        Instruments:
        22/8 Button accordion.

        Comment


        • #5
          Originally posted by Ben Madison View Post
          I programed with arduino and find it better than raspberry pi ...
          Except that the Arduino has nowhere near the computing horsepower of the Pi. It would not be able to do all that my Pi is doing. The lack of memory would also be an issue, since each voice consumes about 50k of memory (single-cycle wave samples are built for each note of each voice at startup time). The Pi's OS also makes it easy to work on the software. I can just log directly into it and work in-place.

          I don't think a diode is going to work on the start switches, since they're switching AC. The diode would be a direct short circuit for half of every cycle.
          Stefan Vorkoetter: http://www.stefanv.com

          1962 Hammond M-111 with Improved Vibrato, Internal Rotary Speaker, Drum Machine,
          Window Seat Tone Cabinets, Completely Rebuilt Amplifier, and Recapped Tone Generator.
          1978 PAiA 1550 Stringz'n'Thingz with many enhancements.
          2017 Raspberry Pi organ-top synthesizer.

          Comment


          • #6
            The Arduino, especially the Teensy derivatives, are in fact faster than the Raspberry Pi for low level GPIO functions. This seems counterintuitive but it's due to the Pi's huge Linux overhead. That's why embedded processors like the Arduino are frequently utilized as front ends for more powerful computers like the Raspberry Pi. I use a Teensy 3.6 to scan as many as a thousand switch contacts every half or third of a millisecond, something that a Raspberry Pi could not possibly accomplish. On the other hand I run Pianoteq on a Pi (yes!) which a Teensy could not do.
            Last edited by John Kinkennon; 11-26-2019, 07:40 AM. Reason: typo
            http://www.kinkennon.com

            Comment


            • #7
              The Arduino might be faster in brute force I/O, but it doesn't have the computing horsepower to do music synthesis in real time, especially with full-keyboard polyphony and minimal distortion clipping (which requires computing a double-precision floating point arctan function 44,100 times per second). Linux doesn't have as much overhead as you think, especially when the audio stuff is running in its own thread on a separate core.

              As far as keyboard scanning goes, I actually had to insert a delay in the scanning loop since the it was scanning faster than the settling time of the hardware. Scanning the entire 61-key keyboard matrix currently takes 100 microseconds, most of which is due to the added delay between rows.
              Stefan Vorkoetter: http://www.stefanv.com

              1962 Hammond M-111 with Improved Vibrato, Internal Rotary Speaker, Drum Machine,
              Window Seat Tone Cabinets, Completely Rebuilt Amplifier, and Recapped Tone Generator.
              1978 PAiA 1550 Stringz'n'Thingz with many enhancements.
              2017 Raspberry Pi organ-top synthesizer.

              Comment


              • #8
                That's actually doing very well. I've had the same issues with matrix keyboards. I've gone to 4.7k pullups for an old Technics 88-key matrix at the moment so it's 4.7k times the cable capacitance to get the approximate rise time. I've been looking at the book "Mastering Embedded Linux Programming" (Chris Simmonds), to see if I could get enough GPIO performance for my situation -- interesting subject. I need velocity as well and the author says that timing accuracy better that 1ms is difficult with Linux. These considerations are only for reading the keyboard of course. In my case the usual application is on a PC except for Pianoteq on the Pi.
                http://www.kinkennon.com

                Comment


                • #9
                  Yes, timing accuracy is problematic, and if you're trying to measure velocity (e.g. by the difference in make time between two contacts per key), you're going to run into problems on the Pi. An Arduino front end would be a good idea then. However, I have another Pi-driven project, an analog alarm clock, where the Pi is directly driving the coil of a smooth-sweep quartz clock movement (i.e. bypassing the movement's own electronics). To run this, I need to provide 30ms pulses every 62.5ms, and the Pi has proven more than accurate enough to do this, but the timing isn't all that critical (I constantly keep track of where this time falls relative to the real NTP-corrected time, making slight changes to speed up or slow down, so that the displayed time is always correct).

                  Regarding pull-ups, I'm just using the ones provided by the Pi itself (they can be turned on under program control), so they are on the Pi end of the cable. My transmission-line theory is weak, so I'm not sure how this compares to having them at the other end (which is still nowhere near the switches themselves, since the keyboard is so large).
                  Stefan Vorkoetter: http://www.stefanv.com

                  1962 Hammond M-111 with Improved Vibrato, Internal Rotary Speaker, Drum Machine,
                  Window Seat Tone Cabinets, Completely Rebuilt Amplifier, and Recapped Tone Generator.
                  1978 PAiA 1550 Stringz'n'Thingz with many enhancements.
                  2017 Raspberry Pi organ-top synthesizer.

                  Comment


                  • #10
                    This is really cool.

                    Comment


                    • #11
                      I’ve been thinking that a Pi would be the perfect solution to my “Jensen Piano-Organ” problem. I got this crazy thing for free, the 70 tube organ chassis is mounted behind the knee board and produces so much heat it throws the piano wildly out of tune. I’m thinking hook the Pi up to the original key and stop switches and then instead of a completely useless piece of crap, I could have a pretty cool piece of crap 8)
                      Tom in Tulsa

                      Fooling with: 1969 E100, 1955 M3, 1963 M100, Leslie 720

                      Comment

                      Working...
                      X