sunnuntai 16. marraskuuta 2014

Sailfish Midi 2

Midiprojekti etenee,  ehkä vähän hitaasti, mutta eteenee silti.
Kuvassa näkyvä numerot on kappaleen hetkellinen kohta ja kappaleen pituus.
Tämä luetaan c koodista python putkituksen ja threadin kautta puhelimen ruudulle.
(kuvassa sekunnin tarkuudella,  mahdollista vaikka nanosekunnin tarkkuudella)
C koodi on käännetty suoraan puhelimessa eikä SDK:ssa ... ja miksi näin ?
jostakin syystä minulla ei SDK:n ja emulaattorin kirjastoissa ei vaan kaikki täsmää.
tai sitten en vaan osaa.

Ohjelmassa toimii nyt tällä hetkellä:
Pause ja Resume
Duration ja Position näyttö
Seek eteen ja taakse

Haku tosin kestää noin 3-5 sek. mutta tähän on ehkä olemassa jotain parannusta.
Kappaletta voidaan myös soittaa erillä nopeudella, mutta siitä tuskin on mitään iloa, koska samalla äänenkorkeus muuttuu. Mielenkiintoista olisi yhdistää kuvaa ja ääntä, koska gstreamer mahdollistaa tämän aika helposti.

Se mikä ei toimi vielä.
Audio panorama, bluethoot yhteys, volume säätö ym.



Kuvassa näkyy ohjelman ottamat cpu ajat.
(värjätty punaiseksi)

simple-player  -  c kielinen ohjelma.
Sound - QML ja PyOtherSide  ohjelma
Pulseaudio -  tuottaa äänen ulos.

Eli paljon on tehty töitä että ollaan päästy edes tähän, ja tästä sitten varsinainen homma alkaa... eli Midi sävellysohjelman teko.

Tästä myöhemmin lisää.




Kuva kertoo kaiken, Slider ei oikein sovellu sekuntien näyttämiseen.

Tarkoituksena myös on että Slideria liikuttamalla muutetaan myös positioita.

Aikani kun tätä testasin, näköjään midi voi olla myös väärin muodostettu,
jos muutat positiota ... ääni katoaa joissain kappaleissa.  

Lisää RAM muistia USB tai SD muistilla


Pc tietokoneen RAM muistia voidaan jatkaa USB tikulla tai SD kortilla sinänsä aika helposti Linux koneissa ... siis jos jotain valmista ohjelmaa tähän ei ole käytettävissä.

Yksinkertaisesti, tehdään tikusta/kortista SWAP osio, liitetään ja asennetaan prioriteetti

swapon -p 32767 /dev/sdf1  -- huom. tarkista osio
swapon -s  -- esim. näin tarkistetaan onko toiminnassa

Itseasiassa tässä lisätään swapin kokoa flash muistilla.
Yleensä swap-osio luodaan kiintolevylle käyttöjärjestelmää asennettaessa, mutta mahdollisesti se voi olla liian pieni, suositus kun on tuplaten mitä fyysinen muisti (RAM) on.

Oikeasti fyysistä muistia ei voi lisätä muuten kuin lisäämällä sitä , mutta koska suorittimen muistiavaruus jatkuu fyysisen (RAM) muistin yli näennäismuistille, ohjelmat voi olla myös siellä, niitä tosin ei voi ajaa siellä, vaan ne siirretään RAM muistiin, jolloin jotain on siirrettävä pois tieltä, takaisin näennäismuistille, ja tästä nimi ... SWAP


-------
Tässä sitten vähän tarkemmin miten tehdään swap levy

-Etsitään laite 

Laita USB tai SD kortti koneeseen,  aluksi siis etsitään mistä laitteesta tehdään swap lisämuisti.

kirjoita konsolissa -- (esimerkissä on 2 vaihtoehto -- df tai mount)

df
jos media on mount:ttu (liitetty) niin saadaan ulos jotain tällaista

kuvan alhaalta nähdään että laite on /dev/sdf1

tämän jälkeen meidän täytyy sitten irrottaa tikku
sudo umount /dev/sdf1

----------------

mount

ja jos media on mount:ttu (liitetty) niin saadaan ulos jotain tällaista


