WavePi: Use Raspberry pi (2/3/4) as a AIO MIDI synth

Discussion about old sound cards, MIDI devices and sound related accessories.

Re: WavePi: Use Raspberry pi as a MIDI Daughterboard

Postby root42 » 2019-3-18 @ 18:41

No worries, my comment was not serious...
Soldering, retro game reviews and more on YouTube and Bonus videos
80386DX@25 MHz, 8 MiB RAM, Tseng ET4000 1 MiB, Jazz16, PC MIDI Card + SC55MkII + MT32, XT CF Lite, OSSC 1.6
User avatar
root42
Oldbie
 
Posts: 1250
Joined: 2018-1-27 @ 13:23

Re: WavePi: Use Raspberry pi as a MIDI Daughterboard

Postby hard1k » 2019-3-19 @ 20:22

Just FYI we've already had a similar project here, however it never gave any tangible results:
http://www.vogons.org/viewtopic.php?f=62&t=51806

Good luck with the project, would be absolutely interested in it!
New sound card project: AWE64 Legacy
Please have a look at my wishlist (hosted at Amibay)
User avatar
hard1k
Oldbie
 
Posts: 677
Joined: 2014-4-22 @ 11:28
Location: Buenos Aires, Argentina / Moscow, Russia

Re: WavePi: Use Raspberry pi as a MIDI Daughterboard

Postby bjwil1991 » 2019-3-20 @ 05:55

t9999clint wrote:
Scali wrote:
root42 wrote:1. to run MUNT on the PI and have a MT32.
2. for fun and giggles. Aka learning.


3. To run MAME on the PI and have a Yamaha FB-01/IBM Music Feature Card :)


I've never even heard of that thing until now. I love how crunchy it sounds with it's bass instruments. I'm totally adding it if I can figure out how.
https://www.youtube.com/watch?v=oqIOTwUjlks

Listening to that clip myself. Speaking of, I won one on eBay (took a lot of searches) yesterday at 6:10pm EDT. Going to add the DX-21 and DX-100 presets to it as well. This'll be fun. Sounds close to the Genesis sounds, including arcade games, like OutRun, Turbo OutRun, and other Sega games of the 1980's. Also, it has more samples than the Adlib cards had in some Sierra On-Line games. Wish I can find the DX-7 presets so I can play the bass instrument that Kenny Loggins used in the song Danger Zone (never knew they used a Yamaha DX-7 to play the bass, which blew my mind), mind you, the DX-7 is going for an arm and a leg, which many 80's bands used that keyboard, including Michael Jackson.

As for the WavePi project, sounds good, however, I'd go with a Daughterboard HAT so I can use my Yamaha DB50XG externally (or get a Chill MIDI board) on my 486 without having to change the MIDI port from 330h to 300h.
Discord: https://discord.gg/U5dJw7x
Systems from C64 to FX-6300.
User avatar
bjwil1991
l33t
 
Posts: 2582
Joined: 2013-8-14 @ 03:10
Location: SE, MI USA

Re: WavePi: Use Raspberry pi as a MIDI Daughterboard

Postby t9999clint » 2019-3-21 @ 07:52

root42 wrote:No worries, my comment was not serious...

I thought about this again, your could use the Ras Pi as a wifi bridge and give the the vintage pc wifi connectivity that way. Just enable routing on the raspi, set a static ip for the Ethernet jack, and connect the pi to a Ethernet card on the vintage pc (ISA, PCI, PCMCIA, etc..) then set the ethernet card to have a static ip that's in the same subnet as the ras pi and set the ras pi's IP as the gateway. You might need to make a crossover cable though.
It wouldn't be as clean as using the internal wavetable header, but it'd work.

Pretty simple if you understand networking as it'd only take like 2 minutes to do, but out of scope for this project.
User avatar
t9999clint
Member
 
Posts: 178
Joined: 2014-10-07 @ 14:08
Location: Edmonton, Canada

Re: WavePi: Use Raspberry pi as a MIDI Daughterboard

Postby t9999clint » 2019-3-21 @ 08:08

hard1k wrote:Just FYI we've already had a similar project here, however it never gave any tangible results:
http://www.vogons.org/viewtopic.php?f=62&t=51806

Good luck with the project, would be absolutely interested in it!

