Python i MIDI

Przymierzam się do napisania edytora brzmień do mojego syntezatora Korg Triton Le, na początek zrobiłem kilka eksperymentów w pythonie, żeby zobaczyć jak sprawnie będzie szła komunikacja z interfejsem MIDI. Do komunikacji z syntezatorem używam interfejsu USB-MIDI Roland UM-ONE.

Na początek zainstalowałem bibliotekę rtmidi (https://github.com/patrickkidd/pyrtmidi) i sprawdziłem czy wykrywa ona prawidłowo porty MIDI.

import rtmidi
import random
import time

midiout = rtmidi.RtMidiOut()
ports = range(midiout.getPortCount())

if ports:
print("Available MIDI output ports:")

for i in ports:
print(str(i) + ': ' + midiout.getPortName(i))

else:
print('No MIDI output ports available')
exit()

Po wykonaniu powyższego kodu otrzymałem:

Available MIDI output ports:
0: Midi Through 14:0
1: UM-ONE 28:0

Jest dobrze, python widzi mój interfejs.

Poeksperymentowałem trochę z wysyłaniem komunikatów MIDI do urządzenia i w rezultacie napisałem poniższy kod: (więcej…)

Dostęp do kontenera dockera z telefonu w sieci lokalnej

Problem:
Piszemy aplikację, która działa sobie na kontenerach dockera na komputerze programisty z systemem Ubuntu.

Chcemy zobaczyć jak aplikacja działa na telefonie komórkowym, bądź innym urządzeniu w sieci lokalnej.

Założenia:
W celu udostępnienia aplikacji w sieci lokalnej postawimy na komputere proxy rzy pomocy Squida.

Rozwiązanie:

(więcej…)

Oprogramowanie deweloperskie z lat 80-90.

Mamy rok 2019 a w mojej szufladzie wciąż leżą dwie dyskietki 5.25″. Nie sądzę, żeby się jeszcze kiedyś do czegoś przydały, traktuję je raczej jak namacalny fragment poprzedniej epoki w historii IT.

Dyskietki 5,25″ „KL100 (Keil 8051) Professional Development Package Demo” oraz „Wgłąb języka C”.

Pierwsza dyskietka to dodatek do książki „Wgłąb języka C” Adama Sapka, zawiera ona kod źródłowy do przykładów z książki.

Druga to „KL100 (Keil 8051) Professional Development Package (Demo)”. Dość enigmatyczna nazwa, ale po małej wizycie u wujka google, dowiadujemy się, że jest to oprogramowanie do programowania 8-bitowych mikrokontrolerów 8051, powstałych na początku lat osiemdziesiątych poprzedniego wieku. Z lekką dozą przesady można powiedzieć, że to takie ówczesne arduino 😉

Izometryczny widok w c++

Jeśli czytaliście moje wcześniejsze posty, wiecie już że co jakiś czas biorę pod lupę różne narzędzia programistyczne do tworzenia gier – biblioteki, frameworki, „silniki”. W ostatnich dniach chodziło mi po głowie przypomnienie sobie dwóch rzeczy – pierwsza z nich to techniki tworzenia gier z widokiem izometrycznym, druga to język c++, którego ostatnio mało używałem, a którego fanem jestem właściwie od początku mojej przygody z programowaniem. Utworzyłem zatem nowy projekt w języku c++ i dołączyłem do niego bibliotekę SDL, która daje duże możliwości w zakresie wyświetlania rzeczy na ekranie. Po stosunkowo niedługim czasie przebijania się przez uroki języka c++ (wskaźniki, zwalnianie pamięci) oraz zakamarków matematyki (przeliczanie współrzędnych 2D -> ISO) wygenerowałem pierwszy izometryczny świat, narazie nieco płaski i niezbyt interesujący, ale stanowić to będzie doskonałą podstawę do dalszych eksperymentów.

(więcej…)

Uczę dziecko programować

Jakiś czas temu moja sześcioletnia córka miała powiedzieć w przedszkolu czym zajmują się rodzice i bezbłędnie powiedziała że jestem programistą, ale do końca nie wiedziała o co w tym chodzi.

Dziś, gdy siedziałem i czytałem książkę o Pythonie, przyszła do mnie mówiąc jakie obliczenia matematyczne umie robić. Jako że miałem komputer z odpalonym linuksem pod ręką, odpaliłem interpreter pythona i zacząłem wpisywać równania, które mówiła córka: 1+1, 2+2, później odejmowanie, a nawet pokazałem jej dzielenie i co się dzieje gdy podzielimy przez zero. Widziałem w jej oczach zainteresowanie, więc zacząłem opowiadać że to właśnie na tym polega programowanie, że mówimy komputerowi żeby coś policzył a on to bardzo szybko robi. Aby pokazać że nie tylko o liczenie możemy poprosić nasz komputer wpisałem w pythonie:

>>> import turtle
>>> turtle.forward(50)
>>> turtle.left(90)
>>> turtle.forward(50)

Na ekranie zaczęło się coś rysować, a rysowanie to jest hobby mojej córki, więc zainteresowanie się nasiliło do tego stopnia, że już po chwili mieliśmy narysowany prosty domek.

(więcej…)

Praca z time trackerami

Czasami ludzie pytają mnie gdzie pracuję, odpowiadam że w domu. Często wtedy jestem wypytywany o szczegóły, zwłaszcza jeśli mój rozmówca nie miał wcześniej styczności z pracą zdalną. No i gdy tak opowiadam o tajnikach sztuki „remote work”, rozmowa w którymś momencie dojdzie do momentu: „masz fajnie, bo nikt cię nie kontroluje…”, no i wówczas tłumaczę, że używam aplikacji do logowania czasu pracy, które również robią zrzuty ekranu. I w tym momencie dla czar pryska, rozmówca zaczyna szukać drugiego dna, inwigilacji, ograniczenia wolności osobistych i tym podobnych straszności.

Tutaj dochodzimy do tematu niniejszego artykułu: jak się pracuje z time-trackerami i dlaczego nie jest to takie straszne.

(więcej…)

Microsoft udostępił źródła MS-DOS

Na swoim profilu GitHub, Microsoft udostępił źródła systemu MS-DOS w wersjach 1.25 oraz 2.0. Kod jest napisany w assemblerze.

Ciekawie wyglądają daty commitów:

Źródła znajdziecie tutaj: https://github.com/Microsoft/MS-DOS

Dajcie znać w komentarzach czy znaleźliście jakieś ciekawostki w kodzie tego historycznego już systemu operacyjnego.

Dlaczego firmy z USA wybierają polskich programistów.

Trafiłem ostatnio na ciekawy tekst na blogu pewnej amerykańskiej firmy.

We wpisie tym, autor opowiada co firmom z USA podoba się w polskich programistach i generalnie pracownikach branży IT i dlaczego decydują się na outsourcing do Polski.

Nie będę przytaczał tutaj cytatów, podzielę się linkiem do artykułu: (więcej…)

Framework do mini gier w Ionic i HTML5 Canvas

Mam chwilowy zastój w projektach i korzystając z tej okazji postanowiłem spróbować napisać jakąś prostą grę w Ionicu z użyciem HTML5 canvas i na bazie tych technologii stworzyć własny framework do pisania mini gierek i napisać jakieś gierki.

Przykład gry napisanej w Ionicu

(więcej…)