geekfunklabs / fluidpatcher Goto Github PK
View Code? Open in Web Editor NEWA performance-oriented patch interface for FluidSynth
License: MIT License
A performance-oriented patch interface for FluidSynth
License: MIT License
On windows 10, FluidPatcher 0.7.15 isn't installing python modules properly. FluidPatcher 0.7.14 looks doing it well.
Hi, thanks for your work, it's an awesome project.
I'm trying to get the install working for a raspberry pi and have run the install script from https://geekfunklabs.com/squishbox as per the instructions on a fresh raspberry pi os install.
I plug a USB MIDI controller in and turn it on, it initialises OK, I see the 5 lights flicker and then it starts to make sound. Which is awesome :)
Having a bit of trouble with notes that are played after a short break. If I don't touch the MIDI keyboard for more than ~15 seconds it will be slow to start making sounds again. It typically makes sounds after a couple seconds of hitting notes, but I've had it not play any single notes and only start making sounds when I make chords.
I've reproduced this behaviour with 2 MIDI keyboards (M-Audio ES61 and Akai LPK25) and have included links to videos of what I mean. It seems a bit less sluggish on the Akai keyboard, although it still shows the behaviour.
MAudio 61ES
Akai LPK25
Akai LPK25 waiting a minute and then playing again
I'm hoping to use this as a sound module at a gig, and will be switching between playing keyboard and guitar, so i'm hoping there's a bit of config somewhere that can fix this.
I've had a look at the fluidpatcher code and couldn't see anything obviously that would introduce this delay, but I haven't read much python for a while so might have missed something.
Are there any more debugging/troubleshooting things I could do to figure out whether the delay can be removed?
Hi, first, thanks for you work on this. (En is not my native language, sorry in advance)
I've found/feel that the "real" latency is much less noticeable using jack as an audio driver than alsa.
Thing is that using jack won't autostart fluidsynth on boot.
It's possible?
Secondary question:
I'm unable to effectively modify the period one ./jackrc; (or whatever i do on fluidsettings.xml)
"fluidsynth warning requested a period size of 64 got 444 instead" but i'll keep tinkering this,
Thanks!
Describe the bug
I'm running on a Raspberry Pi 3B with a Keystep 37. Notes can make it into the Pi, and notes can make it out separately from midi files, but I can't get the notes playing to produce any sound.
Notes show up with aseqdump
, e.g.:
pi@keystep:~ $ aseqdump -p 20
Waiting for data. Press Ctrl+C to end.
Source Event Ch Data
20:0 Note on 7, note 71, velocity 80
20:0 Note off 7, note 71, velocity 64
And if I run a command like the following, I hear audio from the connected headphone jack:
fluidsynth -a alsa -o audio.alsa.device=plughw:0,0 -n -i /usr/share/sounds/sf2/FluidR3_GM.sf2 SquishBox/midi/elevatorgroove.mid
Because I had to add that -o
flag, and because of the output from aplay -l
, I have edited my fluidsettings to include audio.alsa.device: 'plughw:0,0'
.
pi@keystep:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 2: vc4hdmi0 [vc4-hdmi-0], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 3: vc4hdmi1 [vc4-hdmi-1], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
SquishBox/squishboxconf.yaml:
soundfontdir: SquishBox/sf2
bankdir: SquishBox/banks
mfilesdir: SquishBox/midi
plugindir: /usr/lib/ladspa
currentbank: bank1.yaml
fluidsettings:
audio.driver: alsa
audio.alsa.device: 'plughw:0,0'
audio.period-size: 64
audio.periods: 3
midi.autoconnect: 1
player.reset-synth: 0
synth.audio-groups: 16
synth.cpu-cores: 4
synth.ladspa.active: 1
synth.polyphony: 128
If I add a few print statements, I can see the listener
from headlesspi.py
firing for notes, but I don't see send_event
functions elsewhere getting called.
Output of headlesspi.py (the thread priority messages go away if I run with sudo
):
pi@keystep:~ $ python headlesspi.py
fluidsynth: warning: Requested a period size of 64, got 444 instead
fluidsynth: warning: Failed to set thread to high priority
fluidsynth: warning: Failed to set thread to high priority
fluidsynth: Connection of Midi Through Port-0 succeeded
fluidsynth: Connection of Arturia KeyStep 37 MIDI 1 succeeded
fluidsynth: warning: Failed to set thread to high priority
fluidsynth: Connection of Network succeeded
fluidsynth: warning: Failed to set thread to high priority
fluidsynth: warning: Failed to set thread to high priority
Loading bank 'bank1.yaml' ..
fluidsynth: warning: Sample 'SineWave': ROM sample ignored
Bank loaded.
Selected patch 1/26: Piano
Any ideas what I could try next?
Background Info
headlesspi.py
.No matter what I do, doesn't work for me. I did copy the router_rules
section from bank1.yaml that works for me, and the init
section on the bottom, i did put the proper filename into squishboxconf.yaml (currentbank: fluid_gmbank.yaml), paths are unchanged, yet upon reboot it just doesn't play. The file looks like this and produces no sound at all at any channel or patch number:
router_rules:
- {type: cc, chan: 1=2-16, par1: 7}
- {type: cc, chan: 1=2-6, par1: 1}
- {type: cc, chan: 1=2-6, par1: 64}
- {type: cc, chan: 1=2-6, par1: 91}
- {type: pbend, chan: 1=2-6}
patches:
Yamaha Grand Piano:
1: FluidR3_GM.sf2:000:000
Bright Yamaha Grand:
1: FluidR3_GM.sf2:000:001
Electric Piano:
1: FluidR3_GM.sf2:000:002
Honky Tonk:
1: FluidR3_GM.sf2:000:003
Rhodes EP:
1: FluidR3_GM.sf2:000:004
Legend EP 2:
1: FluidR3_GM.sf2:000:005
Harpsichord:
1: FluidR3_GM.sf2:000:006
Clavinet:
1: FluidR3_GM.sf2:000:007
Celesta:
1: FluidR3_GM.sf2:000:008
Glockenspiel:
1: FluidR3_GM.sf2:000:009
Music Box:
1: FluidR3_GM.sf2:000:010
Vibraphone:
1: FluidR3_GM.sf2:000:011
Marimba:
1: FluidR3_GM.sf2:000:012
Xylophone:
1: FluidR3_GM.sf2:000:013
Tubular Bells:
1: FluidR3_GM.sf2:000:014
Dulcimer:
1: FluidR3_GM.sf2:000:015
DrawbarOrgan:
1: FluidR3_GM.sf2:000:016
Percussive Organ:
1: FluidR3_GM.sf2:000:017
Rock Organ:
1: FluidR3_GM.sf2:000:018
Church Organ:
1: FluidR3_GM.sf2:000:019
Reed Organ:
1: FluidR3_GM.sf2:000:020
Accordian:
1: FluidR3_GM.sf2:000:021
Harmonica:
1: FluidR3_GM.sf2:000:022
Bandoneon:
1: FluidR3_GM.sf2:000:023
Nylon String Guitar:
1: FluidR3_GM.sf2:000:024
Steel String Guitar:
1: FluidR3_GM.sf2:000:025
Jazz Guitar:
1: FluidR3_GM.sf2:000:026
Clean Guitar:
1: FluidR3_GM.sf2:000:027
Palm Muted Guitar:
1: FluidR3_GM.sf2:000:028
Overdrive Guitar:
1: FluidR3_GM.sf2:000:029
Distortion Guitar:
1: FluidR3_GM.sf2:000:030
Guitar Harmonics:
1: FluidR3_GM.sf2:000:031
Acoustic Bass:
1: FluidR3_GM.sf2:000:032
Fingered Bass:
1: FluidR3_GM.sf2:000:033
Picked Bass:
1: FluidR3_GM.sf2:000:034
Fretless Bass:
1: FluidR3_GM.sf2:000:035
Slap Bass:
1: FluidR3_GM.sf2:000:036
Pop Bass:
1: FluidR3_GM.sf2:000:037
Synth Bass 1:
1: FluidR3_GM.sf2:000:038
Synth Bass 2:
1: FluidR3_GM.sf2:000:039
Violin:
1: FluidR3_GM.sf2:000:040
Viola:
1: FluidR3_GM.sf2:000:041
Cello:
1: FluidR3_GM.sf2:000:042
Contrabass:
1: FluidR3_GM.sf2:000:043
Tremolo:
1: FluidR3_GM.sf2:000:044
Pizzicato Section:
1: FluidR3_GM.sf2:000:045
Harp:
1: FluidR3_GM.sf2:000:046
Timpani:
1: FluidR3_GM.sf2:000:047
Strings:
1: FluidR3_GM.sf2:000:048
Slow Strings:
1: FluidR3_GM.sf2:000:049
Synth Strings 1:
1: FluidR3_GM.sf2:000:050
Synth Strings 2:
1: FluidR3_GM.sf2:000:051
Ahh Choir:
1: FluidR3_GM.sf2:000:052
Ohh Voices:
1: FluidR3_GM.sf2:000:053
Synth Voice:
1: FluidR3_GM.sf2:000:054
Orchestra Hit:
1: FluidR3_GM.sf2:000:055
Trumpet:
1: FluidR3_GM.sf2:000:056
Trombone:
1: FluidR3_GM.sf2:000:057
Tuba:
1: FluidR3_GM.sf2:000:058
Muted Trumpet:
1: FluidR3_GM.sf2:000:059
French Horns:
1: FluidR3_GM.sf2:000:060
Brass Section:
1: FluidR3_GM.sf2:000:061
Synth Brass 1:
1: FluidR3_GM.sf2:000:062
Synth Brass 2:
1: FluidR3_GM.sf2:000:063
Soprano Sax:
1: FluidR3_GM.sf2:000:064
Alto Sax:
1: FluidR3_GM.sf2:000:065
Tenor Sax:
1: FluidR3_GM.sf2:000:066
Baritone Sax:
1: FluidR3_GM.sf2:000:067
Oboe:
1: FluidR3_GM.sf2:000:068
English Horn:
1: FluidR3_GM.sf2:000:069
Bassoon:
1: FluidR3_GM.sf2:000:070
Clarinet:
1: FluidR3_GM.sf2:000:071
Piccolo:
1: FluidR3_GM.sf2:000:072
Flute:
1: FluidR3_GM.sf2:000:073
Recorder:
1: FluidR3_GM.sf2:000:074
Pan Flute:
1: FluidR3_GM.sf2:000:075
Bottle Chiff:
1: FluidR3_GM.sf2:000:076
Shakuhachi:
1: FluidR3_GM.sf2:000:077
Whistle:
1: FluidR3_GM.sf2:000:078
Ocarina:
1: FluidR3_GM.sf2:000:079
Square Lead:
1: FluidR3_GM.sf2:000:080
Saw Wave:
1: FluidR3_GM.sf2:000:081
Calliope Lead:
1: FluidR3_GM.sf2:000:082
Chiffer Lead:
1: FluidR3_GM.sf2:000:083
Charang:
1: FluidR3_GM.sf2:000:084
Solo Vox:
1: FluidR3_GM.sf2:000:085
Fifth Sawtooth Wave:
1: FluidR3_GM.sf2:000:086
Bass & Lead:
1: FluidR3_GM.sf2:000:087
Fantasia:
1: FluidR3_GM.sf2:000:088
Warm Pad:
1: FluidR3_GM.sf2:000:089
Polysynth:
1: FluidR3_GM.sf2:000:090
Space Voice:
1: FluidR3_GM.sf2:000:091
Bowed Glass:
1: FluidR3_GM.sf2:000:092
Metal Pad:
1: FluidR3_GM.sf2:000:093
Halo Pad:
1: FluidR3_GM.sf2:000:094
Sweep Pad:
1: FluidR3_GM.sf2:000:095
Ice Rain:
1: FluidR3_GM.sf2:000:096
Soundtrack:
1: FluidR3_GM.sf2:000:097
Crystal:
1: FluidR3_GM.sf2:000:098
Atmosphere:
1: FluidR3_GM.sf2:000:099
Brightness:
1: FluidR3_GM.sf2:000:100
Goblin:
1: FluidR3_GM.sf2:000:101
Echo Drops:
1: FluidR3_GM.sf2:000:102
Star Theme:
1: FluidR3_GM.sf2:000:103
Sitar:
1: FluidR3_GM.sf2:000:104
Banjo:
1: FluidR3_GM.sf2:000:105
Shamisen:
1: FluidR3_GM.sf2:000:106
Koto:
1: FluidR3_GM.sf2:000:107
Kalimba:
1: FluidR3_GM.sf2:000:108
BagPipe:
1: FluidR3_GM.sf2:000:109
Fiddle:
1: FluidR3_GM.sf2:000:110
Shenai:
1: FluidR3_GM.sf2:000:111
Tinker Bell:
1: FluidR3_GM.sf2:000:112
Agogo:
1: FluidR3_GM.sf2:000:113
Steel Drums:
1: FluidR3_GM.sf2:000:114
Woodblock:
1: FluidR3_GM.sf2:000:115
Taiko Drum:
1: FluidR3_GM.sf2:000:116
Melodic Tom:
1: FluidR3_GM.sf2:000:117
Synth Drum:
1: FluidR3_GM.sf2:000:118
Reverse Cymbal:
1: FluidR3_GM.sf2:000:119
Fret Noise:
1: FluidR3_GM.sf2:000:120
Breath Noise:
1: FluidR3_GM.sf2:000:121
Sea Shore:
1: FluidR3_GM.sf2:000:122
Bird Tweet:
1: FluidR3_GM.sf2:000:123
Telephone:
1: FluidR3_GM.sf2:000:124
Helicopter:
1: FluidR3_GM.sf2:000:125
Applause:
1: FluidR3_GM.sf2:000:126
Gun Shot:
1: FluidR3_GM.sf2:000:127
Detuned EP 1:
1: FluidR3_GM.sf2:008:004
Detuned EP 2:
1: FluidR3_GM.sf2:008:005
Coupled Harpsichord:
1: FluidR3_GM.sf2:008:006
Church Bell:
1: FluidR3_GM.sf2:008:014
Detuned Organ 1:
1: FluidR3_GM.sf2:008:016
Detuned Organ 2:
1: FluidR3_GM.sf2:008:017
Church Organ 2:
1: FluidR3_GM.sf2:008:019
Italian Accordion:
1: FluidR3_GM.sf2:008:021
Ukulele:
1: FluidR3_GM.sf2:008:024
12 String Guitar:
1: FluidR3_GM.sf2:008:025
Hawaiian Guitar:
1: FluidR3_GM.sf2:008:026
Funk Guitar:
1: FluidR3_GM.sf2:008:028
Feedback Guitar:
1: FluidR3_GM.sf2:008:030
Guitar Feedback:
1: FluidR3_GM.sf2:008:031
Synth Bass 3:
1: FluidR3_GM.sf2:008:038
Synth Bass 4:
1: FluidR3_GM.sf2:008:039
Slow Violin:
1: FluidR3_GM.sf2:008:040
Orchestral Pad:
1: FluidR3_GM.sf2:008:048
Synth Strings 3:
1: FluidR3_GM.sf2:008:050
Brass 2:
1: FluidR3_GM.sf2:008:061
Synth Brass 3:
1: FluidR3_GM.sf2:008:062
Synth Brass 4:
1: FluidR3_GM.sf2:008:063
Sine Wave:
1: FluidR3_GM.sf2:008:080
Taisho Koto:
1: FluidR3_GM.sf2:008:107
Castanets:
1: FluidR3_GM.sf2:008:115
Concert Bass Drum:
1: FluidR3_GM.sf2:008:116
Melo Tom 2:
1: FluidR3_GM.sf2:008:117
808 Tom:
1: FluidR3_GM.sf2:008:118
Burst Noise:
1: FluidR3_GM.sf2:009:125
Mandolin:
1: FluidR3_GM.sf2:016:025
Standard:
1: FluidR3_GM.sf2:128:000
Standard 1:
1: FluidR3_GM.sf2:128:001
Standard 2:
1: FluidR3_GM.sf2:128:002
Standard 3:
1: FluidR3_GM.sf2:128:003
Standard 4:
1: FluidR3_GM.sf2:128:004
Standard 5:
1: FluidR3_GM.sf2:128:005
Standard 6:
1: FluidR3_GM.sf2:128:006
Standard 7:
1: FluidR3_GM.sf2:128:007
Room:
1: FluidR3_GM.sf2:128:008
Room 1:
1: FluidR3_GM.sf2:128:009
Room 2:
1: FluidR3_GM.sf2:128:010
Room 3:
1: FluidR3_GM.sf2:128:011
Room 4:
1: FluidR3_GM.sf2:128:012
Room 5:
1: FluidR3_GM.sf2:128:013
Room 6:
1: FluidR3_GM.sf2:128:014
Room 7:
1: FluidR3_GM.sf2:128:015
Power:
1: FluidR3_GM.sf2:128:016
Power 1:
1: FluidR3_GM.sf2:128:017
Power 2:
1: FluidR3_GM.sf2:128:018
Power 3:
1: FluidR3_GM.sf2:128:019
Electronic:
1: FluidR3_GM.sf2:128:024
TR-808:
1: FluidR3_GM.sf2:128:025
Jazz:
1: FluidR3_GM.sf2:128:032
Jazz 1:
1: FluidR3_GM.sf2:128:033
Jazz 2:
1: FluidR3_GM.sf2:128:034
Jazz 3:
1: FluidR3_GM.sf2:128:035
Jazz 4:
1: FluidR3_GM.sf2:128:036
Brush:
1: FluidR3_GM.sf2:128:040
Brush 1:
1: FluidR3_GM.sf2:128:041
Brush 2:
1: FluidR3_GM.sf2:128:042
Orchestra Kit:
1: FluidR3_GM.sf2:128:048
init:
messages: [cc:4:37:60, cc:4:65:127, cc:4:68:127,
cc:5:71:0, cc:5:73:0, cc:5:74:0, cc:5:78:40, cc:5:79:40, cc:5:80:80, cc:5:81:127, cc:5:82:80,
cc:5:71:0, cc:5:73:0, cc:5:74:0, cc:5:78:40, cc:5:79:40, cc:5:80:80, cc:5:81:127, cc:5:82:80,
cc:6:100:0, cc:6:101:0, cc:6:6:12, cc:6:38:0]
I don't see any functional difference to the default bank#.yaml files, yet those play and this doesn't. Permissions are the same. Any clues?
Hi Albedozero, how are you
Thank you for this wrapper, I'm currently adapting it for a performance with an early music ensemble. I intend to emulate pipe organ stops, but I wonder what it would be the best way to do so. I'm trying to avoid assigning volume = 0 for a particular channel. Instead, I would like to turn on/off a given program by routing/unrouting channel 1 to the channel assigned in the bank file for the preset. The behavior should be like turning on and off a particular preset.
Is there a way to unroute a previously routed channel? Do I Need to extend fswrap.py to add a function to wrap fluidsynth's api call 'delete_fluid_midi_router_rule'? In that case: how do I refer to the id of an existing rule?
Thank you very much for the advice
Hello,
actual version of bank0 seems to have an error in the Elevator jam preset. Each time I switch to it by running headlesspi.py in a SSH session the output is:
elected patch 4/5: Cheap Synth Exception ignored on calling ctypes callback function: <bound method Synth.custom_midi_router of <patcher.fswrap.Synth object at 0x7f9d8b1f70>> Traceback (most recent call last): File "/home/pi/Synthy/patcher/fswrap.py", line 694, in custom_midi_router if self.msg_callback: self.msg_callback(res) File "/home/pi/Synthy/./headlesspi.py", line 152, in listener self.select_patch((self.pno + msg.patch) % len(pxr.patches)) File "/home/pi/Synthy/./headlesspi.py", line 141, in select_patch pxr.apply_patch(self.pno) File "/home/pi/Synthy/patcher/__init__.py", line 163, in apply_patch self._fluid.player_add(name, **{**info, 'file': fpath, 'chan': pchan}) File "/home/pi/Synthy/patcher/fswrap.py", line 820, in player_add self.players[name] = Player(self, file, loops, barlength, chan, mask) File "/home/pi/Synthy/patcher/fswrap.py", line 499, in __init__ FL.fluid_midi_router_add_rule(self.frouter, rule, rtype) ctypes.ArgumentError: argument 3: <class 'TypeError'>: wrong type
If you comment out this part of the preset
players:
groove:
file: elevatorgroove.mid
chan: 1-10*1+5 # shift channels of messages in song
barlength: 1536 # if given, finishes measure before seeking
loops: [15350, 18419] # pairs of begin, end ticks
the error is not comming up.
Could you check this?
Regards
Frank
Hi,
I thought it would be easier to use GitHub because I have an account. I have not had time to look at the Raspberry Pi since writing this because of work and having to fix/move a website for a friend that has taken lots of my spare time.
The one thing I have done is order a Pi Sound sound card by Blokas that I am waiting to arrive which I am hoping will be better than the on board sound and the cheap USB interface I bought.
Let me know if you have an idea of what I can test because I have not really got my head round how audio and midi works under Linux because I come from a Windows background.
Thanks for your help!
Tim
Here's where we are from the youtube comments:
Karhide
Just trying the setup now but I don't get any sound when I plug in the midi controller (Launchpad Pro Mk3). How do I debug because I am very new to audio on a Raspberry Pi.
The White Tornado
3 weeks ago
Are you certain you're sending note messages from the Launchpad? The default initial MIDI Mapping on the Mk3 only sends CC (continuous controller) messages - Custom 3 and Custom 4 look like they send some notes. To do some debugging, you can log in to your Pi via ssh (see https://www.raspberrypi.org/documentation/remote-access/ssh/ for how) and type:
sudo systemctl stop squishbox.service
python3 headlesspi.py
This will give you some feedback on when the script changes patches, banks, etc. You can also type aseqdump -p 20:0
to see what MIDI messages your controller is sending (if your controller is not on port 20:0 type aconnect -i
to see what it is).
Feel free to reply or post in the forum at https://geekfunklabs.com/forums/forum/questions-issues/ if you have more questions!
Karhide
3 weeks ago
@the White Tornado Just had a look at the forum and don't see a way to register to ask a question. I have run the scripts and I can see the launchpad as device 24 and there are note on and off messages. I have tried changing the channel for the midi notes but nothing happens. What's the next step to test?
Karhide
3 weeks ago
Here's the output
24:0 Note on 0, note 51, velocity 25
24:0 Clock
24:0 Clock
24:0 Channel aftertouch 0, value 120
24:0 Channel aftertouch 0, value 126
24:0 Clock
24:0 Channel aftertouch 0, value 127
24:0 Clock
24:0 Note off 0, note 53, velocity 0
Karhide
3 weeks ago
Here's the midi details:
client 0: 'System' [type=kernel]
0 'Timer '
1 'Announce '
client 14: 'Midi Through' [type=kernel]
0 'Midi Through Port-0'
client 24: 'Launchpad Pro MK3' [type=kernel,card=2]
0 'Launchpad Pro MK3 MIDI 1'
1 'Launchpad Pro MK3 MIDI 2'
2 'Launchpad Pro MK3 MIDI 3'
The White Tornado
3 weeks ago
Try rebooting the Pi (so the script is running) and log in via ssh again and type aconnect -iol
- this will let you see if the Launchpad is connecting to FluidSynth. Also, see if your audio output is working by typing speaker-test
.
Karhide
3 weeks ago
@the White Tornado It looks like it is connected because the launchpad is 24 (see below) and if I run the speaker test I hear white noise. Is it because the launchpad shows up as multiple items?
client 0: 'System' [type=kernel]
0 'Timer '
Connecting To: 128:0
1 'Announce '
Connecting To: 128:0
client 14: 'Midi Through' [type=kernel]
0 'Midi Through Port-0'
Connecting To: 128:0
client 24: 'Launchpad Pro MK3' [type=kernel,card=2]
0 'Launchpad Pro MK3 MIDI 1'
Connecting To: 128:0
1 'Launchpad Pro MK3 MIDI 2'
Connecting To: 128:0
2 'Launchpad Pro MK3 MIDI 3'
Connecting To: 128:0
client 128: 'FLUID Synth (391)' [type=user,pid=391]
0 'Synth input port (391:0)'
Connected From: 0:1, 14:0, 24:0, 24:1, 24:2, 0:0
The White Tornado
2 weeks ago
Thanks - good to know sound is working and the Launchpad is connecting. It's a bit surprising that the Launchpad presents 3 MIDI devices to read from, but it shouldn't matter - you can connect as many MIDI controllers as you want to FluidSynth and it will read from all of them. I think this must be something to do with the messages the Launchpad is sending. I do notice that the one note on message I can see has a very low volume, so it could be working but the sounds are just quiet. It might also be sending some conflicting messages (like note offs or CC7=0) on the other ports - try aseqdump -p 24:1
and aseqdump -p 24:2
. If you have another MIDI controller lying around, try connecting that and see if you get sounds, so you can at least narrow it down to a problem with the Launchpad.
Karhide
2 weeks ago
@the White Tornado Just had chance to hook it all up again and I can see note on messages with a velocity of 124 but still no sound. I don't have another midi interface with me other than the Novation Circuit Tracks that seems to show no difference. I do have a midi interface that has 2 ins and 2 outs and I have plugged the launchpad directly in to that and it is just the same. Any ideas or is it time to give up?
Karhide
2 weeks ago
My idea would be to use the Fluid synth on headless pi as a sound source for the Circuit Tracks sequencer and I think it'd make a really cool and portable system.
Karhide
2 weeks ago
Just done some more digging and reinstalled using the script and then ran fluidsynth and got the following:
FluidSynth runtime version 2.2.1
Copyright (C) 2000-2021 Peter Hanappe and others.
Distributed under the LGPL license.
SoundFont(R) is a registered trademark of Creative Technology Ltd.
fluidsynth: error: fluid_sfloader_load(): Failed to open '/usr/local/share/soundfonts/default.sf2': File does not exist.
fluidsynth: error: Unable to open file '/usr/local/share/soundfonts/default.sf2'
fluidsynth: error: Failed to load SoundFont "/usr/local/share/soundfonts/default.sf2"
So looks like it could be an issue loading the soundfont. I will dig a bit more.
The White Tornado
2 weeks ago
Hi @Karhide - you can ignore the 'unable to load default.sf2' message - the FluidSynth team added an option to load a default soundfont on startup, but our script loads its own soundfonts as specified in SquishBox/banks/bank1.yaml. Not sure why you're still not getting sound - maybe we could hop into discord so we can back-and-forth a bit more easily. I'm on a trip at the moment but will be available in a week.
Karhide
1 week ago
@the White Tornado That would be amazing if you have time. Just let me know when you are available.
to reproduce the error:
Installing/Updating required software...
Updating apt indexes...
E: Release file for http://archive.raspberrypi.org/debian/dists/bullseye/InRelease is not valid yet (invalid for another 20d 4h 52min 22s). Updates for this repository will not be applied.
E: Release file for http://raspbian.raspberrypi.org/raspbian/dists/bullseye/InRelease is not valid yet (invalid for another 21d 3h 3min 39s). Updates for this repository will not be applied.
Failed to update apt indexes!
I have a problem with the pi crashing when I change patches. Today it at least went to 3 other patches before crashing. I'm running the latest Ubuntu desktop on pi 3b+.
I'm a total novice to working with a raspberry pi, only got it last Saturday but am excited to learn python. @the White Tornado Ok so I booted up, the piano soundfont voiced when I played the midi keyboard, I entered the command you provided in terminal. The following messages appeared and the sound stopped. "Failed to stop python3.service: Unit python3.service not loaded.
"Failed to stop squishbox.py.service: Unit squishbox.py.service not loaded. Usually when it's headless the pi just crashes as soon as I load a new track. I tried last night on my NI KKm32, and nektar lx49+. The Nektar I pressed every button to change patch with no luck. The M32, one of the encoders changes cc settings, and this is when the pi crashes. Thanks for taking the time to help me get this sorted.
Originally posted by @Ashguitargolf in https://github.com/albedozero/fluidpatcher/issues/13#issuecomment-875587342
For the specific pip error message I've logged this on stackoverflow.
##Troubleshooting:
Execute: py -3.10-64 -m pip install -U oyaml
Execute: py -3.10-64 -m pip install -U mido
Execute: py -3.10-64 -m pip install -U wxpython
Execute: py -3.10-64 -m pip install -U --pre -f https://wxpython.org/Phoenix/snapshot-builds/ wxpython
For oyaml, mido: succeeds
py -3.10-64 -m pip install -U mido
Requirement already satisfied: mido in c:\python311\lib\site-packages (1.2.10)
For wxpython: fails
py -3.10-64 -m pip install -U wxpython
Collecting wxpython
Using cached wxPython-4.2.0.tar.gz (71.0 MB)
Preparing metadata (setup.py) ... error
error: subprocess-exited-with-error
× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [8 lines of output]
Traceback (most recent call last):
File "<string>", line 2, in <module>
File "<pip-setuptools-caller>", line 34, in <module>
File "C:\Users\Bernard\AppData\Local\Temp\pip-install-dokcizpt\wxpython_662eefb4314c47eba7b194b4d07a8e18\setup.py", line 27, in <module>
from buildtools.config import Config, msg, opj, runcmd, canGetSOName, getSOName
File "C:\Users\Bernard\AppData\Local\Temp\pip-install-dokcizpt\wxpython_662eefb4314c47eba7b194b4d07a8e18\buildtools\config.py", line 30, in <module>
from attrdict import AttrDict
ModuleNotFoundError: No module named 'attrdict'
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
× Encountered error while generating package metadata.
╰─> See above for output.
note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
Let us know:
fluidsynth --version
at a command line)Hi,
I recently put together the v3 version of the sqiushbox with the pcb. (Litterally the day before v4 was released! aghhhhhhh! I might have to upgrade later, but I wanna get this one working first)
Anyways, I installed the firmware onto the raspberry pi and went through the setup, but I'm getting neither a sound output or text on the lcd.
I can confirm that the lcd works and it is reciving power, I also tested all the wire paths for continuity and they are fine. Perhaps its an issue with the pi's gpio?
I'm an Arduino guy so any help would be greatly appreciated and I will gladly provide more information/details if anyone can help me.
On latest Raspbery pi OS 64bit lite. I have an error on install script.
The install script output :
$ curl -L git.io/squishbox | bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 14510 100 14510 0 0 18238 0 --:--:-- --:--:-- --:--:-- 18238
o
o───┐ │ o
___│__│__│___
/ \ o SquishBox/Headless Pi Synth Installer
o───┤ _________ │ │ by GEEK FUNK LABS
│ │ █ │ █ █ │ ├──┘ geekfunklabs.com
│ │ █ │ █ █ │ │
\_│_│_│_│_│_│_/
This script installs/updates software and optional extras
for the SquishBox or headless Raspberry Pi synth.
Always be careful when running scripts and commands copied
from the internet. Ensure they are from a trusted source.
If you want to see what this script does before running it,
hit ctrl-C and enter 'curl -L git.io/squishbox | more'
View the full source code at
https://github.com/GeekFunkLabs/fluidpatcher
Report issues with this script at
https://github.com/GeekFunkLabs/fluidpatcher/issues
Choose your install options. Empty responses will use the [default options].
Setup will begin after all questions are answered.
This software is designed for the latest Raspberry Pi OS (Bullseye),
which does not appear to be the situation here. YMMV!
Proceed anyway? (y/[n]) y
What are you setting up?
1. SquishBox
2. Headless Raspberry Pi Synth
Choose [1] 1
What version of SquishBox hardware are you using?
v6 - Green PCB with SMT components
v4 - Purple PCB, has 2 resistors and LED
v3 - Purple PCB, has 1 resistor
v2 - Hackaday/perfboard build
Choose [v6]
Enter install location [/home/xxxxxxx]
Install/update synthesizer software? ([y]/n)
Update/upgrade your operating system? ([y]/n)
Which audio output would you like to use?
0. No change
1. Default
2. Headphones
3. sndrpihifiberry
4. vc4hdmi0
5. vc4hdmi1
Choose [3]
Set up web-based file manager? ([y]/n)
Please create a user name and password.
username: xxxxxxx
password: xxxxxxxxxxxxxxx
Download and install ~400MB of additional soundfonts? ([y]/n)
Option selection complete. Proceed with installation? ([y]/n)
This may take some time ... go make some coffee.
Installing/Updating supporting software...
Updating package indexes...
Upgrading your system...
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Installing package python3-pip...
Installing package fluid-soundfont-gm...
Installing package ladspa-sdk...
Installing package swh-plugins...
Installing package tap-plugins...
Installing package wah-plugins...
Installing Python module oyaml...
Failed to install oyaml!
if I try to run pip install command I have si error :
$ pip install "oyaml"
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.
For more information visit http://rptl.io/venv
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
I have fixed by removing the file /usr/lib/python3.11/EXTERNALLY-MANAGED :
$ sudo rm /usr/lib/python3.11/EXTERNALLY-MANAGED
And now the install works fine.
On Squishbox 0.8.4 (v4 hardware),
when I want to add new patch and I want to save it, i see the following error: name 'mode' is not defined
and Squishbox doesn't save the patch.
To add the new patch I select open soundfont
, then I select the soundfont I want to add and I click on the two button to see the check mark (is the only way I found to see the check mark to save the patch). At this time I see the error.
Can you help me?
First - thanks! The Squishbox works like a champ (may send notes of some minor issues, but for now, gr8) I'd just set up a raspberry with similar functionality, but your little box brings a much nicer physical interface to the metaphorical table.
Secondly - noticed you used the ubiquitous FluidR3_GM.sf2 sound font... there's an example at:
https://gist.github.com/albedozero/721442c1d112839c71fd8f7d9ce1a98b
It runs through the full number (close to 200 different instruments)... if you simply put the file (any reasonable file name ending in .yaml seems to work) in "SquishBox/banks", your basic "router_rules" at the top of the file, it works like a champ. You might consider putting it as one of your sample bank files, but of course YMMV... scrolling through even 200 patches doesn't take that long, and it's all the more impressive when kicking the tires of the squishbox.
You may have this somewhere in your notes/dox, but I didn't see it.
Tnx again!
Hi, I'm not able to update squishbox to 0.7.11 version from 0.7.9 from software option.
Originally posted by @tizfra in https://github.com/albedozero/fluidpatcher/discussions/54#discussioncomment-3344630
Hi there,
Running Python 3.5.3 on Raspian "Stretch"
I get this error when running headlesspi.py:
ImportError: cannot import name 'time_ns'
Traceback:
File "headlesspi.py", line 10, in <module>
from utils import netlink
File "/home/pi/headlesspi/utils/netlink.py", line 5, in <module>
from time import time_ns
I replaced line 5 with import time
, which took me further through the application.
But then I got another error (reporting separately)
Hi,
I tried following the install instructions, mainly to put fluidpatcher on my Ubuntu focal 20.04 desktop so that I can try to push patches to my Pi running the synth software.
sudo apt install libfluidsynth
I get the error:
E: Unable to locate package libfluidsynth
I notice libfluidsynth2 is available for my distribution but once I try to open the patcher python starts coughing up errors.
Describe the bug
The script squishbox-install.bash no longer works as is because the Github account has changed name from albedozero to GeekFunkLabs and the script still references albedozero.
Workaround
A workaround is to download the script and edit it replacing all references to albedozero with GeekFunkLabs then run it locally.
Hi,
Im sorry to be a thorn in your side. Thank you for sending the build kit over, Im really looking forward to getting it operational.
I have connected it all together and have a bit of troubleshooting to go through.
Firstly, I went through the install instructions as per your website. When I ran the script:
curl -L git.io/squishbox | bash
I noticed some errors during the running of it. The first thing I noticed is that php7.4 was installed with RaspberryPi OS. I downloaded your script code and changed every instance of php7.3
-> php7.4
. It then ran without errors.
I choose the audio interface no 3.
Unfortunately Im getting no characters appear on the screen. It is getting power.
I have tried adjusting the contrast with a screwdriver but there are no characters output on the screen.
When I run ./squishbox.py
from the command line, I get the following:
Do you have any ideas on how I might troubleshoot this?
Thank you for your time.
I need to be able to change the current patch up and down using two notes (e.g. A1 and B1) on headless.py but my keyboard doesn't have any controllers.
Is there any way to achieve this, either through router_rules or the API?
Thanks for an excellent project!
Hi there,
It looks like there's a small bug in the installer at https://geekfunklabs.com/squishbox
The line apt_pkg_install "python3-rtmidi" gives a "failed to install error.
Changing it to: pip_install "python-rtmidi" seems to work. (note the removal of the 3 as well as the change to pip.
I haven't yet finished the full install, but that change gets me past the error.
Thanks,
Mark
In your installer (https://raw.githubusercontent.com/albedozero/fluidpatcher/master/assets/squishbox-install.bash), where you tell people to -
curl -L git.io/squishbox | bash
The script does:
fmgr_hash=`wget -qO - geekfunklabs.com/passhash.php?password=$password`
You really should do this on the raspberry pi itself vs. over the network. An unscrupulous person (if not you, someone could grab the domain or do MitM since you're not using https
in the command) could save the password along with the requesting IP and potentially do some harm to someone installing the package (either by directly accessing the pi or by abusing people who use the same password all over the place (... it happens....)
E.g. It'd be easy to do something like (or w/e) -
php -r 'print password_hash('"$password"', PASSWORD_DEFAULT);'
Hi there,
Running Python 3.5.3 on Raspian "Stretch"
I get this error when running headlesspi.py (once I'd fixed the error noted in #17 )
TypeError: '_sre.SRE_Match' object is not subscriptable
Traceback:
File "headlesspi.py", line 106, in <module>
fport = re.search("client (\d+): 'FLUID Synth", subprocess.check_output(['aconnect', '-o']).decode())[1]
TypeError: '_sre.SRE_Match' object is not subscriptable
The console messages before this point were:
fluidsynth: warning: Requested a period size of 64, got 444 instead
fluidsynth: Connection of Midi Through Port-0 succeeded
fluidsynth: Connection of Keystation Mini 32 MIDI 1 succeeded
fluidsynth: warning: Connection Midi Through Port-0 is already subscribed
fluidsynth: warning: Connection Keystation Mini 32 MIDI 1 is already subscribed
Any thoughts? I'm not quite sure what's happening here.
Thanks,
Mark
This failed in the 'upgrade system' path, and also when re-running the curl but choosing not to upgrade the system.
I tried manually installing rt-midi, but it's not working.
Hi,
I notice when playing 'Analog Pad' or other pad style presets, perhaps using too many fingers, ie pressing too many keys, the Pi will cut out. I thought the Pi 3B+ should be enough to handle that amount of throughput (or am I looking at this the wrong way).
Is there a way to limit the polyphony on certain presents to prevent this from happening?
From running htop
, I notice that python3 /home/pi/squishbox.py
is running two or three times. I presume this is some funky coding techniques.
When I run squishbox.py from the command line I get:
I notice you use jackd1
as the audio server in the background. Apparently the multithreading in jackd2
is much improved.
Unfa gives a short explanation of the issue \ features of both here (Ive jumped it to the appropriate section of the video)
Hi!
Thank you for making Fluidpatcher I really enjoy working with it! I did notice one issue recently.
I have a midi controller (nanoKey) that send System excusive messages when I switch scenes.
Example of such message - selecting first track:
"System exclusive F0 42 40 00 01 36 02 00 00 4F 00 F7"
xdotool catches this but MIDI monitor from Fluidpatcher doesn't show these messages at all. I tried using the CLI version and MIDI monitor there gives an exception:
Exception ignored on calling ctypes callback function: <function Synth.__init__.<locals>.<lambda> at 0x7f81df94e0> Traceback (most recent call last): File "/home/bane/synthsynth/fluidpatcher/pfluidsynth.py", line 573, in <lambda> self.custom_router_callback = fl_eventcallback(lambda _, e: self.custom_midi_router(e)) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/bane/synthsynth/fluidpatcher/pfluidsynth.py", line 648, in custom_midi_router self.midi_callback(MidiSignal(mevent)) File "/home/bane/synthsynth/fluidpatcher/__init__.py", line 464, in _midisignal_handler if self.midi_callback: self.midi_callback(sig) ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/bane/synthsynth/fluidpatcher_cli.py", line 71, in sig_handler t = MSG_TYPES.index(sig.type) ^^^^^^^^^^^^^^^^^^^^^^^^^ ValueError: tuple.index(x): x not in tuple
Is it possible to catch these messages in midi monitor in CLI?
My goal is to have the Pi4 with Fluidsynth/Fluidpatcher permanently turned on and only having to turn on the MIDI keyboard (Nektar LX88+) to start playing.
Currently, if I disconnect/reconnect (or turn off/on) the keyboard, Fluidsynth doesn't start playing unless I manually restart the squishbox service.
midi.autoconnect is already set to "1" in squishboxconf.yaml.
What else can I do? Thanks!
BTW thanks for all your help so far!
Hello,
I am using your software as is, only changed wheel and button control numbers to reflect my Lauchkey 25 MIDI KB
Also:
listplugins
Warning: You do not have a LADSPA_PATH environment variable set. Defaulting to DEFAULT_LADSPA_PATH.
But I checked the folder /usr/lib/ladspa and all expected effect are there.
So how to fix this?
Background Info
Let us know:
FluidSynth runtime version 2.1.7
Copyright (C) 2000-2021 Peter Hanappe and others.
Distributed under the LGPL license.
SoundFont(R) is a registered trademark of E-mu Systems, Inc.
For accessing a non-existing file or directory for headlesspi.py
hi
i tried to install fluidpatcher with python 3.11 on win 64
wxpython ist compatible to python 3.10 so it won't run on the python 3.11
the fluidpatcher setup fails with some errormessages and can't be startet
in conclusion i can't use fluidpatcher on win 64 with python 3.11
greetings
Hi there - nice project you have here. Getting consistent crashes with headlesspi.py when changing patches using midi keyboard transport keys.
The setup I have is:
headlesspi.py launches successfully and plays notes like a normal piano. Changing banks works fine using the midi keyboard's Play button (transport keys).
But using the keyboard's Fast Forward and Rewind buttons (transport keys) to change patches consistently causes the Pi to shutdown. See screenshot.
checked /var/log/messages & /var/log/syslog without much to see (excerpts attached)
Hello
After start install procedure with
curl -L git.io/squishbox | bash
and replying to option request, the install script fails with this error
Problems installing fluid-soundfont-gm!
I'm on a PI with Raspbian GNU/Linux 11 (bullseye)
Any help please....
Running the provided commands results in
Collecting oyaml
Downloading oyaml-1.0-py2.py3-none-any.whl (3.0 kB)
Collecting wxpython
Downloading wxPython-4.2.0.tar.gz (71.0 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 71.0/71.0 MB 26.3 MB/s eta 0:00:00
Preparing metadata (setup.py) ... error
error: subprocess-exited-with-error
× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [8 lines of output]
Traceback (most recent call last):
File "<string>", line 2, in <module>
File "<pip-setuptools-caller>", line 34, in <module>
File "/private/tmp/pip-install-tmsupjic/wxpython_3c93365dc10b4964824c1aa6308d18d8/setup.py", line 27, in <module>
from buildtools.config import Config, msg, opj, runcmd, canGetSOName, getSOName
File "/private/tmp/pip-install-tmsupjic/wxpython_3c93365dc10b4964824c1aa6308d18d8/buildtools/config.py", line 30, in <module>
from attrdict import AttrDict
ModuleNotFoundError: No module named 'attrdict'
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
and
gcc -shared assets/patchcord.c -o patchcord.so && sudo mv -f patchcord.so /usr/lib/ladspa/
assets/patchcord.c:35:10: fatal error: 'ladspa.h' file not found
#include "ladspa.h"
^~~~~~~~~~
1 error generated.
I spent Thursday and Friday of last week trying to get this running on my Pi 3B v1.2, using an Akai MPKmini MkII as the controller (the very same as the one in your video, I think?).
I can get sounds to work when running headlesspi.py in Terminal. However, it opens with an error related to Sine Wave.
For reasons unclear to me (sorry if it's simply down to me not understanding some fundamentals -- tell me!), the script does not appear to run on boot, even after adding it to crontab.
I can use K5 (encoder on Akai) to move through various sounds, but cannot get a sense of whether the bank and patch change options are working (which I hooked up to Pad 8, 4, and 3). It might be useful to have Terminal spit out a print() message when changing, with some info. The pad controls appear totally erratic at present.
Anyway, please let me know how to help, and if you can, gimme some pointers on why I can't get this to work as hoped :)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.