I'm trying to keep things as simple as possible so that if I can't work on it anymore, then other people can work on it in my place.
I'm glad that I seen that you found the wavetable header is only rated for 500ma as a Ras Pi will probably well exceed that. I'm going to add a molex as part of the specs. I guess this increased the BoM by 50cents or so. This still should be fine as my goal was to have everything cost less than $10 (other than the PCB and Ras Pi)

Edit: Glad I seen this in there too... https://www.raspberrypi.org/forums/view ... 9&t=195178
User avatar
t9999clint
Member
 
Posts: 178
Joined: 2014-10-07 @ 14:08
Location: Edmonton, Canada

Re: WavePi: Use Raspberry pi as a MIDI Daughterboard

Postby t9999clint » 2019-5-08 @ 06:05

I kinda got stuck with a bit of bad health these last few months, so my work on this project has slowed signifigantly.
The main impedance to my soundfont projects is that due to my continuously declining health I have lost about 50% of my hearing and can't properly quality check the sound quality anymore.
I'm hoping it's only temporary, but I figured I'd give you an update on where I am.

StrixSoundfontTeam has helped reduce the size of the soundfont by quite a bit, and I have gotten a set of scripts working fairly stability now. There is a major set of bugs with fluidsynth that are blocking my progress on this. It seems to not be responding to a good portions of the sysex commands it's being sent. Mostly dealing with pitchbends, wah effects, and velocity timing. Once I track down the origin of this I'll update you all, and hopefully we can find some sort of workaround. I've also ran into an issue with looping samples and fluidsynth that has led me to redesign a few parts of the soundfont, that bit is mostly done though.
User avatar
t9999clint
Member
 
Posts: 178
Joined: 2014-10-07 @ 14:08
Location: Edmonton, Canada

Re: WavePi: Use Raspberry pi as a MIDI Daughterboard

Postby yawetaG » 2019-5-08 @ 07:03

Sorry to hear about your hearing loss. If you haven't already, go to a doctor for it, as depending on the cause it may not be temporary. :(

bjwil1991 wrote:
t9999clint wrote:
Scali wrote:
3. To run MAME on the PI and have a Yamaha FB-01/IBM Music Feature Card :)


I've never even heard of that thing until now. I love how crunchy it sounds with it's bass instruments. I'm totally adding it if I can figure out how.
https://www.youtube.com/watch?v=oqIOTwUjlks

Listening to that clip myself. Speaking of, I won one on eBay (took a lot of searches) yesterday at 6:10pm EDT. Going to add the DX-21 and DX-100 presets to it as well. This'll be fun. Sounds close to the Genesis sounds, including arcade games, like OutRun, Turbo OutRun, and other Sega games of the 1980's. Also, it has more samples than the Adlib cards had in some Sierra On-Line games. Wish I can find the DX-7 presets so I can play the bass instrument that Kenny Loggins used in the song Danger Zone (never knew they used a Yamaha DX-7 to play the bass, which blew my mind), mind you, the DX-7 is going for an arm and a leg, which many 80's bands used that keyboard, including Michael Jackson.


You will only be able to add DX-7 presets if MAME emulates a 6-operator FM synth. The FB-01 and friends are 4-operator. 4- and 6-operator patches are not compatible with each other (nor are 2-operator patches compatible with 4- or 6-operator).
There is a DX-7 emulator called Dexed, though...
yawetaG
Oldbie
 
Posts: 1451
Joined: 2016-6-14 @ 14:36
Location: Netherlands

Re: WavePi: Use Raspberry pi as a MIDI Daughterboard

Postby bjwil1991 » 2019-5-08 @ 08:21

Thanks for the info.
Discord: https://discord.gg/U5dJw7x
Systems from C64 to FX-6300.
User avatar
bjwil1991
l33t
 
Posts: 2582
Joined: 2013-8-14 @ 03:10
Location: SE, MI USA

Re: WavePi: Use Raspberry pi as a MIDI Daughterboard

Postby t9999clint » 2019-5-08 @ 16:11

yawetaG wrote:There is a DX-7 emulator called Dexed, though...

That emulator looks interesting, I'll probably add it to my falcosoft midiplayer stack. I see there's a linux version too, I'll have to recompile it for arm in order to get it working on a ras pi but that shouldn't be too difficult.
Not sure about if the pi will be fast enough, but I won't know for sure until I try.
User avatar
t9999clint
Member
 