/dev/sdf1 on /media/USB DISK type vfat ...  riviä lyhennetty


jolloin huomataan että kyseessä on USB tikku ja laite on -- /dev/sdf1

irroita tikku

sudo umount /dev/sdf1


mutta normaalisti median asentaminen Pc:n ei automaagisesti kiinnitä mitään eli mount:aa,
jolloin on ehkä paras käyttää komentoa.

sudo fdisk -l
Huomataan kuvan alhaalta että laite on /dev/sdf1, voi tietenkin olla vaikka esim. /dev/sdb1 .. jne
ylempänä on kiintolevyn osiot /dev/sda..  eikä niihin parane puuttua.

Eli tässä tapauksessa laite on siis /dev/sdf1
varmista vielä ettei laite ole liitetty

umount /dev/sdf1


-Tehdään swap 

korvaa tekstissä sdf1 oman laitteesi tiedoilla ... varmista aina mille laitteelle kirjoitat

sudo mkswap / dev/sdf1   --- tehdään swap-osio

sudo swapon-P32767 / dev/sdf1  -- tai (swapon -p 32767 /dev/sdf1) -- liitetään / prioriteetti

Prioriteetti 0 - 32767 väliltä,
jos prioriteettiä ei aseteta, niin saamme oletuksena esim. arvot ..
swap flash -2 ja swap kiintolevy -1
-1 on tällöin korkeampi arvo

Kahdella swapillä prioriteetti voi olla myös sama, jolloin käytetään molempia vastavuoroisesti, ja tämä voi lisätä swapin nopeutta, edellyttäen että swapit on erillä laitteella.

-Varmista

swapon -s -- tai cat /proc/swaps
free -m  -- näyttää mikä on swapin koko
huom. Pc uudelleen käynnistettäessä swap pitää liittää uudelleen.

-Swappiness

Arvo väliltä 0-100

Määritellään miten ohjelmia tulee siirtää fyysisen ja swap muistin välillä.
Tai ehkä tarkemmin tällä määrätään ohjelman tyhjäkäynti aika, mikä se saa olla ennen kuin ohjelma siirretään swappiin.

pieni arvo -- ohjelmat halutaan pitää fyysisellä muistilla pitkään kuin mahdollista
suuri arvo -- ohjelmat halutaan siirtää swap muistilla, heti kuin mahdollista.

Eli suuri arvo, ohjelmia siirretään herkemmin swap:iin, jolloin muistia vapautuu levyvälimuistille (sekin on keskusmuistissa) ... koska käyttöjärjestelmä haluaa käyttää RAM:a mahdollisimman tehokkaasti.

toisaalta tyhjäkäynnillä olevat ohjelmat, niitten herääminen on hidasta, siirto swap muistista RAM muistille kestää.

Ubuntussa oletus on 60  ... ehkä turhan korkea, kokeile 30

cat /proc/sys/vm/swappiness  --- luetaan arvo
sudo sysctl vm.swappiness=10 --- tässä asetetaan arvoksi 10 

Mikä on sitten paras arvo ? -- ylensä suositellaan pientä arvoa, mutta myös vastakkaista mielipidettä löytyy .. koska tietokoneen käyttötapoja on niin monia.

-Swap tiedosto

Voidaan tehdä myös Swap tiedosto, jolloin ulkoisiata mediaa tai kiintolevyn osiointia ei tarvita.

dd if=/dev/zero of=/swapfile bs=1024 count=1048576  --- (1GB)
mkswap /swapfile
swapon /swapfile

-Mitä hyötyä?

Siis ulkoiselle muistille kirjoittaminen ei ole mitenkään nopeata, eikä siksi sillä voida sinänsä korvata RAM muistia, mutta joissain tapauksissa voi olla hyvinkin tarpeellinen lisä, voihan olla että konetta on päivitetty vaikka 2GB muistista 8 GB:n  mutta swap on vaan 2GB, eikä haluta kiintolevyä osioida, niin tällaistä systeemiä voisi harkita.
On myös muistettava että flash muistit ei ole ikuisia, mahdollisuus kirjoitottaa on noin > 10 000 kertaa