Grandorgue und Odroid U3

  • Ein freundliches Hallo an alle Forenmitglieder.

    Zur Zeit midifiziere ich eine alte Dr. Böhm mit zwei Manualen und 30 Tasten Pedal. Ich bin auf den Mini-Computer Odroid U3 gestoßen, auf dem Lubuntu läuft. Nun möchte ich gerne Grandorgue auf dem kleinen Teil zum laufen bringen, bin aber absoluter Linux Neuling. Ich hoffe Ihr könnt mir da helfen. Wäre schon klasse wenn ich mit Eurer Hilfe den kleinen Zwerg in die Orgel einbauen könnte!

    Vorab vielen Dank!

    Liebe Grüße,
    Stephan

  • Da das ein Ubuntu-System ist, gilt die Universal-Anleitung für Debian/Ubuntu (vgl. http://mps-net.de/orgel/seite/in…428&entries=0):

    Du musst den Odroid U3 mit Ubuntu starten und er sollte auch im Netzwerk eingebunden sein.
    Nach der Anmeldung kommst du zum Linux-Desktop von Ubuntu.

    Von http://download.opensuse.org/repositories/h…/xUbuntu_14.10/
    lädst du die dsc, diff.gz und orig.tar.gz Datei in ein Verzeichnis auf den Odroid U3 herunter.

    Dann startet du ein Terminal am Odroid U3

    Installieren der Build-Tools:

    Code
    sudo apt-get update
    sudo apt-get install build-essential fakeroot

    2)
    Entpacken des Source-Codes:

    Code
    cd ~
    mkdir gobuild
    cd gobuild
    dpkg-source -x ~/Downloads/grandorgue_0.3.1.1818.dsc


    Der Pfad/Name zur dsc-Datei muss entsprechend angepasst werden

    3) Umwandeln (wenn du schon im gobuild-Verzeichnis bist]

    Code
    cd grandorgue-*
    dpkg-buildpackage -rfakeroot


    Es wird wegen ein paar fehlender Packete schreiben - mittels "sudo apt-get install xxx" nachinstallieren und dpkg-buildpackage wiederholen.

    Die debs kannst du dann mittels "sudo dpkg -i <name.deb>" installieren.


    PS: Wenn der Build geklappt hat, würde mich der Output vom Leistungstest interessieren:

    Code
    cd ~
    mkdir gobuild
    cd grandorgue-*
    make test

    Der Rasberry Pi erreicht zB: nicht mehr als 52-113 an Polyphonie:

  • Hallo,

    ich selbst habe ein Odroid-U3 und betreibe darauf meine eigene Cloud (ownCloud).
    Ich möchte gerne mitteilen dass die Inbetriebname nicht trivial ist - sie ist aber auch kein Hexenwerk.

    Im Prinzip sollte man zunächst darauf achten die nötigen Anschlusskabel zu haben, das U3 hat nur einen Micro-HDMI Port und so sollte man einen Adapter dafür haben - entweder auf "normales" HDMI oder DVI geht auch.

    Als nächstes ist es ratsam statt einer Micro-SD Karte ein eMMC Modul als Speicher zu nutzen da schneller.
    Im Shop (Hardkernel bzw. in pollin.de) kann man diese Module mit einem vorinstalliertem Lubuntu bestellen, was ratsam ist. Falls man es unbedingt selbst machen will (so wie ich ^^) müsste man eines der Lubuntu Images von Hardkernel herunterladen - es wird nicht der standard Linux Kernel verwendet - und mittels dd selbst auf das Modul flashen, wofür man ein eMMC auf Micro-SD sowie Micro-SD auf USB Adapter benötigt.

    Ein Problem dass ich festgestell habe ist dass die Images auf die englische Sprache voreingestellt sind.
    Es war nicht ganz leicht die Sprache an den unterschiedlichen Stellen zu ändern (z.B. hatte ich das Problem dass zwar Lubuntu selbst auf Deutsch war, der Login-Screen aber nicht und man statt z ein y eingeben musste...).

    Die Inbetriebname ist wie gesagt etwas kompliziert - jedoch durchaus kein Hexenwerk und mit ein wenig Geduld möglich.
    Booten tut das gute Stück relativ schnell und allein von den Leistungsdaten her könnte ich mir vorstellen dass z.B. die Wildervank gut darauf läuft. Immerhin tat sie das auf meinem damaligen Orgel-PC, einem 3Ghz Single-Core.
    Und das hier ist ein 1,7Ghz Quad-Core!

    Ausprobiert habe ich es freilich nicht, es ist bei mir eben ein anderer Einsatzzweck vorgesehen.
    Naja, vielleicht wird mir ja über die Feiertage langweilig und wer weiß? :D

    Gruß,
    Michael

    • Offizieller Beitrag

    Hallo und willkommen !

    Prima - für mich wieder ein spannendes Thema. Mit dem Gedanken an einen Odroid spiele ich ja schon seit meiner Zwergen-Orgel mit dem Raspberry Pi. Sind diese Dinger jetzt einfacher erhältlich? Und wo?
    Oder gibt es inzwischen nicht schon wieder bessere Nachfolger?

    Orgelfreund01: In einer Dr. Böhm hätte doch sicher auch ein größeres standard PC Board platz. Warum soll es denn gerade ein Odroid sein?

    Gruß Michael

  • Vielen Dank für die schnelle Antwort und das Interesse an diesem Projekt. Ich werde mich als Linux-Neuling am Wochenende daran versuchen. Wenn das denn dann so klappt- freue ich mich schon auf das Ergebnis. Den Odroid U3 gibt es bei Pollin.de. Ich fand das Preis- Leistungsverhältnis interessant.

    Liebe Grüße,
    Stephan

  • Pollin.de ist mW. der offizielle Partner von Hardkernel in Deutschland.
    Auf Hardkernel oder in der Bucht bekommt man es noch etwas günstiger.
    Wie gesagt bei der Bestellung darauf achten die richtigen Speichermodule und die benötigten Adapter zu haben.

    Gruß,
    Michael

  • Zitat

    Ich fand das Preis- Leistungsverhältnis interessant.

    Die Einchipgeräte sind klein und billig, aber nicht unbedingt das Optimum für GO.

    Die Speichergröße ist mit 2 GB fixiert und nicht erweiterbar. Es gibt zwar einige Samplesets, die klein genug sind - der Trend geht aber in Richtung größere Samplesets.
    Das die CPU nur 32 Bit ist, spielt hier keine Rolle, da nur 2 GB RAM verfügbar sind.

    Als Festplattenersatz steht nur USB 2.0 (40 MB/s), Micro-SD (25 MB/s) oder eMMC (104 MB/s) zur Verfügung.
    [Daten lt. http://en.wikipedia.org/wiki/Comparison_of_memory_cards ]
    Bei meinen PC erreiche ich mit normalen Festplatten schon >=150 MB/s - bei SSD geht noch mehr.
    Die 2 GB RAM schränken die zu ladende Datenmenge ein, so das die langsamen Datenträger nicht so sehr ins Gewicht fallen.

    Ein Problemfeld von dieser Hardware ist die Grafik-Einheit, für die es anscheind nur Binary-Only Treiber gibt. Das schränkt dich auf vom Hersteller unterstützte Versionen von Linux-Distributionen ein, da man einen passen Kernel und/oder X Server braucht. Ein Update auf die nächste Version der Linux-Distribution kann (ohne Unterstüzung vom Hersteller) von einer Bastelei bis zum Ding der Unmöglichkeit werden.

    Die ARM CPUs sind von den diversen Chipherstellen nach den Baukastenprinzip zusammengestellt, daher ist es schwieriger, exakte Information dazu zu finden. Ich wäre wirklich an den GO Benchmark-Resultaten von Ondroid U3 interessiert, um mir eine Meinung über diese CPU bilden zu können.
    Atomare Operationen, eine gute Performance beim unaligned Memory Access und eine hohe Floating-Point Performance (von nicht Vektor Operationen) würden für GO nützen.

  • Hallo Martin,

    ich habe nun versucht Deiner Anleitung zu folgen. Es wurde alles in gobuild entpackt, jedoch bei dem Versuch eine deb.Datei zu erstellen habe ich folgendes als Fehler erhalten:

    odroid@odroid:~/gobuild/grandorgue-0.3.1.1818$ dpkg-buildpackage -rfakeroot
    dpkg-buildpackage: source package grandorgue
    dpkg-buildpackage: source version 0.3.1.1818
    dpkg-buildpackage: source distribution unstable
    dpkg-buildpackage: source changed by Martin Koegler <martin.koegler@chello.at>
    dpkg-buildpackage: host architecture armhf
    dpkg-source --before-build grandorgue-0.3.1.1818
    dpkg-checkbuilddeps: Unmet build dependencies: po4a
    dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting
    dpkg-buildpackage: warning: (Use -d flag to override.)

    Nun komme ich nicht weiter. Hast Du da eine Hilfestellung für mich?

    Liebe Grüße,
    Stephan

  • Ein ganz herzliches Danke!!! an Martin. Grandorgue läuft nun auf meinem Odroid U3. Die Audioeinstellungen waren noch zu ändern, aber nun läuft Grandorgue auf dem Zwerg. Klasse!!!
    :K

    Wenn ich aber den Leistungstest probiere erhalte ich folgendes:

    odroid@odroid:~$ cd ~
    odroid@odroid:~$ mkdir gobuild
    mkdir: cannot create directory ‘gobuild’: File exists
    odroid@odroid:~$ cd grandorgue-*
    bash: cd: grandorgue-*: No such file or directory
    odroid@odroid:~$ make test
    make: *** No rule to make target `test'. Stop.

    Da stimmt mit der Abfrage etwas nicht.

    Liebe Grüße,
    Stephan

  • Der Pfad war falsch. Richtig sollte sein:

    Code
    cd ~/gobuild/grandorgue-*/obj-*
    make test

    Man muss ins Build-Verzeichnis, das vom dpkg-buildpackage angelegt wird. Ich hoffe der Pfad passt so - ansonsten muss man ihn anpassen. Im Filemanager sollte die genaue Struktur ersichtlich sein (statt * kann man auch den exakten Namen ausschreiben).
    Ich bin wirklich auf das Ergebnis gespannt.

  • Hallo Martin,

    hier das was bei dem Test heraus gekommen ist. Es ist ein Fehler mit loop aufgetreten. Dennoch scheint Grandorgue zu funktionieren.

    odroid@odroid:~/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf$ make test/usr/bin/cmake -H/home/odroid/gobuild/grandorgue-0.3.1.1818 -B/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf --check-build-system CMakeFiles/Makefile.cmake 0
    make -f CMakeFiles/Makefile2 test
    make[1]: Entering directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    /usr/bin/cmake -H/home/odroid/gobuild/grandorgue-0.3.1.1818 -B/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf --check-build-system CMakeFiles/Makefile.cmake 0
    /usr/bin/cmake -E cmake_progress_start /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/CMakeFiles 76
    make -f CMakeFiles/Makefile2 bin/CMakeFiles/http://test.dir/all
    make[2]: Entering directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    make -f src/build/CMakeFiles/http://imageconverter.dir/build.make src/build/CMakeFiles/http://imageconverter.dir/depend
    make[3]: Entering directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    cd /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/odroid/gobuild/grandorgue-0.3.1.1818 /home/odroid/gobuild/grandorgue-0.3.1.1818/src/build /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/src/build /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/src/build/CMakeFiles/http://imageconverter.dir/DependInfo.cmake --color=
    make[3]: Leaving directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    make -f src/build/CMakeFiles/http://imageconverter.dir/build.make src/build/CMakeFiles/http://imageconverter.dir/build
    make[3]: Entering directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    make[3]: Nothing to be done for `src/build/CMakeFiles/http://imageconverter.dir/build'.
    make[3]: Leaving directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    /usr/bin/cmake -E cmake_progress_report /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/CMakeFiles
    [ 0%] Built target imageconverter
    make -f bin/CMakeFiles/http://golib.dir/build.make bin/CMakeFiles/http://golib.dir/depend
    make[3]: Entering directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    cd /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/odroid/gobuild/grandorgue-0.3.1.1818 /home/odroid/gobuild/grandorgue-0.3.1.1818/src/grandorgue /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/bin /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/bin/CMakeFiles/http://golib.dir/DependInfo.cmake --color=
    make[3]: Leaving directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    make -f bin/CMakeFiles/http://golib.dir/build.make bin/CMakeFiles/http://golib.dir/build
    make[3]: Entering directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    make[3]: Nothing to be done for `bin/CMakeFiles/http://golib.dir/build'.
    make[3]: Leaving directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    /usr/bin/cmake -E cmake_progress_report /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/CMakeFiles 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
    [ 53%] Built target golib
    make -f lib/rt/rtmidi/CMakeFiles/http://RtMidi.dir/build.make lib/rt/rtmidi/CMakeFiles/http://RtMidi.dir/depend
    make[3]: Entering directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    cd /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/odroid/gobuild/grandorgue-0.3.1.1818 /home/odroid/gobuild/grandorgue-0.3.1.1818/src/rt/rtmidi /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/lib/rt/rtmidi /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/lib/rt/rtmidi/CMakeFiles/http://RtMidi.dir/DependInfo.cmake --color=
    make[3]: Leaving directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    make -f lib/rt/rtmidi/CMakeFiles/http://RtMidi.dir/build.make lib/rt/rtmidi/CMakeFiles/http://RtMidi.dir/build
    make[3]: Entering directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    make[3]: Nothing to be done for `lib/rt/rtmidi/CMakeFiles/http://RtMidi.dir/build'.
    make[3]: Leaving directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    /usr/bin/cmake -E cmake_progress_report /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/CMakeFiles
    [ 53%] Built target RtMidi
    make -f lib/rt/rtaudio/CMakeFiles/http://RtAudio.dir/build.make lib/rt/rtaudio/CMakeFiles/http://RtAudio.dir/depend
    make[3]: Entering directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    cd /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/odroid/gobuild/grandorgue-0.3.1.1818 /home/odroid/gobuild/grandorgue-0.3.1.1818/src/rt/rtaudio /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/lib/rt/rtaudio /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/lib/rt/rtaudio/CMakeFiles/http://RtAudio.dir/DependInfo.cmake --color=
    make[3]: Leaving directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    make -f lib/rt/rtaudio/CMakeFiles/http://RtAudio.dir/build.make lib/rt/rtaudio/CMakeFiles/http://RtAudio.dir/build
    make[3]: Entering directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    make[3]: Nothing to be done for `lib/rt/rtaudio/CMakeFiles/http://RtAudio.dir/build'.
    make[3]: Leaving directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    /usr/bin/cmake -E cmake_progress_report /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/CMakeFiles
    [ 53%] Built target RtAudio
    make -f lib/fftw/CMakeFiles/http://fftw.dir/build.make lib/fftw/CMakeFiles/http://fftw.dir/depend
    make[3]: Entering directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    cd /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/odroid/gobuild/grandorgue-0.3.1.1818 /home/odroid/gobuild/grandorgue-0.3.1.1818/src/fftw /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/lib/fftw /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/lib/fftw/CMakeFiles/http://fftw.dir/DependInfo.cmake --color=
    make[3]: Leaving directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    make -f lib/fftw/CMakeFiles/http://fftw.dir/build.make lib/fftw/CMakeFiles/http://fftw.dir/build
    make[3]: Entering directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    make[3]: Nothing to be done for `lib/fftw/CMakeFiles/http://fftw.dir/build'.
    make[3]: Leaving directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    /usr/bin/cmake -E cmake_progress_report /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/CMakeFiles 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
    [ 97%] Built target fftw
    make -f lib/wavpack/CMakeFiles/http://WavPack.dir/build.make lib/wavpack/CMakeFiles/http://WavPack.dir/depend
    make[3]: Entering directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    cd /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/odroid/gobuild/grandorgue-0.3.1.1818 /home/odroid/gobuild/grandorgue-0.3.1.1818/src/wavpack /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/lib/wavpack /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/lib/wavpack/CMakeFiles/http://WavPack.dir/DependInfo.cmake --color=
    make[3]: Leaving directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    make -f lib/wavpack/CMakeFiles/http://WavPack.dir/build.make lib/wavpack/CMakeFiles/http://WavPack.dir/build
    make[3]: Entering directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    make[3]: Nothing to be done for `lib/wavpack/CMakeFiles/http://WavPack.dir/build'.
    make[3]: Leaving directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    /usr/bin/cmake -E cmake_progress_report /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/CMakeFiles 2
    [ 98%] Built target WavPack
    make -f lib/portaudio/CMakeFiles/http://PortAudio.dir/build.make lib/portaudio/CMakeFiles/http://PortAudio.dir/depend
    make[3]: Entering directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    cd /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/odroid/gobuild/grandorgue-0.3.1.1818 /home/odroid/gobuild/grandorgue-0.3.1.1818/src/portaudio /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/lib/portaudio /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/lib/portaudio/CMakeFiles/http://PortAudio.dir/DependInfo.cmake --color=
    make[3]: Leaving directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    make -f lib/portaudio/CMakeFiles/http://PortAudio.dir/build.make lib/portaudio/CMakeFiles/http://PortAudio.dir/build
    make[3]: Entering directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    make[3]: Nothing to be done for `lib/portaudio/CMakeFiles/http://PortAudio.dir/build'.
    make[3]: Leaving directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    /usr/bin/cmake -E cmake_progress_report /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/CMakeFiles 1
    [100%] Built target PortAudio
    make -f bin/CMakeFiles/http://perftest.dir/build.make bin/CMakeFiles/http://perftest.dir/depend
    make[3]: Entering directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    cd /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/odroid/gobuild/grandorgue-0.3.1.1818 /home/odroid/gobuild/grandorgue-0.3.1.1818/src/grandorgue /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/bin /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/bin/CMakeFiles/http://perftest.dir/DependInfo.cmake --color=
    make[3]: Leaving directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    make -f bin/CMakeFiles/http://perftest.dir/build.make bin/CMakeFiles/http://perftest.dir/build
    make[3]: Entering directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    make[3]: Nothing to be done for `bin/CMakeFiles/http://perftest.dir/build'.
    make[3]: Leaving directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    /usr/bin/cmake -E cmake_progress_report /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/CMakeFiles
    [100%] Built target perftest
    make -f bin/CMakeFiles/http://test.dir/build.make bin/CMakeFiles/http://test.dir/depend
    make[3]: Entering directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    cd /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/odroid/gobuild/grandorgue-0.3.1.1818 /home/odroid/gobuild/grandorgue-0.3.1.1818/src/grandorgue /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/bin /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/bin/CMakeFiles/http://test.dir/DependInfo.cmake --color=
    make[3]: Leaving directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    make -f bin/CMakeFiles/http://test.dir/build.make bin/CMakeFiles/http://test.dir/build
    make[3]: Entering directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    cd /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/bin && ./perftest /home/odroid/gobuild/grandorgue-0.3.1.1818/tests
    21:50:34: Error: 300 sampler, 9.999093 seconds, 8 bits, 44100, Y, Linear, 128 block: 6205 ms cpu time, limit: 483.437215
    21:50:34: Error: caught exception: No loop found

    21:50:34: Error: Error: No loop found
    21:50:34: Warning: Initialization of the memory pool failed (size: 523915264 bytes)
    21:50:34: Error: caught exception: No loop found

    21:50:34: Error: Error: No loop found
    21:50:34: Warning: Initialization of the memory pool failed (size: 523915264 bytes)
    21:50:34: Error: caught exception: No loop found

    21:50:35: Error: Error: No loop found
    21:50:35: Warning: Initialization of the memory pool failed (size: 523915264 bytes)
    21:50:35: Error: caught exception: No loop found

    21:50:35: Error: Error: No loop found
    21:50:35: Warning: Initialization of the memory pool failed (size: 523915264 bytes)
    21:50:35: Error: caught exception: No loop found

    21:50:35: Error: Error: No loop found
    21:50:35: Warning: Initialization of the memory pool failed (size: 523915264 bytes)
    21:50:35: Error: caught exception: No loop found

    21:50:35: Error: Error: No loop found
    21:50:35: Warning: Initialization of the memory pool failed (size: 523915264 bytes)
    21:50:35: Error: caught exception: No loop found

    21:50:35: Error: Error: No loop found
    21:50:35: Warning: Initialization of the memory pool failed (size: 523915264 bytes)
    21:50:35: Error: caught exception: No loop found

    21:50:35: Error: Error: No loop found
    21:50:35: Warning: Initialization of the memory pool failed (size: 523915264 bytes)
    21:50:35: Error: caught exception: No loop found

    21:50:35: Error: Error: No loop found
    21:50:35: Warning: Initialization of the memory pool failed (size: 523915264 bytes)
    21:50:35: Error: caught exception: No loop found

    21:50:35: Error: Error: No loop found
    21:50:35: Warning: Initialization of the memory pool failed (size: 523915264 bytes)
    21:50:35: Error: caught exception: No loop found

    21:50:35: Error: Error: No loop found
    21:50:35: Warning: Initialization of the memory pool failed (size: 523915264 bytes)
    21:50:35: Error: caught exception: No loop found

    21:50:35: Error: Error: No loop found
    21:50:35: Warning: Initialization of the memory pool failed (size: 523915264 bytes)
    21:50:35: Error: caught exception: No loop found

    21:50:35: Error: Error: No loop found
    21:50:35: Warning: Initialization of the memory pool failed (size: 523915264 bytes)
    21:50:35: Error: caught exception: No loop found

    21:50:35: Error: Error: No loop found
    21:50:35: Warning: Initialization of the memory pool failed (size: 523915264 bytes)
    21:50:35: Error: caught exception: No loop found

    21:50:35: Error: Error: No loop found
    21:50:35: Warning: Initialization of the memory pool failed (size: 523915264 bytes)
    21:50:35: Error: caught exception: No loop found

    21:50:35: Error: Error: No loop found
    21:50:35: Warning: Initialization of the memory pool failed (size: 523915264 bytes)
    21:50:35: Error: caught exception: No loop found

    21:50:35: Error: Error: No loop found
    make[3]: Leaving directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    /usr/bin/cmake -E cmake_progress_report /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/CMakeFiles
    [100%] Built target test
    make[2]: Leaving directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'
    /usr/bin/cmake -E cmake_progress_start /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/CMakeFiles 0
    make[1]: Leaving directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'

    Liebe Grüße,
    Stephan

  • Der Output zeigt, das es noch einen Fehler gibt, den ich suchen muss.

    Bezüglich der Leistung:
    Für den einigen ausgegeben Fall (8 Bit) ist der Wert 483 Samples im Vergleich zu Raspberry PI mit 108 (als pro Core 4.5 mal soviel). Hochgerechnet auf 4 Cores wirst du bei 8 Bit also nicht über eine Polyphonie von ca. 1900 hinauskommen - da noch andere Aufgaben zu tun ist (und für die Koordination der Cores auch Overhead anfällt) wird es in der Realität entsprechend weniger sein.

    PS:
    Zum Vergleich: Ein paar Jahre alter PC, seinerzeit in der 500 € Klasse war (Athlon II X2 250), kommt bei 8 Bit auf ein Limit von 2x 2600 Samples.

  • In /home/odroid/gobuild/grandorgue-0.3.1.1818/src/grandorgue/perftest.cpp
    steht:

    Code
    ainfo.percussive = false;
                            ainfo.min_attack_velocity = 0;
                            ainfo.max_playback_time = -1;
                            ainfo.cue_point = -1;
                            ainfo.release_end = -1;
                            ainfo.loops.clear();

    Da gehört noch die Zeile

    Code
    ainfo.attack_start = 0;


    eingefügt - irgendwo in den Block, zB. so:

    Code
    ainfo.percussive = false;
                                    ainfo.min_attack_velocity = 0;
                                    ainfo.max_playback_time = -1;
                                    ainfo.attack_start = 0;
                                    ainfo.cue_point = -1;
                                    ainfo.release_end = -1;
                                    ainfo.loops.clear();

    Dann sollte das "make test" hoffentlich mehr Werte liefern.

  • Hallo Martin,

    danke für Deine schnelle Antwort!

    Hier das Ergebnis des Tests:

    cd /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/bin && ./perftest /home/odroid/gobuild/grandorgue-0.3.1.1818/tests
    08:35:41: Error: 300 sampler, 9.999093 seconds, 8 bits, 44100, Y, Linear, 128 block: 6215 ms cpu time, limit: 482.659359
    08:35:49: Error: 300 sampler, 9.999093 seconds, 8 bits, 44100, N, Linear, 128 block: 6260 ms cpu time, limit: 479.189763
    08:36:03: Error: 300 sampler, 9.999093 seconds, 16 bits, 44100, Y, Linear, 128 block: 9655 ms cpu time, limit: 310.691654
    08:36:11: Error: 300 sampler, 9.999093 seconds, 16 bits, 44100, N, Linear, 128 block: 5965 ms cpu time, limit: 502.888167
    08:36:25: Error: 300 sampler, 9.999093 seconds, 24 bits, 44100, Y, Linear, 128 block: 10325 ms cpu time, limit: 290.530549
    08:36:36: Error: 300 sampler, 9.999093 seconds, 24 bits, 44100, N, Linear, 128 block: 7410 ms cpu time, limit: 404.821581
    08:36:51: Error: 300 sampler, 9.984000 seconds, 8 bits, 48000, Y, Polyphase, 1024 block: 13875 ms cpu time, limit: 215.870275
    08:37:07: Error: 300 sampler, 9.984000 seconds, 8 bits, 48000, N, Polyphase, 1024 block: 13885 ms cpu time, limit: 215.714805
    08:37:21: Error: 300 sampler, 9.984000 seconds, 16 bits, 48000, Y, Polyphase, 1024 block: 9860 ms cpu time, limit: 303.772826
    08:37:36: Error: 300 sampler, 9.984000 seconds, 16 bits, 48000, N, Polyphase, 1024 block: 13100 ms cpu time, limit: 228.641226
    08:37:51: Error: 300 sampler, 9.984000 seconds, 24 bits, 48000, Y, Polyphase, 1024 block: 10570 ms cpu time, limit: 283.368029
    08:38:10: Error: 300 sampler, 9.984000 seconds, 24 bits, 48000, N, Polyphase, 1024 block: 16695 ms cpu time, limit: 179.407012
    08:38:19: Error: 300 sampler, 9.984000 seconds, 8 bits, 48000, Y, Linear, 1024 block: 6750 ms cpu time, limit: 443.733342
    08:38:28: Error: 300 sampler, 9.984000 seconds, 8 bits, 48000, N, Linear, 1024 block: 6700 ms cpu time, limit: 447.044785
    08:38:41: Error: 300 sampler, 9.984000 seconds, 16 bits, 48000, Y, Linear, 1024 block: 9840 ms cpu time, limit: 304.390250
    08:38:50: Error: 300 sampler, 9.984000 seconds, 16 bits, 48000, N, Linear, 1024 block: 6360 ms cpu time, limit: 470.943406
    08:39:05: Error: 300 sampler, 9.984000 seconds, 24 bits, 48000, Y, Linear, 1024 block: 10510 ms cpu time, limit: 284.985734
    08:39:15: Error: 300 sampler, 9.984000 seconds, 24 bits, 48000, N, Linear, 1024 block: 7860 ms cpu time, limit: 381.068710
    make[3]: Leaving directory `/home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf'


    Liebe Grüße,
    Stephan

  • Also, im Vergleich zum Raspberry PI ist der Ondroid U3 wirklich günstig. Conrad hat das Model B für < 40€ auf seiner Webseite - der Ondroid U3 kommt auf <70€. Dafür hat er 4x so viel RAM (512M <=> 2GB) und 4 Cores, die jeweils ca. 4.5x so viel Leistung bringen (also bis zu das 16 fache).

    Der Raspberry PI ist noch ein Spielzeug, für ein kleine Sampleset ohne Spiel von Clustern ist er sicher nutzbar.

    Von der Leistungsfähigkeit von Desktop-Prozessoren ist das Ding noch weit entfernt. Ich habe einen perftest Resultat von einen Atom N550 gefunden - den sollte der Ondroid U3 schlagen.

  • In /home/odroid/gobuild/grandorgue-0.3.1.1818/CMakeLists.txt steht:

    Code
    elseif (CMAKE_BUILD_TYPE STREQUAL "Release")
       add_option(fomit-frame-pointer)
       add_option(O3)
       add_option(mmmx)
       add_option(msse)

    Da könnte man versuchen, die Liste noch zu erweitern:

    Code
    add_option(ffast-math)
       add_option(cpu=cortex-a9)
       add_option(mfpu=neon-fp16)

    Danach wieder ein "make test" und die Auswirkung auf den limit-Wert betrachten (Schwankungen durch sonstige Aktivität am System möglich - daher eventuell Durchschnitt von mehren "make test" verwenden).

    Man müsste schauen, ob die drei Optionen (oder nur ein Subset davon) mehr Leistung bringen. Wenn ja, kann man einen entsprechend optimierten GO Build erstellen.

    PS: Statt "neon-fp16" könnte man auch nur

    Code
    add_option(mfpu=neon)


    probieren.

  • Hallo Martin,

    hier das Ergebnis mit add_option(ffast-math)
    add_option(cpu=cortex-a9)
    add_option(mfpu=neon)


    cd /home/odroid/gobuild/grandorgue-0.3.1.1818/obj-arm-linux-gnueabihf/bin && ./perftest /home/odroid/gobuild/grandorgue-0.3.1.1818/tests
    13:22:28: Error: 300 sampler, 9.999093 seconds, 8 bits, 44100, Y, Linear, 128 block: 7135 ms cpu time, limit: 420.424375
    13:22:37: Error: 300 sampler, 9.999093 seconds, 8 bits, 44100, N, Linear, 128 block: 7185 ms cpu time, limit: 417.498666
    13:22:53: Error: 300 sampler, 9.999093 seconds, 16 bits, 44100, Y, Linear, 128 block: 11265 ms cpu time, limit: 266.287432
    13:23:03: Error: 300 sampler, 9.999093 seconds, 16 bits, 44100, N, Linear, 128 block: 6915 ms cpu time, limit: 433.800133
    13:23:20: Error: 300 sampler, 9.999093 seconds, 24 bits, 44100, Y, Linear, 128 block: 12010 ms cpu time, limit: 249.769185
    13:23:31: Error: 300 sampler, 9.999093 seconds, 24 bits, 44100, N, Linear, 128 block: 8655 ms cpu time, limit: 346.589014
    13:23:51: Error: 300 sampler, 9.984000 seconds, 8 bits, 48000, Y, Polyphase, 1024 block: 16990 ms cpu time, limit: 176.291940
    13:24:10: Error: 300 sampler, 9.984000 seconds, 8 bits, 48000, N, Polyphase, 1024 block: 16665 ms cpu time, limit: 179.729977
    13:24:25: Error: 300 sampler, 9.984000 seconds, 16 bits, 48000, Y, Polyphase, 1024 block: 10900 ms cpu time, limit: 274.788996
    13:24:44: Error: 300 sampler, 9.984000 seconds, 16 bits, 48000, N, Polyphase, 1024 block: 16710 ms cpu time, limit: 179.245964
    13:25:01: Error: 300 sampler, 9.984000 seconds, 24 bits, 48000, Y, Polyphase, 1024 block: 11740 ms cpu time, limit: 255.127774
    13:25:24: Error: 300 sampler, 9.984000 seconds, 24 bits, 48000, N, Polyphase, 1024 block: 20190 ms cpu time, limit: 148.350672
    13:25:34: Error: 300 sampler, 9.984000 seconds, 8 bits, 48000, Y, Linear, 1024 block: 7165 ms cpu time, limit: 418.032109
    13:25:43: Error: 300 sampler, 9.984000 seconds, 8 bits, 48000, N, Linear, 1024 block: 7355 ms cpu time, limit: 407.233183
    13:25:58: Error: 300 sampler, 9.984000 seconds, 16 bits, 48000, Y, Linear, 1024 block: 10555 ms cpu time, limit: 283.770731
    13:26:07: Error: 300 sampler, 9.984000 seconds, 16 bits, 48000, N, Linear, 1024 block: 6915 ms cpu time, limit: 433.145345
    13:26:24: Error: 300 sampler, 9.984000 seconds, 24 bits, 48000, Y, Linear, 1024 block: 12200 ms cpu time, limit: 245.508202
    13:26:37: Error: 300 sampler, 9.984000 seconds, 24 bits, 48000, N, Linear, 1024 block: 9500 ms cpu time, limit: 315.284217

    Liebe Grüße,
    Stephan