Posts: 178
Joined: 2014-10-07 @ 14:08
Location: Edmonton, Canada

Re: WavePi: Use Raspberry pi as a MIDI Daughterboard

Postby yawetaG » 2019-5-09 @ 05:37

bjwil1991 wrote:Thanks for the info.


It's actually a bit more complex than that. Basically, for synths/keyboards:
- 2-operator FM is compatible only if there's sysex MIDI data available in the first place. A lot of Yamaha's cheaper 1980s keyboards are 2-operator (or rarely 2 x 2 operator), but only a few can make MIDI dumps, and even less are compatible with each other.
- 4-operator Yamaha FM synths are generally compatible with each other, although certain features are exclusive for or omitted from certain models. E.g. on the YS100/YS200/TQ5 portamento is omitted, so although they can play TX-81Z patches portamento will not sound.
- FB-01 is a highly simplified 4-operator synth, and possibly can't load all patches for its more advanced brothers.
- The recent Yamaha Reface DX is not compatible with earlier 4-operator synths (but see http://www.refacedx.martintarenskeen.nl/.
- 6-operator Yamaha FM synths are compatible with each other up to a degree only, because there are a few models that have special features. Some of the SY/TG family come with both FM and AWM, and can use both synthesis methods at the same time, even cross-modulating them (obviously anything using AWM can't be used on the DX7/DX7II and similar).
- Some very rare and very expensive Yamaha organs are 8 -operator. A module version was made, but literally only 2 or 3 are known to exist.
- 2-/4-/6-operator are not compatible with each other. Oh, it might be possible to reconstruct 2-op patches on a 4- or 6-op synth, and 4-op patches on a 6-op synth by muting some operators, but the MIDI data isn't directly portable.
- Supposedly, some Korg FM synths are compatible with Yamaha patches, but I don't know much about that as there's little information available...
- Casio has a type of synthesis that's essentially FM, but not compatible with Yamaha's version.
yawetaG
Oldbie
 
Posts: 1451
Joined: 2016-6-14 @ 14:36
Location: Netherlands

Re: WavePi: Use Raspberry pi as a MIDI Daughterboard

Postby t9999clint » 2019-5-10 @ 06:30

I was looking at the MiSTer A0486 project and it kind of gave me another crazy idea... what about using something like this... https://www.amazon.com/MAX232-RS232-Con ... B011NOHC4S and SoftMPU to connect everything through serial directly. No soundcard even required, just wire it up to an internal serial header somewhere.
This will also bypass the hanging note bug on the card I'm testing with. (I'm too lazy to search through storage for my AWE 64 Gold)
The best way to do this would be to pull up a schematic to see how expensive the components would be to add. Still It would be a interesting, and would even make it work on modern machines.
I wonder if there's a way to do OPL emulation this way too, kind of like the OPL2LPT device.... Some sort of all in one magical midi emulation machine only needing the sound blaster for wave audio.

Software would be 99% the same so I'm gonna keep working on the other stuff first, I'm just throwing ideas out there for future plans.
User avatar
t9999clint
Member
 
Posts: 178
Joined: 2014-10-07 @ 14:08
Location: Edmonton, Canada

Re: WavePi: Use Raspberry pi as a AIO MIDI synth

Postby t9999clint » 2019-6-06 @ 00:35

Here's a list a bit of what I've working on this last little while...
    - I'm working on a github and a proper project webpage for this and a few other projects I'm working on. Running into some SSL issues with Cloudflare and Wordpress, but it should be up in a day or two. I haven't done webdev in a few years, it looks like quite a bit has changed...
    - I also ordered a few more parts to test the synth with, as well as a few soundcards. This should get communication voltages in spec with what the ras pi supports.
    - I have been working on a 20ish mb soundfont that should work well with this project, as well as on an original SB AWE 64 card.
    - A newer version of my main soundfont is also almost done, this is the one I'd recommend for the ras pi 3b+.
    - Another thing I'm going to be adding to this is NZXT HUE+ RGB support, but that's for a YouTube project I'm working on.

No code to share yet as none of it is working ATM. But a few interesting tidbits as everything slowly pieces it's self together.
I have a deadline to reach, as I'd like to have some sort of prototype to show to LinusTechTips at LTX 2019. I doubt I'd get a chance, but I'm gonna try anyways.
So expect something to be at least somewhat functional by July 25th.
User avatar
t9999clint
Member
 
Posts: 178
Joined: 2014-10-07 @ 14:08
Location: Edmonton, Canada

Re: WavePi: Use Raspberry pi as a AIO MIDI synth

Postby Thermalwrong » 2019-6-06 @ 09:15

Good luck with getting it working :)

