Topic: Install Pianoteq on Odroid-N2

Dear Pianoteq users,
today I started the installation of "Pianoteq 6 Stage" on an Odroid-N2 CPU module and everything looks pretty well up to now.

The idea behind this project was based on several forum entries about the installation of Pianotec on a Raspberry Pi and the mentioned poor performance.
Then I saw the Odroid-N2, based on a 6 core 64 bit ARM application processor - all cores running at CPU clock speed >= 1.8 GHz. In addition to that it has a pretty  good audio engine (DAC) which makes it the ideal candidate for my piano project.

More Information about the Odroid-N2 can be found here:  https://www.hardkernel.com/shop/odroid-...gbyte-ram/

The other pretty thing is that it costs in fact less money as a Raspberry Pi 4 + high end audio extension + heat sink or fans.

In the next days I will describe how I made this installation and also the experiences I make with this setup. Maybe someone is interested about this project.

Best regards,
Neo

Re: Install Pianoteq on Odroid-N2

Neo wrote:

In the next days I will describe how I made this installation and also the experiences I make with this setup. Maybe someone is interested about this project.
Neo

Really interested. Keep us posted. Thanks.

Re: Install Pianoteq on Odroid-N2

Hello Neo, if you want, I can share a "benchmark" I wrote to test different configurations.
I use pianoteq on a odroid XU4 with a ESI UDJ6 USB sound card (not very good in latencies).
By the way, out of the box it did not work in Ubuntu, I'm running Armbian

Re: Install Pianoteq on Odroid-N2

Neo wrote:

In the next days I will describe how I made this installation and also the experiences I make with this setup. Maybe someone is interested about this project.

Yeah, I'm another who is interested and will be watching for more.  Thanks.

Re: Install Pianoteq on Odroid-N2

marcos daniel wrote:

Hello Neo, if you want, I can share a "benchmark" I wrote to test different configurations.
I use pianoteq on a odroid XU4 with a ESI UDJ6 USB sound card (not very good in latencies).
By the way, out of the box it did not work in Ubuntu, I'm running Armbian

Hello Marcos,
yes, I am really interested about your benchmark tests. It would be nice if you can provide me your code....thanks!
Up to now I got no real result from any other "standard" CPU performance monitoring applications.... I think they don't support the ARM64 performance monitoring unit (PMU). But  on the other hand I had no time up to now to look deeper into the kernel configuration if everything is enabled for performance monitoring.

regards,
Neo

Re: Install Pianoteq on Odroid-N2

Nice to see that there is some interrest in that topic.
Next weekend - when I have a little bit more time - I will write a little more about the steps I have done up to now .....maybe a smalll tutorial.

The next thing I will do is to tweak the UART-driver to support 31250 Baud, because I want to use the native UART for MIDI (no use of any USB-software-stack functionality -> avoiding latencies / unnecessary CPU load).

Re: Install Pianoteq on Odroid-N2

Neo wrote:
marcos daniel wrote:

Hello Neo, if you want, I can share a "benchmark" I wrote to test different configurations.
I use pianoteq on a odroid XU4 with a ESI UDJ6 USB sound card (not very good in latencies).
By the way, out of the box it did not work in Ubuntu, I'm running Armbian

Hello Marcos,
yes, I am really interested about your benchmark tests. It would be nice if you can provide me your code....thanks!
Up to now I got no real result from any other "standard" CPU performance monitoring applications.... I think they don't support the ARM64 performance monitoring unit (PMU). But  on the other hand I had no time up to now to look deeper into the kernel configuration if everything is enabled for performance monitoring.

regards,
Neo

