OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 28.03.2024, 15:50

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 233 ]  Přejít na stránku Předchozí  1 ... 3, 4, 5, 6, 7, 8, 9 ... 16  Další
Autor Zpráva
PříspěvekNapsal: 01.01.2017, 03:55 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Tak první verze propočtu v rámci ztlumováni samplu pro nejnižší frekvenci aplikována do rutiny a vypadá to funkčně. Ještě budu testovat. Výpočet počítá s nejmenším samplem zatím 1 kB, můžu samozřejmě ještě dolní hranici délky samplu snížit. Odchylka v propočtu od samplu 1 kB k samplu co má 6,6 kB je 15 z celkového rozsahu několik tisíc a s tím jsem v rámci první verze určitě spokojen :mrblue:

Později dodělám propočty k dalším 24 frekvencím. Ty budou ale již na stejném principu jako propočet první.

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 02.01.2017, 14:43 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Tak jsem se konečně po delší době sprovoznil tu svou polorozpadlou rutinku a již je mi jasný, že taky záleží na tom kolik bude hrát kanálů. To ztlumení pro 1 kanál bylo správně nastavené, pokud bych hrál pouze 1 kanálem, při vícero kanálech byla doba pro ztlumení opět nedostačující. Tak uvidím, jestli si zatím vystačím se ztlumením takovým, aby bylo jedno, kolik hraje kanálu, nebo to udělám malinko složitější. Mimo jiné odstraněná další chyba a opět tedy větší zfunkčnění rutinky (rychlost přehrávaní hudby má teď větší prioritu, než dohrání samotného samplu do konce, tedy po zahraní celého samplu při veliké pomalosti hraní bude ticho). No a zatím místo zásobníku používám registry pro zálohu parametru správné délky samplu a jsem se trochu dosekal když jsem si neuvědomil, že samotné násobení v registru mi maže celý registr (oba wordy) i když se pohybuji pouze v rozsahu jednoho wordu. A v 1. wordu jsem měl onu zálohu, která mi šla násobením na 0 :).

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 02.01.2017, 16:53 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
OK oprava při hraní všech 4 kanálu je snížit "délku" každého samplu, co je mnou zadaná délka daná výpočtem o 1cb7 (7351). Všechny 4 kanály se ztlumí ve stejný čas při zadání stejného čísla pro opravu.

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 02.01.2017, 18:52 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Emulace JIT mi rozhazuje mé časování. Tam kde bych dělal opravu při hraní 4 samplů naráz, když mi nehraje jen 1 kanál, na který mám časování optimalizované by žádná oprava nemusela být. Je to normální stav? S JIT se u SW musí počítat a tedy u částí, kde to může mít ne zcela pozitivní následky se musí optimalizovat i pro JIT? To by jsme se ale asi bavili jen o spuštění SW na nextGen amigách (co se týče toho JIT) ?

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 04.01.2017, 22:23 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Včera jsem odstranil další brutální chybu v mé rutině. Hrál jsem pouze polovičním rozsahem frekvencí, tedy tak s 12 z 25. A i to špatně. V rychlosti jak jsem obracel logiku, aby nejnižší číslo byl nejnižší tón a ne nejvyšší tón jsem do rutiny naházel špatná čísla pro běh jedné z logik programu. Další legrací bylo, že jsem odpočítával hodnotu rozsahu 1 byte (registr plný dalších parametrů, volný snad jen 1 byte možná ještě a ten si chci nechat v rezervě) od hodnoty ve 2. registru v rozsahu 2 byte. Tedy mi ve druhém registru neproběhl odpočet správně. Potřeboval jsem v obou registrech pracovat s rozsahem 2 byte, co jsem nemohl učinit. Využil jsem situace, že mi ve 2. registru postačovala ve 2. byte jednička. A i to jsem začínal na rozsahu, kde u nejvyššího čísla byla dvojka. To je ale pouze startovací nejvyšší číslo, tedy jsem daný byte nastavil tak aby se po odečtu hodnoty zobrazila právě chtěná hodnota (1. byte 2. registru) a do 2. byte 2. registru jsem jedničku napevno přiřadil. Pak mi již stačilo jen sledovat hodnotu kým se mi sníži na požadované číslo a jedničku z 2. bytu jsem napevno odstranil a pokračoval dál již v odečtu rozsahu 1 byte. Standardní problémy každého, kdo se věnuje programování, ale přesně pro tohle se mi programování líbí. Krásné čisté přesné. Chybu skoro vždy můžeš udělat jen ty, ne procesor. Buď ho dokopeš dělat to co cheš a nebo si prohrál, žádný jiný stav mezi tím neexistuje.

10

