Yippee! Today i finished to clean the code. Contributions welcomed.
-
Spaghettis: Yet another fork of Pure Data
-
But that < https://github.com/pure-data/pure-data/blob/master/src/g_editor.c#L114 > kind of things convinced me that Pure Data can NOT be improved whitout first a serious clean.
What did you change in that example as part of the cleaning-- the comment, or the behavior of garrays and scalars?
-
In that cases i changed the code (thus the comment), but not the behavior (as far as possible) < https://en.wikipedia.org/wiki/Code_refactoring >. Parts of Pure Data code are hard to understand even for the mainteners < https://www.mail-archive.com/pd-dev@lists.iem.at/msg01781.html > and < https://lists.puredata.info/pipermail/pd-dev/2018-11/021803.html >. This is what i suggested by enlightening that comment (and nothing more).
-
I see this:
if (gobj_isScalar (x) && glist_isArray (owner)) { return 1; }
But I don't understand the function name "glist_isArray". Shouldn't that be "glist_isGraph" or "glist_isGOP"?
-
An array is a special GOP with one scalar inside. That function tests if it is that special glist.
-
I have a problem installing this fork
I'm on raspbian stretch (raspberry pi 3). I'm not a developer so I don't a have a clue of what is happening.
-
@JackPD My code cannot define the data model of your platform < https://en.wikipedia.org/wiki/64-bit_computing#64-bit_data_models >. For now i have only tested it on Ubuntu 18.04 and macOS Mojave. I'm afraid that the Raspberry Pi is a platform that can not be supported without more investigations. I need to buy one first!
-
Don't worry Nicolas, I understand your effort, if I could help I would but I don't have strong dev knowledge for that kind of things. I can help you in the graphic design part, iconography, etc... Feel free to contact me!
-
@JackPD It should compile (freshly) on Raspberry Pi (at least it works on my RPI4 with Raspbian Buster).
-
Hi Nicolas.
I'm trying to compile from Arch Linux.
I have tk8.6 installed (tk-8.6.10-1), but I get the following error:
buildLinux sh: tk8.6 package requiredAny idea?
-
Probably that the way my script checks for dependencies (it uses dpkg-query) doesn't work for Arch Linux. You could just remove them and test. Spaghettis requires Tcl/Tk 8.6, JACK for audio, and ALSA for MIDI. Note that nothing is installed outside of the Spaghettis directory.
-
I have to read more before I ask. I overlooked that you were using dpkg-query, but I could have imagined it because in the documentation you clearly say that the compilation tests have been done in Ubuntu.
I removed that part of the script and it compiled without problems.
But... I can't get it to sound and I have some problems with the keyboard. I can't do Ctrl+ 1, for example.
I think I'll try it better on a virtual machine or a mac.Thanks Nicolas.
-
On GNU/Linux Spaghettis uses JACK as backend, but contrary to Pd vanilla it is not connected by default (i use a permanent patchbay with qjackctl on my laptop). Thanks for the feedback.
-
@Nicolas-Danet said:
On GNU/Linux Spaghettis uses JACK as backend, but contrary to Pd vanilla it is not connected by default (i use a permanent patchbay with qjackctl on my laptop).
That was, as I always start jack from the terminal I hadn't noticed.
Now it works and I have sound. -
Have you tried to create object (ctrl + 1) with the shift key also? It is always laborious to get it works on all platforms < https://github.com/Spaghettis/Spaghettis/blob/87c0639c502b461af46084ff605030f75c006737/tcl/ui_bind.tcl#L94 >. And could you tell me what you get for $OSTYPE value in a terminal/bash?
echo $OSTYPE
-
@Nicolas-Danet said:
Have you tried to create object (ctrl + 1) with the shift key also? It is always laborious to get it works on all platforms < https://github.com/Spaghettis/Spaghettis/blob/master/tcl/ui_bind.tcl#L94
I only get four objects using Shift+Control.
Shift+Control+1 = Dial
Shift+Control+2 = Atom
Shift+Control+6 = Object
Shift+Control+8 = Comment. And could you tell me what you get for $OSTYPE value in a terminal/bash?
echo $OSTYPE
linux-gnu
-
QWERTY keyboard! Does it works if you add following code?
event add <<NewObject>> <$mod-Key-1> event add <<NewMessage>> <$mod-Key-2> event add <<NewAtom>> <$mod-Key-3> event add <<NewSymbol>> <$mod-Key-4> event add <<NewComment>> <$mod-Key-5> event add <<NewBang>> <$mod-Key-6> event add <<NewToggle>> <$mod-Key-7> event add <<NewDial>> <$mod-Key-8> event add <<NewArray>> <$mod-Key-9>
-
@Nicolas-Danet said:
QWERTY keyboard! Does it works if you add following code?
event add <<NewObject>> <$mod-Key-1> event add <<NewMessage>> <$mod-Key-2> event add <<NewAtom>> <$mod-Key-3> event add <<NewSymbol>> <$mod-Key-4> event add <<NewComment>> <$mod-Key-5> event add <<NewBang>> <$mod-Key-6> event add <<NewToggle>> <$mod-Key-7> event add <<NewDial>> <$mod-Key-8> event add <<NewArray>> <$mod-Key-9>
There < https://github.com/Spaghettis/Spaghettis/blob/master/tcl/ui_bind.tcl#L106 >.
Yes, that worked.
-
Good to know, thanks.
-
It should work on macOS Catalina now.
PS: Note that i need help (e.g. for testing). Why does it worth the cost? The DSP is multi-threaded. It is supposed to be wait-free. It is supposed to not glitch anymore. Ok, i stop this shameful promotion.
-
The DSP is multi-threaded. It is supposed to be wait-free.
@Nicolas-Danet This sounds exciting! I have some questions:
- how do you handle concurrent garray reads/writes?
- how do you handle concurrent access to the clock list (e.g. calling
clock_set
in the perform routine)? - which API functions are safe to call in the perform routine?
I could probably find the answers by reading the source code, but maybe you could give some rough answers, so I know what I should look for
Cheers, Christof