I think this is quite an interesting project / concept, so I'm really looking forward to seeing how you get on with this.
Thermalwrong
Member
 
Posts: 307
Joined: 2018-3-18 @ 19:24
Location: England

Re: WavePi: Use Raspberry pi as a AIO MIDI synth

Postby t9999clint » 2019-6-11 @ 20:13

Thanks, The bare basics (proof of concept) are already working.
I'm just trying to get things pretty, and well documented now.
After that I'll start adding features.

Here's another mind dump, basically just planning out what's going in the github for this...
The basic idea is to have the wavepi folder accessible through ftp or samba or something easily accessible so you can configure everything from there.
Separating the configfiles and such makes it very modular and easily expanded upon.
Certain considerations must be made to avoid unneeded writes to flash storage.
Might add some sort of script to auto add newly detected midi-devices.

This is a bunch of pseudocode (not real code, just a plan for future code)...
Code: Select all
## File and folder structure ##
midi user
-------wavepi
       ----configs
           ----main.cfg
           ----000.cfg
           ----001.cfg
           ----002.cfg
       ----scripts
           ----wavepi_service.sh
           ----wavepi.py
           ----midilight.py
           ----midilcd.py
           ----midirgb.py
           ----fluidsynth.sh
           ----cm32l.sh
           ----mt32.sh
       ----soundfonts
           ----kor-basic.sf2
           ----pro7use-enhanced.sf2
       ----roms
           ----place-munt-roms-here.txt
       ----logs
           ----detected-midi-devices.log
           ----current-synth-info.log
           ----current-lcd-info.log
           ----current-rgb-info.log
           ----current-light-info.log
           
Install command creates above file structure and does the following...

ensure there is a midi user, and if it doesn't exist creates one.

apt update
apt upgrade -yy
apt install fluidsynth python2.7 openssh-server build-essentials
*download munt code to temp dir*
*compile and install munt code*
*download soundfonts if they don't exist*
*register service.sh as a service named wavepi*


## overall logic flow ##
system boots
systemd start's wavepi_service.sh (service wavepi start)
wavepi_service.sh reads main.cfg and loads midi routing then starts wavepi.py which runs $DEFAULT_CONFIG and listens for sysex.
server.py listens to sysex for preset change requests
when custom sysex command is received, server.py kills running synths and changes to new preset.
other services listen to midi and synthstatus and report back to user through lights/lcd/etc..)

## 000.cfg config structure example##
COMMAND = /home/pi/wavepi/scripts/fluidsynth.sh /home/pi/wavepi/soundfonts/kor-basic.sf2
SYNTH_SEARCH = FLUID
SYNTH_NAME = "K.O.R. GM Basic Soundfont"

## main.cfg config structure example##
AUDIO_DEVICE = 1
MIDI_DEVICE = 20
LCD = false
LIGHTS = false
DEFAULT_CONFIG = 000.cfg

## fluidsynth.sh synth script example ##
CPU_LIMIT = **code to get cpu thread count**
if CPU_LIMIT > 1
    CPU_LIMIT = CPU_LIMIT - 1
/usr/local/bin/fluidsynth --server --no-shell -o synth.cpu-cores=$CPU_LIMIT -o audio.alsa.device=hw:$2 -o audio.period-size=64 -o synth.polyphony=999 -r 44000 --audio-driver=alsa "$1" &


## wavepi_service.sh pseudocode ##
function start
    ...everything below is run as the midi user...
    read global vars from main.cfg
    start virtual midi device for everything to listen to.
    join it to $MIDI_DEVICE
    if LCD = true, launch midilcd.py while recording it's PID
    if LIGHTS = true, launch midilight.py while recording it's PID
    launch server.py while recording it's PID, give it the $DEFAULT_CONFIG and $AUDIO_DEVICE varibles
    run function status
    return true
   