Příště si ještě něco odsleduji - malá chyba o které vím a již snad konečně pohnu s rutinou a začnu pracovat na hraní logiky dlouhých samplů. Snad se zadaří.

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 08.01.2017, 06:15 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
stupnice:
Kód:
A1   01
A1#  02
H1   03
C2   04
C2#  05
D2   06
D2#  07
E2   08
F2   09
F2#  0a
G2   0b
G2#  0c
A2   0d
A2#  0e
H2   0f
C3   10
C3#  11
D3   12
D3#  13
E3   14
F3   15
F3#  16
G3   17
G3#  18
A3   19

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 12.01.2017, 10:33 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Lisiak4 píše:
Příště si ještě něco odsleduji - malá chyba o které vím a již snad konečně pohnu s rutinou a začnu pracovat na hraní logiky dlouhých samplů. Snad se zadaří.

15 minut po půlnoci jsem dostal chuť si zaprogramovat a po 90 minutách našel zdroj chyby a provedl nápravu.

Před tím jsem si zkusil něco naházet do rutiny. Udělat něco pomalého, klidného a pak jsem to pořádně zrychlil :lol:. Pak jsem si řekl, že nemůžu začít tak rychle a musím před to dát něco klidnějšího, tak jsem učinil no a když jsem byl ve sprše :lol:, tak mne napadlo že bych tam mohl dát něco pomalejšího s klavírem a do toho by se mohlo hrát něco z toho mála rychlého co doposud mám v jiném nástroji. Tvoří takhle i ostatní hudbu, je to normální postup, nebo jsem opět jen v nějakém svém rozsahu a tedy věc dělám úplně jinak, než by se správně mělo? :lol:

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 11.02.2017, 00:56 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Ještě pořád dnes kolem 2 v noci jsem poprvé zahrál sampl přes několik taktů. V mé terminologii tedy dlouhý sampl netlumen dalším taktem. Zatím jen v 1. kanálu, nicméně tváří se to použitelně, tak je to asi OK - doufám. Zatím dle mne celkem mrhám prostorem, kdy v rámci 4 bytového registru používám informaci na úrovni 1 bajtu (přesněji řečeno mám třeba v 1 byte číslo pouze v rozsahu 0-4 a nic víc), když samotný bajt má 8 bitů, přes to všechno mám dobrý pocit z toho, že alespoň na úrovni bajtů se snažím program psát dle mého nejlepšího vědomí a svědomí v rámci faktu, že se potřebuji posouvat i dopředu, tedy nejdu za každou cenu na hranu nejsamlepšejšího kódu co dokáži v rámci sebe napsat. Přes to vše jsem si dal za úkol použit k info kolik se má ztlumit samplů v rámci 1 taktu poslední volný byte v D3. Musel jsem tedy zabezpečit, aby se mi daná informace v rámci hrací smyčky neztratila počas celkém dlouhýho průběhu v samotném programu a celkově již tak zacházím i s dalšíma informacemi v samotném registru D3, kde pomocí rotací bytů aritmetického posunu? (insrukce ASR, ASL) zabezpečuji, aby v kódu o velikosti několik desítek řádků tak nějak vše fungovalo a nebyl nikde problém. Trochu jsem si tedy osvojil instrukce jak v rámci rotace bytů (ROR,ROL), tak v rámci aritmetického posunu byte (ASR,ASL), né že bych je již nějakou dobu nepoužíval... .

Hrající sampl samozřejmě můžu ztlumit ve kterémkoliv taktu. Tohle zatím budu moci používat, kým nebudu mít část programu, která se stará o ztlumení samplu na jeho úplném konci zcela výladěnou, pokud se mi ji zcela vyladit vůbec podaří. Jednoduše sampl ztlumím v posledním možném taktu, ve kterém za jeho zvukem ještě nebudu mít ve zvuku i nechtěný bordel, čím docílým delší tón v rámci samplu než tomu bylo doteď, kdy jsem mohl zahrát sampl pouze v rozsahu 1 taktu.

Programování zdar! :)

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 19.02.2017, 14:31 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Doprogramována logika zbylých 3 kanálů pro hraní dlouhých samplů a odstranění dalších 2 chyb zanesených samotným měněním logiky v části, kde se hraje sampl. Ještě mi rutina nezahrála v každém taktu sampl a tak jsem i do části, kdy je již jasné, že se bude hrát nový tón přidal taky ztlumení samplu, nepomohlo a tak jsem si říkal, že je mezi ztlumením původního a zahráním nového samplu malý časový prostor. Že má registr na to určen problém v tak krátké době sampl ztlumit a pak zahrát další tón. Se mi tahle teorie nezdá, nicméně mé domněnky potvrzuje fakt, že když jsem dal mezi dané úkony zpomalení, začal nový sampl hned v dalším taktu již hrát. Sem tam ale i tak nějaký sampl nebyl zahrán, tak jsem se teď když dané věci dělám ještě celkem nahrubo přestal hrát s drobnými a mám tam zatím zpomalení nějakou tisícinu vteřiny, fakt se mi to nechce počítat, já jen +- pro představu. Zdá se, že při současné rychlosti hraní "hudby" již hraje každý sampl stabilně. Zatím jsem dal zpomalení pouze do 1. kanálu.