Hello again, first I will roughly describe what this kind of bench does. I wrote it in C, with armbian (and raspbian) no compiler needs to be installed, all needs are satisfied by default.
It is a stress test, the program generates a MIDI file with ten glissandi from the lowest A to the top C, (on white keys).
The damper pedal is down during each glissandi.
In the first try, every note takes is played 100ms after the previous one. The program asks if there was an error in the playback, if there is not overload, you press "y" and it will generate another MIDI file, this time with 50ms between notes.
So the sequence of notes duration is (geometric progression) 100ms, 50ms, 25ms, 12.5ms, 6.25 ms, and so on.
When the computing power is not enough, an overload will occur, let's suppose it happens whith 12.5ms of delay, then the next delay will be the average of 12.5ms and 25ms (the lowest time without overload) = 18.75ms, if there is not error, next duration will be average between this last value and the maximum time with error, i.e. (18.75 + 12.5)/2 = 15.625ms.
By doing this, quiclky one obtains a final result (10 or 12 tries), and when asked pressing key "t" (for terminate) the program exits.
Any run can be skipped by ctrl+c.
I'm not a programmer, so the program is "as is", and in Spanish, if you are insterested I can translate it, or comment its lines so you can improve it.
At last, but not least, on odroid XU4, it run more consistentlyif you run Pianoteq (or this test) from big cores excluding small ones, this can be done by taskset command, in case of XU4, big cores are numbered from 4 to 7, so the command would be taskset 0xF0 [command]. There is some improvement if you use less niceness, for instance I ran most testst this way:
nice -10 taskset 0xF0 ./ptq_bench
Pianoteq executable file must be in the same folder and version removed, simply named "Pianoteq".
I will post the code in the next forum entry since the forum does not allow to share a c file.

Re: Install Pianoteq on Odroid-N2

Some special characters can't be posted to the forum, so here is the code:
https://github.com/marcosdanielfl/ptq_b...ptq_benc.c

Re: Install Pianoteq on Odroid-N2

Hello together,
I have startet to write some documentation about my project in my WIKI -> http://www.belleart.org.
This is easier for me to provide also graphical informations and pictures, but I will keep this forum up to date if a new milestone is reached

Regards,
Neo

Re: Install Pianoteq on Odroid-N2

I'll follow your project, by the way, using the XU4q and an ESI UDJ6 soundcard in stereo mode, for the 4 big cores, here you have the results of my glissandi benchmark:

SampleRate / buffer size / polyphony / worst result / latency
44.1 kHz / 64 samples / 96 polyphony: 24.2 ms between notes, then there are fails. Latency: 13.2 ms (average of 5 measurements with an oscilloscope)
44.1 kHz / 128 samples / 96 polyphony: 19.1 ms between notes, latency: 21.9 ms
48 kHz / 64 samples / 96 polyphony: 39.3 ms between notes, latency: 12.1 ms
48 kHz / 128 samples / 96 polyphony: 41.21 ms between notes, latency: 20.3 ms
32 kHz / 96 samples / 96 polyphony: 6.74 ms between notes (insane!), latency: 17.9 ms

I'd like to know how it compares to the N2
Kind Regards
Marcos

Last edited by marcos daniel (26-05-2020 02:03)

Re: Install Pianoteq on Odroid-N2

My obvious question is how do these different settings play ?

I've never found these numbers particularly useful, and artificial stress tests don't really give me (and I presume others) any way to connect performance with real playing, so I'd be interested in seeing if you can tell me what these different numbers feel like when playing.

Thanks.

marcos daniel wrote:

I'll follow your project, by the way, using the XU4q and an ESI UDJ6 soundcard in stereo mode, for the 4 big cores, here you have the results of my glissandi benchmark:

SampleRate / buffer size / polyphony / worst result / latency
44.1 kHz / 64 samples / 96 polyphony: 24.2 ms between notes, then there are fails. Latency: 13.2 ms (average of 5 measurements with an oscilloscope)
44.1 kHz / 128 samples / 96 polyphony: 19.1 ms between notes, latency: 21.9 ms
48 kHz / 64 samples / 96 polyphony: 39.3 ms between notes, latency: 12.1 ms
48 kHz / 128 samples / 96 polyphony: 41.21 ms between notes, latency: 20.3 ms
32 kHz / 96 samples / 96 polyphony: 6.74 ms between notes (insane!), latency: 17.9 ms

I'd like to know how it compares to the N2
Kind Regards
Marcos

StephenG

Re: Install Pianoteq on Odroid-N2

marcos daniel wrote:

I'll follow your project, by the way, using the XU4q and an ESI UDJ6 soundcard in stereo mode, for the 4 big cores, here you have the results of my glissandi benchmark:

SampleRate / buffer size / polyphony / worst result / latency
44.1 kHz / 64 samples / 96 polyphony: 24.2 ms between notes, then there are fails. Latency: 13.2 ms (average of 5 measurements with an oscilloscope)
44.1 kHz / 128 samples / 96 polyphony: 19.1 ms between notes, latency: 21.9 ms
48 kHz / 64 samples / 96 polyphony: 39.3 ms between notes, latency: 12.1 ms
48 kHz / 128 samples / 96 polyphony: 41.21 ms between notes, latency: 20.3 ms
32 kHz / 96 samples / 96 polyphony: 6.74 ms between notes (insane!), latency: 17.9 ms

I'd like to know how it compares to the N2
Kind Regards
Marcos

Hello Marcos,
sorry that I am a little late with the setup of your benchmark test. I hope I have the result soon.
By the way - I have also a XU in my "collection" but I never thought about using it for audio purpose......

Best regards,
Neo

Re: Install Pianoteq on Odroid-N2

sjgcit wrote:

My obvious question is how do these different settings play ?

I've never found these numbers particularly useful, and artificial stress tests don't really give me (and I presume others) any way to connect performance with real playing, so I'd be interested in seeing if you can tell me what these different numbers feel like when playing.

Thanks.

marcos daniel wrote:

I'll follow your project, by the way, using the XU4q and an ESI UDJ6 soundcard in stereo mode, for the 4 big cores, here you have the results of my glissandi benchmark:

SampleRate / buffer size / polyphony / worst result / latency
44.1 kHz / 64 samples / 96 polyphony: 24.2 ms between notes, then there are fails. Latency: 13.2 ms (average of 5 measurements with an oscilloscope)
44.1 kHz / 128 samples / 96 polyphony: 19.1 ms between notes, latency: 21.9 ms
48 kHz / 64 samples / 96 polyphony: 39.3 ms between notes, latency: 12.1 ms
48 kHz / 128 samples / 96 polyphony: 41.21 ms between notes, latency: 20.3 ms
32 kHz / 96 samples / 96 polyphony: 6.74 ms between notes (insane!), latency: 17.9 ms

I'd like to know how it compares to the N2
Kind Regards
Marcos

Hello Marcos,
the code you provided on github seems to be an interim state. You have used "argc" argument count in the code but there is no parser for argument values.
Therefore the code doesn't compile out of the box.
For me it's hard to assume what you want to do because I can't read spanish.
Can you please complete the code? Then I will try to compile it again.
Thanks!

Neo

Re: Install Pianoteq on Odroid-N2

EDIT my previous answer was incorrect, I removed "int argc, char *argv[]" from the main() parentheses thinking it would not affect the code, tomorrow I'll comment the code and translate de variables.
Just replace "int main()" by "int main(int argc, char *argv[])" and it should compile.
I have just translated dialogs at github,
Regards,
Marcos

EDIT2: As my odroid has not internet nor monitor, I edited it from a Windows PC, just in case, the original code is here, the first one
https://github.com/marcosdanielfl/ptq_b...ptq_benc.c

Last edited by marcos daniel (27-05-2020 01:43)

Re: Install Pianoteq on Odroid-N2

marcos daniel wrote:

EDIT my previous answer was incorrect, I removed "int argc, char *argv[]" from the main() parentheses thinking it would not affect the code, tomorrow I'll comment the code and translate de variables.
Just replace "int main()" by "int main(int argc, char *argv[])" and it should compile.
I have just translated dialogs at github,
Regards,
Marcos

EDIT2: As my odroid has not internet nor monitor, I edited it from a Windows PC, just in case, the original code is here, the first one
https://github.com/marcosdanielfl/ptq_b...ptq_benc.c

Hello Marcos,
today I tried to get your benchmark running. Compiling was successful after altering the code like you did it. Then I copied the executable to the Pianoteq folder, renamed "Pianoteq 6 STAGE" to Pianoteq and then started it....the result was a segmentation fault....