function stop
    read all recorded PIDs
    kill all PIDs
    return true
   
function status
    read all recorded PIDs
    echo PIDs' statuses
    return true
   
funtion restart
    run funtion stop
    run funtion start
    return true

   
## wavepi.py pseudocode ##

function main ( string DEFAULT_CONFIG, int AUDIO_DEVICE )
    {
    CURRENT_CONFIG = DEFAULT_CONFIG
   
    if CURRENT_CONFIG exists
        {
        SYNTH_PID = StartSynth(CURRENT_CONFIG, AUDIO_DEVICE)
        LOOP_CYCLE = 0
       
        while (SYNTH_PID != -1)
            {
            REQUESTED_CONFIG = SysexListenConfig()
           
            if REQUESTED_CONFIG == CURRENT_CONFIG
                {
                echo "Sysex config request already active. Request ignored..."
                }
            else if REQUESTED_CONFIG exists
                {
                CURRENT_CONFIG = REQUESTED_CONFIG
                StopSynth(SYNTH_PID)
                SYNTH_PID = StartSynth(CURRENT_CONFIG, AUDIO_DEVICE)
                }
            else echo "WARNING: Invalid sysex config request. Request ignored..."
           
            if LOOP_CYCLE >= 99
                {
                SaveMIDIDevicesToFile()
                LOOP_CYCLE = 0
                }
            else LOOP_CYCLE = LOOP_CYCLE + 1
           
            wait 0.1
            }
        echo "ERROR: Synth not running. Config failed to launch. HALTED WAVEPI SERVICE"
        }
    else echo "ERROR: Default config doesn't exist! Failed to start"
   
    return true
    }
   
int funtion StartSynth ( string GIVEN_CONFIG, int AUDIO_DEVICE )
    {
    **read varibles from GIVEN_CONFIG...
    echo "launching " $SYNTH_NAME " Please wait..."
    SYNTH_PID = start $COMMAND $AUDIO_DEVICE
    SYNTH_MIDI = FindMidiNumber($SYNTH_SEARCH)
    if SYNTH_MIDI = -1
        {
        echo "ERROR: Failed to start synth!"
        SaveStatusToFile( -1, "ERROR, FAILED TO START", SYNTH_MIDI)
        return -1
        }
    else
        {
        **Join SYNTH_MIDI to virtual midi device (14)
        SaveStatusToFile(SYNTH_PID, SYNTH_NAME, SYNTH_MIDI)
        return SYNTH_PID
        }
    }

function StopSynth ( int SYNTH_PID )
    {
    if SYNTH_PID != -1
        **kill's synth PID using SYNTH_PID number
       
    SaveStatusToFile( -1, "...LOADING PLEASE WAIT...", -1)
    return true
    }
   
funtion SaveStatusToFile (int SYNTH_PID, string SYNTH_NAME, int SYNTH_MIDI)
    {
    **format given varibles to a string
    CURRENT_STATUS = "SYNTH_PID = " $SYNTH_PID "/nSYNTH_NAME = " $SYNTH_NAME "/nSYNTH_MIDI "/n"
   
    **read status file and save to string OLD_STATUS**
    if OLD_STATUS != CURRENT_STATUS
        **save CURRENT_STATUS to file**
       
    return true
    }

int FindMidiNumber ( string SYNTH_SEARCH )
    {
    LOOP_CYCLE = 0
    MAX_WAIT = 1000
    MIDI_NUMBER = -1
   
    while (LOOP_CYCLE < MAX_WAIT)
        {
        if (aconnect -o | grep $SYNTH_SEARCH == true)
            {
            LOOP_CYCLE = MAX_WAIT
            MIDI_NUMBER = $(aconnect -o | grep  -Eo '[0-9]{3}.*FLUID' | grep -Eo '[0-9]{3}')
            }
        else
            {
            LOOP_CYCLE = LOOP_CYCLE + 1
            wait 0.1
            }
        }
   
    return MIDI_NUMBER
    }
string SysexListenConfig()
    {
    ***I have no idea what to put here I'll figure that out later**
    }
User avatar
t9999clint
Member
 
Posts: 178
Joined: 2014-10-07 @ 14:08
Location: Edmonton, Canada

Re: WavePi: Use Raspberry pi as a AIO MIDI synth