Jinak dnes jsem došel k závěru, že údaj, kolik potřebuji ztlumit samplú z těch co hrají má rutina vlastně ani k chodu již nepotřebuje. Celkem mne to stálo čas, abych daný údaj v registru d3 udržel, nicméně, když někdy budu potřebovat 1 byte přehnat přes část programu, kde se pracuje s frekvencí samplu, vím přesně kam ho vrazit :).

Celkem mi dala zabrat i samotná logika pro zahrání dlouhého samplu přes více taktů. Logiku jsem měl z hlavy naprogramovanou a netestovanou, nicméně se mi v ní opakoval 1 řádek. Tedy stejný řádek byl na 2 místech co mne z nějakého důvodu slušně iritovalo a já věděl, že to jde i bez něj tak jsem naprogramoval asi o třetinu delší logiku jak byla ta původní (hlavně že se v ní neopakoval žádný řádek) a když jsem to měl hotové, tedy přesněji skoro hotové, zjistil jsem, že se mi nedaří sloučit 2 věci dohromady. Tak jsem to všechno zakomentoval a během 10 minut jsem měl před sebou něco, co jsem věděl, že je to, co jsem hledal. V tu chvíli jsem měl pocit, že jsem ještě takovou logiku nikdy nepoužil. Nicméně v počtech toho, co jsem kdysi zkusil se mám již problém orientovat. Měl jsem před sebou o třetinu jednoduší logiku než tu první a bez toho, aby se nějaká část v ní opakovala. Tak jsem byl konečně spokojen :).

Dnes ráno, když jsem poprvé zahrál 4 kanály a v jednom kanály mi hrál sampl přes 3 takty jsem měl obrovskou radost :)

:jump:

:heilpmd:

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 17.03.2017, 19:09 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
ExiE měl na AM dotaz, jak to funguje. Uvedeno na AM již nějakou dobu dávám i sem:

Citace:
Šel jsem na to nejjednodušší cestou. Vše se píše přímo v editoru asm. Tedy mám vlastní primitivní formát ze samotného textu. Použiju foto z vlákna "Ukaž screenshot!" První čtyři řádky s černým textem:
B1- 1.kanál
BA - sampl na adrese pod proměnnou BA (dáme do 1.kanálu)

Pokud se bude jednat o poslední sampl co chci nahrát do příslušných registrov, tak místo "1" se napíše "0".
Zde nahraju 4 sample a "E0" nám říká, že se jedná o poslední nahrání samplu "BD" do příslušného registru.

Pak se určuje hlasitost kanálu 1 až 4 (B1-E0) vše 40 hexa co je maximum

0e00 - je rychlost hraní

B107D0 - délka 1.samplu B1 má 07D0 wordů v hexa (délka posledního samplu je za E0).

1111 - budou hrát všechny kanále (1000 = bude hrát pouze 1.kanál, tedy každý takt se mi bude měnit po 1 tóne)

20202020 - "20" = nehraj nic / když něco hraje, tak sampl ztlum na 0. Tímhle se zatím vyhýbám, aby se mi něco nehrálo v první programové smyčce kde se ukládají sample do registrů a jiné viz popis výše. Rutina má 2 hlavní smyčky:
1. pro načtení samplů a dalšího
2. pro hraní s již použitým nastavením

Rychlost vykonání těch 2 smyček je samozřejmě různá a řešení dané věci je pro mne vedlejší problém a tím že tam mám "20202020" zajistím, že tóny v 1.taktu budou stejné délky, jako ti ostatní, protože pak se již pude v kratší programové smyčce. Pak již nasleduje 4 kanálové hraní.

"20" jsem již popsal, zatím ní i manuálně ztlumuji sampl, aby jsem na jeho konci neměl zvukový bordel, tedy i něco jiného, než samotný sampl.
"30" hraní samplu přes více taktů, pokud je sampl delší, než délka samotného taktu, tedy samotné rychlosti hraní "hudby". S "30" se to v daném taktu nemůže přestřelit, jinak bude v taktu zvukový bordel. V takovém taktu se musí použít bud "20", nebo zahrát nový tón.
1-19 hexa - 25 tónu. 1 = nejnižší, 19 = nejvyšší tón