odroid@odroid:~/Pianoteq 6 STAGE/arm$ ./ptq_benc

Test start

Press ctrl + c to cancel
delay beween notes: 100.00 milisegundos
Segmentation fault (core dumped)

Have you got any idea what causes this?

Regards,
Neo

Re: Install Pianoteq on Odroid-N2

Segmentation fault occurs when a program tries to access a forbidden memory location, or something like this (I'm not a programmer but for instance when you try to copy a 10 character string in a 8 character array this happens)... I will try to run the code on my Odroid and see what happens,
Marcos

Re: Install Pianoteq on Odroid-N2

Well I've just tried the code and it works on Odroid XU4 with Armbian.
Here you are the output:


marcos@odroidxu4:~/Desktop$ gcc doc.c -o doc
marcos@odroidxu4:~/Desktop$ taskset 0xF0 nice --10 ./doc

Test start

Press ctrl + c to cancel
delay between notes: 100.00 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
Try number 1
Did audio fail? y/n, t to terminate
n
delay between notes: 50.00 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
Try number 2
Did audio fail? y/n, t to terminate
n
delay between notes: 25.00 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
Try number 3
Did audio fail? y/n, t to terminate
n
delay between notes: 12.50 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
CPU overload detected. Your CPU is not powerful enough, or the power-saving settings of your computer are too aggressive. You can adjust the performance of Pianoteq, or disable CPU overload detection, in the 'Perf' tab of the 'Options' dialogue.
Try number 4
Did audio fail? y/n, t to terminate
y
delay between notes: 18.75 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
CPU overload detected. Your CPU is not powerful enough, or the power-saving settings of your computer are too aggressive. You can adjust the performance of Pianoteq, or disable CPU overload detection, in the 'Perf' tab of the 'Options' dialogue.
Try number 5
Did audio fail? y/n, t to terminate
y
delay between notes: 21.88 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
Try number 6
Did audio fail? y/n, t to terminate
n
delay between notes: 20.31 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
Try number 7
Did audio fail? y/n, t to terminate
n
delay between notes: 19.53 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
Try number 8
Did audio fail? y/n, t to terminate
n
delay between notes: 19.14 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
CPU overload detected. Your CPU is not powerful enough, or the power-saving settings of your computer are too aggressive. You can adjust the performance of Pianoteq, or disable CPU overload detection, in the 'Perf' tab of the 'Options' dialogue.
Try number 9
Did audio fail? y/n, t to terminate
y
delay between notes: 19.34 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
CPU overload detected. Your CPU is not powerful enough, or the power-saving settings of your computer are too aggressive. You can adjust the performance of Pianoteq, or disable CPU overload detection, in the 'Perf' tab of the 'Options' dialogue.
Try number 10
Did audio fail? y/n, t to terminate
y
delay between notes: 19.43 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
CPU overload detected. Your CPU is not powerful enough, or the power-saving settings of your computer are too aggressive. You can adjust the performance of Pianoteq, or disable CPU overload detection, in the 'Perf' tab of the 'Options' dialogue.
Try number 11
Did audio fail? y/n, t to terminate
y
delay between notes: 19.48 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
Try number 12
Did audio fail? y/n, t to terminate
n
delay between notes: 19.46 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
CPU overload detected. Your CPU is not powerful enough, or the power-saving settings of your computer are too aggressive. You can adjust the performance of Pianoteq, or disable CPU overload detection, in the 'Perf' tab of the 'Options' dialogue.
Try number 13
Did audio fail? y/n, t to terminate
y
delay between notes: 19.47 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
CPU overload detected. Your CPU is not powerful enough, or the power-saving settings of your computer are too aggressive. You can adjust the performance of Pianoteq, or disable CPU overload detection, in the 'Perf' tab of the 'Options' dialogue.
Try number 14
Did audio fail? y/n, t to terminate
y
delay between notes: 19.48 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
CPU overload detected. Your CPU is not powerful enough, or the power-saving settings of your computer are too aggressive. You can adjust the performance of Pianoteq, or disable CPU overload detection, in the 'Perf' tab of the 'Options' dialogue.
Try number 15
Did audio fail? y/n, t to terminate
t
Total attemps: 15, final delay between notes: 19.48
marcos@odroidxu4:~/Desktop$



I remember I have had running issues on MS Windows with the same code, so I had to add quotation marks (", named comillas in spanish) in lines 118-120. So I would try removing them, on XU4 it the program runs with or without them, who knows, perhaps it runs.

For this you should comment out line 118, change strcat in line 119 to strcpy and comment out line 120

line    original code:                                      new code:
118   strcpy(comando,comilla);                   //strcpy(comando,comilla);     
119   strcat(comando,pianoteq);                 strcpy(comando,pianoteq);
120   strcat(comando,comilla);                    //strcat(comando,comilla);

(commando is a string containing the command that will be sent to the system, strcpy copies one string into another, and strcat concatenates two strings, those lines build the command which will be run)

Hope it works
Marcos

Last edited by marcos daniel (28-05-2020 04:25)

Re: Install Pianoteq on Odroid-N2

marcos daniel wrote:

Well I've just tried the code and it works on Odroid XU4 with Armbian.
Here you are the output:


marcos@odroidxu4:~/Desktop$ gcc doc.c -o doc
marcos@odroidxu4:~/Desktop$ taskset 0xF0 nice --10 ./doc

Test start

Press ctrl + c to cancel
delay between notes: 100.00 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
Try number 1
Did audio fail? y/n, t to terminate
n
delay between notes: 50.00 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
Try number 2
Did audio fail? y/n, t to terminate
n
delay between notes: 25.00 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
Try number 3
Did audio fail? y/n, t to terminate
n
delay between notes: 12.50 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
CPU overload detected. Your CPU is not powerful enough, or the power-saving settings of your computer are too aggressive. You can adjust the performance of Pianoteq, or disable CPU overload detection, in the 'Perf' tab of the 'Options' dialogue.
Try number 4
Did audio fail? y/n, t to terminate
y
delay between notes: 18.75 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
CPU overload detected. Your CPU is not powerful enough, or the power-saving settings of your computer are too aggressive. You can adjust the performance of Pianoteq, or disable CPU overload detection, in the 'Perf' tab of the 'Options' dialogue.
Try number 5
Did audio fail? y/n, t to terminate
y
delay between notes: 21.88 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
Try number 6
Did audio fail? y/n, t to terminate
n
delay between notes: 20.31 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
Try number 7
Did audio fail? y/n, t to terminate
n
delay between notes: 19.53 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
Try number 8
Did audio fail? y/n, t to terminate
n
delay between notes: 19.14 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
CPU overload detected. Your CPU is not powerful enough, or the power-saving settings of your computer are too aggressive. You can adjust the performance of Pianoteq, or disable CPU overload detection, in the 'Perf' tab of the 'Options' dialogue.
Try number 9
Did audio fail? y/n, t to terminate
y
delay between notes: 19.34 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
CPU overload detected. Your CPU is not powerful enough, or the power-saving settings of your computer are too aggressive. You can adjust the performance of Pianoteq, or disable CPU overload detection, in the 'Perf' tab of the 'Options' dialogue.
Try number 10
Did audio fail? y/n, t to terminate
y
delay between notes: 19.43 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
CPU overload detected. Your CPU is not powerful enough, or the power-saving settings of your computer are too aggressive. You can adjust the performance of Pianoteq, or disable CPU overload detection, in the 'Perf' tab of the 'Options' dialogue.
Try number 11
Did audio fail? y/n, t to terminate
y
delay between notes: 19.48 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
Try number 12
Did audio fail? y/n, t to terminate
n
delay between notes: 19.46 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
CPU overload detected. Your CPU is not powerful enough, or the power-saving settings of your computer are too aggressive. You can adjust the performance of Pianoteq, or disable CPU overload detection, in the 'Perf' tab of the 'Options' dialogue.
Try number 13
Did audio fail? y/n, t to terminate
y
delay between notes: 19.47 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
CPU overload detected. Your CPU is not powerful enough, or the power-saving settings of your computer are too aggressive. You can adjust the performance of Pianoteq, or disable CPU overload detection, in the 'Perf' tab of the 'Options' dialogue.
Try number 14
Did audio fail? y/n, t to terminate
y
delay between notes: 19.48 milisegundos
Command to run is: "./Pianoteq" --headless --play-and-quit --midi miditest.mid; string size: 59
Current preset: Steinway D Prelude, instrument: Grand Steinway D
CPU overload detected. Your CPU is not powerful enough, or the power-saving settings of your computer are too aggressive. You can adjust the performance of Pianoteq, or disable CPU overload detection, in the 'Perf' tab of the 'Options' dialogue.
Try number 15
Did audio fail? y/n, t to terminate
t
Total attemps: 15, final delay between notes: 19.48
marcos@odroidxu4:~/Desktop$



I remember I have had running issues on MS Windows with the same code, so I had to add quotation marks (", named comillas in spanish) in lines 118-120. So I would try removing them, on XU4 it the program runs with or without them, who knows, perhaps it runs.

For this you should comment out line 118, change strcat in line 119 to strcpy and comment out line 120

line    original code:                                      new code:
118   strcpy(comando,comilla);                   //strcpy(comando,comilla);     
119   strcat(comando,pianoteq);                 strcpy(comando,pianoteq);
120   strcat(comando,comilla);                    //strcat(comando,comilla);

(commando is a string containing the command that will be sent to the system, strcpy copies one string into another, and strcat concatenates two strings, those lines build the command which will be run)

Hope it works
Marcos

Hello Marcos,
sorry for the delay - I have done some mechanical things this week  and had therefore no time for your benchmark test - but - it is not forgotten.
When my system is up and running again I will try it again.
Then afterwards I will start optimizing the kernel in the direction "Real-Time".
Best regards,
Neo

Re: Install Pianoteq on Odroid-N2

marcos daniel wrote:

I'll follow your project, by the way, using the XU4q and an ESI UDJ6 soundcard in stereo mode, for the 4 big cores, here you have the results of my glissandi benchmark:

SampleRate / buffer size / polyphony / worst result / latency
44.1 kHz / 64 samples / 96 polyphony: 24.2 ms between notes, then there are fails. Latency: 13.2 ms (average of 5 measurements with an oscilloscope)
44.1 kHz / 128 samples / 96 polyphony: 19.1 ms between notes, latency: 21.9 ms
48 kHz / 64 samples / 96 polyphony: 39.3 ms between notes, latency: 12.1 ms
48 kHz / 128 samples / 96 polyphony: 41.21 ms between notes, latency: 20.3 ms
32 kHz / 96 samples / 96 polyphony: 6.74 ms between notes (insane!), latency: 17.9 ms

I'd like to know how it compares to the N2
Kind Regards
Marcos

Hello Marcos,
here  are my first results according to your settings, but without priorisation of the tasks -> no optimisation. Further on I have no idea how you have measured the latency:

SampleRate / buffer size / polyphony / worst result
44,1 kHz, 128sample, 96 polyphony: 12.28 ms
44,1 kHz, 64sample, 96 polyphony: 13.28 ms
48 kHz, 64sample, 96 polyphony: 18.55 ms
48 kHz, 128 sample, 96 polyphony: 23.05 ms
32 kHz, 64 sample, 96 polyphony: 3.43ms

You can find the output of your benchmark on : http://www.belleart.org/bluespice/index...cos_Daniel

About latency I think you have to measure the time between a MIDI-Event and the result coming out of the audio-interface. What do you think about that?
And another question regarding the task priorisation: From where do you have the information about the CPU-core numbering and the value of the priorisation with "nice"?

Best regards,
Neo

Re: Install Pianoteq on Odroid-N2

Hello!
Wow those figures are impressive!
I believe the N2 is noticeable superior to the XU4Q, not only in performance, but because XU4 throttles after a couple of minutes of intensive use, and N2 does not.

I deduced the numbers of cpu by stressing one by one and looking the load on htop at a terminal.
To stress the cores, I used at first sysbench.
I have 8 cores, so the first one is 00000001, the second one 00000010, and so on... quite artesanal procedure, nothing fancy. The numbers are in agreement with those shown by htop.
To measure the latency, I used a digital oscilloscope and a Teensy microcontroller.
I sent a MIDI message with a Teensy microcontroller over USB. At the same time I sent the message, I set a pin high, this pin triggered the oscilloscope, one audio output of the sound card was connected to another channel of the oscilloscope. Finally I read the delay with the cursor on the scope screen. (I don't know how familiar are you with oscilloscopes, I can only give then basic usage).
By the way, your project looks impressive!

Re: Install Pianoteq on Odroid-N2

marcos daniel wrote:

Hello!
Wow those figures are impressive!
I believe the N2 is noticeable superior to the XU4Q, not only in performance, but because XU4 throttles after a couple of minutes of intensive use, and N2 does not.

I deduced the numbers of cpu by stressing one by one and looking the load on htop at a terminal.
To stress the cores, I used at first sysbench.
I have 8 cores, so the first one is 00000001, the second one 00000010, and so on... quite artesanal procedure, nothing fancy. The numbers are in agreement with those shown by htop.
To measure the latency, I used a digital oscilloscope and a Teensy microcontroller.
I sent a MIDI message with a Teensy microcontroller over USB. At the same time I sent the message, I set a pin high, this pin triggered the oscilloscope, one audio output of the sound card was connected to another channel of the oscilloscope. Finally I read the delay with the cursor on the scope screen. (I don't know how familiar are you with oscilloscopes, I can only give then basic usage).
By the way, your project looks impressive!

Hello Marcos,
most of the work on my project is done - yesterday I tested the MIDI implementation in conjunction with my Doepfer 88-key master-keyboard. .....and I couldn't stop - it was so exciting!
About the XU4Q - sorry - I had totally forgotten that it has 8 cores and was wondering why you are not using all 8 cores. (I use my XU4 just as a tftp-server and I have made no change on it for a long time. And by the way - I am very familiar with oscilloscopes - this is part of my profession ;-) )

I have just updated my "project web-site", so you can take a look on my progress. Sometimes documentation costs more time than the work itself ;-)
-> http://www.belleart.org/bluespice/index..._Odroid-N2

In the near future I will provide also the complete Operating-System-Image on this page .....ready to be used......then the only thing which will be needed is to install Pianoteq .....

Re: Install Pianoteq on Odroid-N2

Hello, I believe documentation costs, since you are doing it very complete!
I had at first the idea of recompiling linux kernel using just necessary modules, and run Odroid without screen (runlevel 2 or 3) but I'm just a hobbyist with very little time (I'm chemist of profession and have just basic knowledge of electronics and informatics). My idea was to make boot time as short as possible. I'm currently using a little box with a Teensy-LC microcontroller to choose instruments and set volume by sending MIDI messages.
By the way, I use only four big cores of the XU4 because even tough it has a little less performance, it is more consistent than using all cores.
Kind regards,
Marcos

Re: Install Pianoteq on Odroid-N2

There was a big mistake on my web-site which describes the build process of my prototype piano expander -> THERE WAS A TYPO IN THE NAME "PIANOTEQ". I have corrected the website and it is available here:

http://www.belleart.org/bluespice/index..._Odroid-N2 http://www.belleart.org/bluespice/index...Odroid-N2]

If someone has bookmarked this page - please correct also your bookmark.

Regards,
Neo

Last edited by Neo (15-06-2020 22:23)

Re: Install Pianoteq on Odroid-N2

sjgcit wrote:

My obvious question is how do these different settings play ?

I've never found these numbers particularly useful, and artificial stress tests don't really give me (and I presume others) any way to connect performance with real playing, so I'd be interested in seeing if you can tell me what these different numbers feel like when playing.

Thanks.

I had not seen this, sorry. The stress test gives an idea of relative performance among different computers, this was my idea, let's say PT works well on a PC, any PC with the same score should run it well.
In my case, setups which can run the test without failure below 20ms of delay between notes, are good enough to play the hardest pieces I play (Beethoven sonata 21 or 23, chopin polonaises or ballades). Of course if you want to play a Bach invention, requeriments are much less.