Postby appiah4 » 2019-6-11 @ 21:10

dreamblaster wrote:Hi t9999clint,

nice idea : MCOBit has done such project in various incarnations : See this video : https://www.youtube.com/watch?v=_VYdw-AfNGc&t=213s
it runs MUNT and soundfonts. He also tried the setup with X3M, here you can see the internals : https://www.youtube.com/watch?v=gIkoM0iPrbU
Have a look at this thread for some inspiration and history : viewtopic.php?f=9&t=58174

gdjacobs wrote:You can if you use the X3M as the DAC and MIDI input for your Pi.

Yes, X3MA can be used: Note there are 2 X3M variants :
X3MA : usb audio + 54 voice MIDI synth : https://www.serdashop.com/X3M
X3MB : 81 voice MIDI synth (no USB audio) : https://www.serdashop.com/X3MBuran
X3MA is the one suitable for this. In this application you just don't use the built in synth.

I will be publishing about a pi related project soon (but still changing concept now and then, i prefer to wait until it works):
It will be a hardware solution + 3d print enclosure, to accommodate for buttons and display.

I will be following your thread with interest, t9999clint, especially for the software side :
Software wise, all variants will work quite similarly, so it could make sense to achieve some 'compatibility'.


I actually use an X3M AND a MUNT-Pi together.. PC connected to X3M via MIDI cable, X3M passes MIDI through to USB, USB interface cable hooks X3M to Raspberry Pi which runs MUNT.. Now I have a retro system that is connected to an affordable MIDI module as well as a 100% MT-32 emulation device.
A500:Rev6|+512K|ACA500+|C1084S
i386:Am386SX25|4M|GD5402|ES688|MuntPi3
i486:U5S33|8M|GD5428|YMF719|DB-S2
i586:P133|32M|T64+/MX2|V1|CT3980/32M
i686:K6-2/400|128M|V2/SLI|CT4520/32M
S370:P3-1200|384M|GF4-4200|MX300
S754:A3700+|2G|X1950PRO|SB0350
User avatar
appiah4
l33t
 
Posts: 4044
Joined: 2017-2-19 @ 07:36

Re: WavePi: Use Raspberry pi as a AIO MIDI synth

Postby t9999clint » 2019-6-17 @ 00:44

I know it's not important for most of you, but I got a copy of the NZXT HUE+ software to run on a raspberry pi. Now I have a RGB led kit in my MS-DOS gaming rig that responds to the music.
steps for this were kind of a pain to get working, so here's another brain dump...

I'm probably gonna release some arm .deb binaries for this cause it takes about 2+ hours to compile it all.
1. Download and compile python 3.6...
Code: Select all
##prepare build environment...
sudo apt-get update
sudo apt-get install build-essential checkinstall libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev qt5-default pyqt5-dev pyqt5-dev-tools sip-dev -yy

##download and extract sourcecode, replace link with newest release of python 3.6...
cd /usr/src
sudo wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
sudo tar xzf Python-3.6.0.tgz

##compile...
sudo -s
cd Python-3.6.0
bash configure
make altinstall
exit
##REBOOT PI, then move to step two

2. Download source and compile SIP and PyQt5
Code: Select all
##download sip, replace link with latest version
cd /usr/src
sudo wget https://www.riverbankcomputing.com/static/Downloads/sip/sip-4.19.14.tar.gz
sudo tar xzf sip-4.19.14.tar.gz
cd sip-4.19.14

##compile sip
sudo -s
python3.6 configure.py --sip-module=PyQt5.sip
make
make install

##download PyQt5 replace link with latest version
cd /usr/src
sudo -s
wget https://www.riverbankcomputing.com/static/Downloads/PyQt5/PyQt5_gpl-5.12.tar.gz
tar xzf PyQt5_gpl-5.12.tar.gz
cd PyQt5_gpl-5.12

##compile PyQt5, this is the part that takes 2 hours
python3.6 configure.py
make
make install
exit

3. Download and compile hue_plus
Code: Select all
## configure python3.6 for hue_plus dependancies
sudo pip3.6 install --upgrade pip
sudo pip3.6 install pyserial
sudo pip3.6 install pyaudio