tedy:
20080820,20302020
S kanálem 2 a 3 zahraj s nástroji v nich výšku tónu 08. Těch 25 frekvencí, tedy spíše period (co používá Amiga a je to pouze obrácená hodnota frekvence) mám nastaveno dle dokumentace co jsem si našel.
V dalším taktu "20302020" druhý kanál hraje původní tón z 1.taktu a 3.kanál je ztlumen.

Tahle melodie zde je již mnou zahozená... .

Tohle jsem již nějakou dobu nepoužil, ale když se zadá "00" znamená to, že se bude konat nějaká změna / nahrání nového samplu a další.
"0000" = ukončení programu / hraní "hudby".

Tak představení bychom měli za sebou, ještě pak na Resetu pustím nějakou tu jednoduchou hudební pitomost co mám na krku.

Kdo sleduje OC, ví jak rutina postupně vznikala

Přeju všem hezký den :)


Přílohy:
music.jpg
music.jpg [ 59.65 KiB | Zobrazeno 16018 krát ]

_________________
Amiga - PMD 85
Nahoru
 Profil  
 
PříspěvekNapsal: 06.05.2017, 22:27 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Mé lameření s "hudbou" v rámci mé rutiny, kde prvotním úkolem bylo si odpovědět, jestli takhle vůbec lze "hudbu" zahrát. V rámci sebe vnímám jako odpověď že lze, jen se když tak bude muset vyměnit hudebník :lol:

Obě "hudby" mají z 90 procent stejný základ, jen jsem vyměnil sample. Na Amize s turbokartou mi zatím hraje hudba zrychleně. Již mám v hlavě pár nápadů jak to vyřešit, tak snad časem.

Odkazy na 2 verze mé "hudby":
https://youtu.be/1i5P0IjNq58
https://youtu.be/9Frub_v6ECY

Programování a Amize zdar!

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 29.09.2017, 12:27 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Tak jsem našel rozšiřující tabulku hodnot period (v rámci hudební stupnice) od té, co je zde již v tomhle vlákně uvedena. Z EABu od uživatele 8bitbubsy uvádím i zde.

zdroj:
http://eab.abime.net/showthread.php?t=69675

Kód:
    856,808,762,720,678,640,604,570,538,508,
    480,453,428,404,381,360,339,320,302,285,
    269,254,240,226,214,202,190,180,170,160,
    151,143,135,127,120,113,0

:mrblue:

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 27.10.2017, 18:18 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
klávesy Yamaha PSS modelová řada:
http://nurykabe.com/dump/text/PSS/page/

manuál PSS 470:
http://nurykabe.com/dump/text/PSS/page/ ... 470_00.pdf

manuál PSS 590 (akordy):
http://nurykabe.com/dump/text/PSS/page/ ... 590_00.pdf

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 26.12.2017, 11:40 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Lisiak4 píše:
Tak jsem našel rozšiřující tabulku hodnot period (v rámci hudební stupnice) od té, co je zde již v tomhle vlákně uvedena. Z EABu od uživatele 8bitbubsy uvádím i zde.

zdroj:
http://eab.abime.net/showthread.php?t=69675

Kód:
    856,808,762,720,678,640,604,570,538,508,
    480,453,428,404,381,360,339,320,302,285,
    269,254,240,226,214,202,190,180,170,160,
    151,143,135,127,120,113,0

έξι decem:
Kód:
    358,328,2fa,2do,2a6,280,25c,23a,21a,1fc,
    1e0,1c5,1ac,194,17d,168,153,140,12e,11d,
    10d,fe, f0, e2, d6, ca, be, b4, aa, a0,
    97, 8f, 87, 7f, 78, 71, 0


Optimalizoval jsem hudební rutinu do úrovně výběru frekvence samplu. Vše předpřipraveno na přeprogramování výběru frekvence a zároveň umožnění zahrát hudební rutině 3 oktávy.

:mrblue:

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 10.01.2018, 20:03 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Lisiak4 píše:
Vše předpřipraveno na přeprogramování výběru frekvence a zároveň umožnění zahrát hudební rutině 3 oktávy.

:mrblue:

Akorát jsem dokončil přeprogramování výběru frekvence a hraje mi to. Jen mám začátek mé testovací hudby frekvenčně posunut, ale to by mělo být pouze i současným zvýšením rozsahu z 25 na 36 tónů, kromě toho přeprogramování. A proč je frekvenčně posunut pouze začátek mé testovací hudby? Protože mám pouze začátek :mrblue:

Tak snad by to mělo být vše ok.

:jump:

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 233 ]  Přejít na stránku Předchozí  1 ... 3, 4, 5, 6, 7, 8, 9 ... 16  Další

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 5 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz