Hello World w QtQuick2.

QtQuick jest fascynujące:

Animacje to nawet nie kilka linijek kodu… a za ich wyświetlanie odpowiada OpenGL lub OpenGL ES 2.0.

QtQuick może być też osadzone w klasycznym oknie QWindow:

qmlAle póki co, nadal w Qt-5.5.1 nie działa to na Androidzie (QtQuick i QWidgets to dwie osobne powierzchnie wyświetlania w OpenGL, na Antku nie jest to póki co obsługiwane i może być albo QtQuick albo QWidgets).


ui->setupUi(this);

QQuickView *view = new QQuickView;
QWidget *container = QWidget::createWindowContainer(view, this);
view->setSource(QUrl::fromLocalFile("main.qml"));

ui->verticalLayout->addWidget(container);

Reklamy

c++11 fun.

Nigdy nie lubiłem C++98, ale C++{11,14} chyba polubię. Jakieś takie toto mniej odstraszające, a z boost da się robić ciekawe rzeczy…


#include <iostream>
#include <boost/range/irange.hpp>

using namespace std;

int main() {
   auto fib = [] (int n) {
      int a = 0, b = 1;
      for (auto i: boost::irange(0, n)) {
         swap(a, b);
         b += a;
      }
      return a;
};

for (auto i: boost::irange(0, 20))
   cout << fib(i) << " ";
}

$ ./lambda.exe
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181

Małe kroczki…

Cieszą najbardziej 😉

sio2usb_fd

Cały widz polegał na tym, że aby uzyskać uprawnienia, trzeba to robić w  wątku UI Androida. Dzięki Bogdanowi Vatrze i jego prezentacji „Crash course…” wiem jak to zrobić ładnie w BroadcastReceiverze przez runOnUiThread(). A żeby coś zwrócić do QT, trzeba to zakolejkować jako funkcję do wykonania w wątku UI QT, bo to dwa osobne wątki… Piękny design i superowa zabawa :). Mam nadzieję, że teraz już będzie z górki.

 

Yamaha DTX-400 i Krigg Triggera.

Postanowiłem wymienić KU-100 (silent kick pedal) Yamahy na mechaniczny pedał stopy z triggerem piezoelektrycznym. Wybór padł na Krigg Triggera + tani pedał stopy Basix PD-600 V3. Pedał bardzo fajny z napędem łańcuszkowym, a co najważniejsze – oddzielnym uchwytem bijaka. Po zdemontowaniu, jak widać na zdjęciach poniżej, zostaje tylko uchwyt łańcuszka. Wygląda na niezniszczalny.

Działa świetnie ;). Tylko trochę ciężko się samemu nagrać.

Do pełni szczęścia trzeba ustawić w DTX-400 charakterystykę prędkości na 3 (Song + Kit potem 5 i 1, kick i wpisać wartość 3) żeby było głośno i wyraźnie nawet przy lekkim graniu. Odstęp między mocowaniem łańcuszka a przetwornikiem ustawiłem na 4-5mm, a punkt styku mocowania łańcuszka z gumą przetwornika podkleiłem taśmą izolacyjną (zostają ślady po uderzaniu metalu o gumę).

Fsthost-svn + Hybrit + Lecab2 na Tahr Puppy (RT) :)

Fsthost-svn da się skompilować bez GTK i lash:

make GTK=0 LASH_PRESENT=0 PLAT=32

a mimo to, dodanie opcji -l -s plik.fps i potem kill -SIGUSR1 <pid> zapisuje stan wtyczki 🙂 (wielkie dzięki dla autora za wskazówki i cierpliwość).

chrt -f -p 89 `pidof jackd`
export WINE_RT=10; export WINE_SRV_RT=5
set_rlimits /usr/bin/fsthost -s ~/fsthost/brit.fps ~/poulin/HyBrit.dll&
set_rlimits /usr/bin/fsthost -s ~/fsthost/lecab.fps ~/poulin/Poulin_LeCab2_Rev1.dll&

i na wszelki wypadek:

pids=`pidof fsthost.so`
for pid in $pids; do chrt -f -p $pid; done

DSP load na poziomie <20% i brak xruns :). Co ciekawe, jak obciążę procesor np. klikoma pustymi pętlami while 1: pass, DSP run spada do 10-11%. Nadal uważam, że to zdecydowanie za dużo. Vsthost z dużym pluginem, typu GR5 generuje DSP load do 3% przy znacznie większej liczbie uruchomionych efektów… Ale raczej pozostanie to jako zagadka. Faktem jest, że te pluginy pod Linuksem działają lepiej jak pod Windows.

set_rlimits, bo w Puppim nie ma pam i /etc/security/limits.conf, a wine z łatką rt ma problem z priorytetami bez tego (trzeba przeedytować /etc/set_rlimits.conf).