##Download hue_plus, replace link with latest version
cd /usr/src
sudo -s
wget https://github.com/kusti8/hue-plus/archive/v.1.4.5.tar.gz
tar xzf v.1.4.5.tar.gz
cd hue-plus-v.1.4.5

##compile and install hue_plus
python3.6 setup.py build
python3.6 setup.py install
exit

once it's installed, you can use the hue command to specify what colors you want your rgb strip to be, you can also set it to audio mode which will listen to the default pulseaudio device. I don't have pulseaudio setup yet, but it looks like I might have to for this to work right.
This project is starting to balloon in size, but at least my old gaming rig looks nice now.
User avatar
t9999clint
Member
 
Posts: 178
Joined: 2014-10-07 @ 14:08
Location: Edmonton, Canada

Re: WavePi: Use Raspberry pi as a AIO MIDI synth

Postby t9999clint » 2019-6-18 @ 12:24

After significant testing and troubleshooting, It looks like the raspberry pi is far too slow to control the lights to be in sync with the music.
It also requires pulseaudio which uses up about half a cpu core even when idle, so it's probably best I avoid it for now.
At least the other rgb lighting effects seem to work fine. I also tweaked a few fluidsynth settings for performance.

The fluidsynth launcher will probably look something like this...
Code: Select all
#!/bin/bash
## fluidsynth.sh synth script example ##

fluid_chorus_type=1
fluid_chorus_depth=8
fluid_chorus_speed=0.3
fluid_chorus_level=0.1
fluid_chorus_voices=3
fluid_reverb_level=0.1
fluid_reverb_width=0.75
fluid_reverb_damping=0.23
fluid_reverb_roomsize=0.61
fluid_interp=1

CPU_LIMIT=$(nproc)
if (( CPU_LIMIT > 1)); then
    CPU_LIMIT = $((CPU_LIMIT - 1))
fi
POLY_LIMIT = $((CPU_LIMIT * 75))

nice -n -18 /usr/local/bin/fluidsynth -o synth.cpu-cores=$CPU_LIMIT -o audio.alsa.device=hw:$2 -o audio.period-size=64 -o synth.polyphony=$POLY_LIMIT -R 0 -C 0 -is -r 44100 --gain 0.6 --audio-driver=alsa "$1"

this script would be launched using the syntax fluidsynth.sh <.sf2 file> <alsa device number>
User avatar
t9999clint
Member
 
Posts: 178
Joined: 2014-10-07 @ 14:08
Location: Edmonton, Canada

Re: WavePi: Use Raspberry pi as a AIO MIDI synth

Postby gdjacobs » 2019-6-18 @ 20:24

JACK is far more CPU efficient. I recommend it if you need to mix PCM streams in software.
User avatar
gdjacobs
l33t++
 
Posts: 6588
Joined: 2015-11-03 @ 05:51
Location: The Great White North

Re: WavePi: Use Raspberry pi as a AIO MIDI synth

Postby t9999clint » 2019-6-18 @ 21:09

gdjacobs wrote:JACK is far more CPU efficient. I recommend it if you need to mix PCM streams in software.

that was gonna be my next move, but the HUE_PLUS python script has other cpu bugs so it didn't seem worth it.

If I don't need jack2 or pulse then it's probably better not to use them at all and interface directly with ALSA. I'd like to keep it stupid simple (K.I.S.S.), at least as much as possible. I don't plan on doing any mixing on the ras pi.

There's a GitHub now, https://github.com/t9999clint/WavePi
There is not much on it, but that's only for now. I'm gonna keep my clean looking code up there, I'm not sure if I'm gonna keep my brain dumps (complete nonsense pseudocode) here or not.
User avatar
t9999clint
Member
 
Posts: 178
Joined: 2014-10-07 @ 14:08
Location: Edmonton, Canada

Re: WavePi: Use Raspberry pi as a AIO MIDI synth

Postby gdjacobs » 2019-6-19 @ 05:48

I have other motives. It's handy for making one of my USB PCM/MIDI interfaces work. It only takes a single PCM format as input. JACK looks after format conversion, brilliantly at that.
User avatar
gdjacobs
l33t++
 
Posts: 6588
Joined: 2015-11-03 @ 05:51
Location: The Great White North

PreviousNext

Return to Sound

Who is online

Users browsing this forum: dreamblaster, odd144 and 3 guests