OldComp.cz

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


Právě je 19.03.2024, 05:05

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 ... 8, 9, 10, 11, 12, 13, 14 ... 16  Další
Autor Zpráva
PříspěvekNapsal: 24.11.2020, 12:46 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2276
Bydliště: Brno
Has thanked: 841 times
Been thanked: 302 times
V nové 2.skladbe mám prvních 5.patternu z 28. Přidal jsem možnost efektu vibratta do 3.kanalu. Současný stav možnosti hraní rutiny. 1.kanal vibrato,2.kanal bez efektu,3.kanal vibrato a arpeggio,4.kanal pracuje s jemným časováním v rámci práce se samply. Všechny kanály dokáží hrát i bez efektu. V současné době hrají 4 nástroje, každý v jednom kanály. Od dneška mám sólový nástroj, ale možná ho ještě vyměním. Zaměřil jsem se na 3.kanal. Byl asi 4 instrukcemi na různých místech přizpůsoben pro arpeggio, tak jsem si zpětné ověřil nutnost tuhle úpravu nemít aktivní při vynechání hraní efektu arpeggia. Úprava dana do poznámky v rámci kódu ASM s tím, že pro arpeggio asi bude potřebná. A taky jsem třeba v hudebním programu OctaMED na Amize poprvé použil editaci samplu s funkci BOOST, kdy jsem si sampl mírně přiohnul aby zněl pro daný účel lépe :) Rychlost hraní 2.skladby ještě není finální. V mé rutině ji zatím hraji konstantní rychlosti 8, kde 1 je nejrychlejší na objem dat 3 longy na řádek v rámci jakéhokoliv trackeru, co je přibližně 0,75 KB na pattern. Skladbu Atari goes on hraju na 4 longy co je přibližně 1 KB na pattern. Tam možná přejdu na 2 longy, tedy 0,5 KB na pattern. Přibližná velikost 1 patternu ve formátu MOD je 1 KB na pattern. Údaje jsou samozřejmě orientační dle situace... . Tedy pokud se chceme držet v rozsahu 1 byte na 1 kanál při 4 kanálové hudbě je minimální přibližná velikost 1 patternu 0,25 KB. Ale to by se v mé rutině všechny speciální nastavení museli vykonávat na jednom místě, to je možný, ale pro rovnoměrnější zatížení je lepší alespoň 0,5 KB na pattern. Pro velikost patternu méně než 0,25 KB se musí sahnout v rámci formátu po logice na úrovni bitů v rámci hrajících kanálů, co má za následek ještě většího zatížení procesoru.

A to je definice vesmírného pirátství! :lol:

_________________
Amiga - PMD 85


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

Registrován: 13.05.2013, 09:15
Příspěvky: 2276
Bydliště: Brno
Has thanked: 841 times
Been thanked: 302 times
Jen další mé kecy :)

Snad již pracuji na opravdu poslední úpravě jednoho kódu. Celkově 8.uprava, to bude asi můj rekord. Bylo mi jasný, že se bude přepisovat, ale netušil jsem že tak brzo. Jen jak jsem začal přepisovat skladbu AGO do změněného formátu a chtěl jsem použít poloviční velikost 1 patternu, narazil jsem na problém, kdy jsem si něco špatně pamatoval a rozhodl se i když nerad přejít z časování v rozsahu 4 bitů na 5 bitů. Naštěstí v registrech mám ještě pořád nějaké rezervy. Počet samplů jsem zvedl na 28. Až teď jsem měl všechny bity v rámci 1 Longu obsazeny v rámci mě speciální presekvence v mém hudebním formatu. Měl jsem v hlavě namyšlenou i verzi s 32 samply, ale nechtěl jsem to zatěžovat dalšími pár instrukcemi. Nicméně včera jsem si uvědomil, že sice zatížim, nicméně v další části kódu díky tomuhle můžu odlehčit, co byl impulz zrealizovat i použití 32 samplů. Alespoň to bude klasika, možná nikdy nevyužitá :) Teď k něčemu jinému. Na zpoždění používám CIA. Na úplném začátku zdejšího vlákna se řeší CIA, VBLANK. V jedné části používám i VBLANK, nicméně ním jen počkám na vykreslení 3 řádku a program jede dál, tedy jen běžné spozdeni, žádná synchronizace. Nerozumím, jak mi tahle část kódu mohla v minulostí zabezpečit rovnoměrné přehrávání na různém výkonu Amigy. Ale ve své době mi to fungovalo. Teď se mi i bez použití tohohle kódu nedaří časově rozhodit hraní skladby co vlastně byl očekávaný stav. Mohl bych samozřejmě použít VBLANK na synchronizaci rychlostí hraní, ale možná to ani nebude nutný, tak uvidím. V rámci spozdeni zatím upřednostňují spíše CIA než VBLANK. CIA je asi 10 krát jemnější a co se na začátku vlákna psalo z citace Amiga Review, že hudební rutiny používající CIA jsou pamale, tak nějak si dokáží představit, že když používali každý cyklus z CIA v rámci celé smyčky programu tak pak opravdu amen. Třeba se pletu, jen muj amatérský tip. Myslím, že pokud CIA zacykluji v rámci sebe, tak by to mělo být ok. Při práci s krátkými časy je VBLANK nepřesný, asi ne moc, nicméně v rámci 1.řádku se to chytne kdekoliv v jeho rozsahu a to se mi při práci s krátkými časy moc nezamlouvá. VBLANK je samozřejmě supr, ale myslím že ne pro můj účel. Uvidím. A další. V rámci 2 nejblizsich rychlostí hraní jsem na 1 skladbě někde na rozdílu 6-7 vteřin. Když budu v každém řádku střídat rychlostí, snad to bude kolem 3,5 vteřiny, tedy 1,75 vteřiny na každou stranu od požadované délky skladby originálu. Samozřejmě kdykoliv můžu udělat vše přesné, ale to je zatěžování. Zatím bych se chtěl držet toho, že od originálu rozdíl 1 vteřiny je v pohodě. Rozdíl 1,75 vteřiny délky skladby na 1 vteřinu a méně dosteluji CIAčkem. To je zatím můj záměr tak uvidíme. Adresový register pro práci se skoky v patternech bude 1 k dispozici. Starou smyčku rutiny jsem odstřihl, doplnění formátu přebralo její funkci. Snad již dodělám tu predsekvenci verze 8 a uvidíme.

_________________
Amiga - PMD 85


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

Registrován: 13.05.2013, 09:15
Příspěvky: 2276
Bydliště: Brno
Has thanked: 841 times
Been thanked: 302 times
Další kecy :)

Tak zahraný první tón s 8.verzí jedné speciální predsekvence. No vlastně nebyla ta část kódu použita vysloveně, ale hraje to, a to je základ. Časovač teď místo 4 bitů používá 5 bitů. To mi umožní zkrátit formát kde 1 řádek z klasického trackeru budou 2 Longy + predsekvence (arpeggio, SMP, volume), pokud budou použity. Postupně jsem likvidoval starou část kódu hudební rutiny, kde nový formát postupně přebíral jednotlivé funkce starého kódu. Nový formát již kompletně přebral vše. Predsekvence jsou v rozsahu 1 Longu. Škoda, že se nedostanu na úroveň 1 Longu mého formátu s info o skladbe+predsekvencie, který by odpovídal 1 řádku v běžném trackeru, ale jsou Longy 2. Mohl bych to dát i na 1 Long, ale musel bych snížit frekvenci zasahování mé hudební rutiny do mého formátu, aby jsem si vystačil s 5 bity, které má teď časovač k dispizici. Současný stav ale má své využití tak ponechávám. Chybí mi na to 2 bity, aby jsem dal časovač na 6 bitů. 6 bitů volitelná rychlost hraní a 6 bitů pro časovač. Na těchhle 6 bitů se dá dostat vícero způsoby. Třeba snížením maximálního možného počtu samplů z 32 na 24, co je taky celkem hodně. Já to mám naprogramováno teď na 16 samplů z důvodu ušetření pár instrukcí. Tolik samplů mi teď postačuje. Na každý kanál mám ale k dispozici 3 bity, tedy dohromady 4*8 samplů. Jak jsem řešil v jiném vlákně jednu logiku a opět jsem dostal přes prsty a naučil se jak funguje ADD při práci s pamětí, logika při použití s ADD se moc komplikovala a já použil SUBQ #4, A0. Tak jsem opět moudřejší při nastaní jedného stavu v ASM, jak to řešit.

_________________
Amiga - PMD 85


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

Registrován: 13.05.2013, 09:15
Příspěvky: 2276
Bydliště: Brno
Has thanked: 841 times
Been thanked: 302 times
Tak mi to nedalo a časovač v rutině jsem zpomalil přibližně na dvojnásobek. Když to na vibrato rychlostně nebude stačit, došteluji a opět o něco zrychlím. U původní rychlostí jsem ale vibrato hrál přibližně poloviční rychlostí. Již jsem pár tónů zahrál 1 Longem + předsekvence. Časovač mám teď na hodnotě 1000 hexa, co by měla být 1/200 vteřiny.

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 11.01.2021, 11:54 
Offline
Kecka

Registrován: 11.01.2021, 11:47
Příspěvky: 48
Has thanked: 0 time
Been thanked: 39 times
Ahoj. Držím palce s programováním.
Mám pár nedůležitých dotazů:
1. Jestli to dobře chápu, tak si děláš svůj vlastní formát skladby. Řešíš nějak i editování? Jak skladbu vytváříš? Máš na to bokem nějaké udělátko nebo to děláš old-school programátorsky - tedy "dc.b xx,yy,zz, ..." apod.?
2. Tvůj kód obsahuje i syntézu zvuků (nástrojů) k přehrávání? Pokud ano, pak opět bod 1. Jak to edituješ a zkoušíš?


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

Registrován: 13.05.2013, 09:15
Příspěvky: 2276
Bydliště: Brno
Has thanked: 841 times
Been thanked: 302 times
Ano, mám můj vlastní formát, editace je přímo v assembleru pomocí DC. Hudební rutina pracuje pouze se samply. Ale lze načíst i sampl o délce třeba 1 byte. Mám podprogram na vibrato, arpeggio.

Včera jsem rutinu předělával. Ještě není hotovo. Základ hudebního formátu je 4 byte pro 4 kanály, zde se zadává i vibrato. Pak volitelné jsou 4 byte pro hlasitost 4 kanálů (info o hlasitosti 6 bitů na kanál. První byte má ještě jiný účel), 4 byte pro arpeggio, 4 byte pro jemnou práci se samply v rámci časování, tohle lze ale dělat v jednom momentě pouze v 1 kanály.

V současné době zkouším zahrát v 1 Longu 1 řádek v běžném trackeru. Můžu narazit na problém, že sampl bude hrát dlouho a po zvukové stránce mi to může zanést do zvuku i nechtěný bordel. Sample zatím tlumim přímo ve formátu, nedělá se automatický výpočet, kdy sampl ztlumit. Můžu použít podprogram pro jemnou práci se samply, ale jen pro 1 kanál v jednom momentě. Před tím jsem to dělal tak, že 1 řádek v klasickém trackeru byl v mém formátu zapsán pomocí třeba 4 Longů a tam jsem si již určil, jestli sampl ztumim v prvním, druhém, nebo třeba ve 4.Longu. Co bylo přesnější. V těchhle situacích třeba použiju alespoň 2 Longy. Uvidím.

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 12.01.2021, 09:26 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3636
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Lisiak4 píše:
Hudební rutina pracuje pouze se samply. Ale lze načíst i sampl o délce třeba 1 byte.
Aky zvuk bude mat taky jednobajtovy sampel (napr. hodnota 128) ? ;)


Nahoru
 Profil  
 
PříspěvekNapsal: 12.01.2021, 11:49 
Offline
Kecka

Registrován: 11.01.2021, 11:47
Příspěvky: 48
Has thanked: 0 time
Been thanked: 39 times
Lisiak4 píše:
Ano, mám můj vlastní formát, editace je přímo v assembleru pomocí DC.

Rozumím. Tak to je značně hard-core. Ale třeba si editor někdy uděláš. Přece jen skládat nějakou hezkou melodickou hudbu v assembleru je asi docela obtížné.


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

Registrován: 13.05.2013, 09:15
Příspěvky: 2276
Bydliště: Brno
Has thanked: 841 times
Been thanked: 302 times
Pardon, jednoduše lze zahrát sampl o velikosti 1 sinusovky.

Zatím jen predelávám skladby z Atari 800 XL/XE.

Mne jednoduše vadila cizí hudební rutina s kódem, kterému nerozumím, ale nepočítal jsem, že na tom budu dělat tak dlouho... .

_________________
Amiga - PMD 85


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

Registrován: 13.05.2013, 09:15
Příspěvky: 2276
Bydliště: Brno
Has thanked: 841 times
Been thanked: 302 times
Takhle vypadá můj formát. První longy jsou noty, Úplně nahoře long s bytem AD je předsekvence pro sample. Je zde využít každý bit jen ne teď a nahrávám sampl s hodnotou dvou bitů na 00. Long s bytem CD nastavuje hlasitost. V tomhle Longu jsou nevyužité 2 bity.

Dnes jsem opravil u mně asi jednu z nejhorších chyb v ASM. Celkem slušně jsem to vše rozpitval. Snad to již bude vše ok.

Ve 2 přílohách tedy vzhled formátu a předsekvence pro práci se samply. Časem chci udělat popis, ale ještě je brzo.


Přílohy:
predsekvencePrepinaniSamplu8.zip [565 bajtů]
302 krát
format.png
format.png [ 21.97 KiB | Zobrazeno 5957 krát ]

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

Registrován: 13.05.2013, 09:15
Příspěvky: 2276
Bydliště: Brno
Has thanked: 841 times
Been thanked: 302 times
Přemýšlel jsem o situaci, kdy budu potřebovat načíst 5 samplů naráz. 3 sample do kanálu 1-3 a 2 sample pro práci s jemným časováním do kanálu 4. A zároveň mi vadilo, že i když taková situace jen tak nenastane a můžu použít info třeba z 3. a 4. kanálu pro zahrání 2 samplů s jemným časováním v kanálu 4, tak si tím blokují vždy minimálně 1 kanál, neboli budu moci v ten moment kromě 2 samplů do 4.kanalu nahrát ještě 2 sample a tedy neosadit samply všechny 3 zbylé kanály. Přizval jsem si tedy na pomoc volné bity z předsekvence pro hlasitost a asi tuhle možnost dám i do předsekvence arpeggio. Ta funkčnost by pak měla být zřejmá snad i z popisu. Pokud tedy nepouziju predsekvenci sampl, předsekvence volume ponese info o rychlosti hraní skladby, to je prvních 5 bitů. Predsekvenci volume ještě jen doprogramuji.

Kód:
************************************
* predsekvence sampl (s casovacem) *
************************************
 pocet bitu 32 / funkce
-------------------------------------------
 5 casovac - 2.smp        (4.kanal, sampl 1-8)
 3 sampl 1-8     (casovac, aktivace nahrani 2.smp pres 4.kanal)
-------------------------------------------
 6 frekvence     (casovac, 4.kanal, sampl 1-8)
 1 ztlumeni smp? (casovac, 4.kanal, sampl 1-8)
 1+
-------------------------------------------
 2=3 sampl 1-8              (aktivace nahrani smp pres 3.kanal)
 3 2) kanal 1-4  (sampl 1-8, aktivace nahrani smp pres 2.kanal)
 3 1) kanal 1-4  (sampl 1-8, aktivace nahrani smp pres 1.kanal)
-------------------------------------------
 ----nove
 1 predsekvence
 2 jen hlasitost, jen sampl (s casovacem),
   arpeggio (10,01,11), stav 00 volny
 5 casovac - rychlost hrani skladby

*********************************************************
* predsekvence hlasitost (nepouzita predsekvence sampl) *
*********************************************************
 pocet bitu 32 / funkce
-------------------------------------------
 6 hlasitost 1-64 - 1.kanal (0-3Fh)
-------------------------------------------
 6 hlasitost 1-64 - 2.kanal (0-3Fh)
-------------------------------------------
 6 hlasitost 1-64 - 3.kanal (0-3Fh)
-------------------------------------------
 6 hlasitost 1-64 - 4.kanal (0-3Fh)
-------------------------------------------
 1 predsekvence
 2 hlasitost, sampl, arpeggio (10,01,11), stav 00 volny
 5 casovac - rychlost hrani skladby

*******************************************************
* predsekvence hlasitost (pouzita predsekvence sampl) *
*******************************************************
 Pro zahrani 2 samplu v jeden moment ve formatu

 000000XX - XX = ton ze stupnice ve kterem se hraji 2 sample
                 nahrani prvniho ze dvou samplu

 pocet bitu 32 / funkce
-------------------------------------------
 6 hlasitost 1-64 - 1.kanal (0-3Fh)
-------------------------------------------
 6 hlasitost 1-64 - 2.kanal (0-3Fh)
-------------------------------------------
 6 hlasitost 1-64 - 3.kanal (0-3Fh)
-------------------------------------------
 6 hlasitost 1-64 - 4.kanal (0-3Fh)
-------------------------------------------
 1 predsekvence
 2 hlasitost, sampl, arpeggio (10,01,11), stav 00 volny
 3 sampl 1-8 (4.kanal)
 1 nahrat sampl 1-8? (4.kanal, pro prvni ze 2 samplu)
 1 pouzit nastaveni hlasitosti? (1-4.kanal)

 (nulova hlasitost se dosahuje primo ve formatu pomoci 00)

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 22.01.2021, 10:33 
Offline
Kecka

Registrován: 11.01.2021, 11:47
Příspěvky: 48
Has thanked: 0 time
Been thanked: 39 times
Zápis informací přímo v hexa číslech je hodně nepřehledné. Obvykle se ani autor po nějaké době ve formátu nevyzná. Proto se obvykle číslům přiřazují symbolická jména a větší celky se pak konstruují z nich. Dají se využít i makra. Třeba něco takového?
Kód:
  CMD_PLAY = $1
  CMD_STOP = $2
  CMD_WAIT = $3
  ....
  ....
  E_NONE = $0
  E_ARPEGIO = $1
  E_VIBRATO = $3
  ....
  ....

  macro COMMAND ; command, time, volume, effect
    dc.l (((\1)&$f)<<24)|(((\2)&$ff)<<16)|(((\3)&$ff)<<8)|((\4)&$f)
  endm

   ....
   ....

Commands:
  COMMAND CMD_STOP,10,0,E_NONE
  COMMAND CMD_PLAY,32,63,E_ARPEGIO
  COMMAND CMD_WAIT,200,0,E_NONE
  ....
  ....

Je to pak z dlouhodobého hlediska asi čitelnější. Nemluvě o možnosti snáze vše zpětně upravovat.


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

Registrován: 13.05.2013, 09:15
Příspěvky: 2276
Bydliště: Brno
Has thanked: 841 times
Been thanked: 302 times
Díky moc za příklad, možná později ;)

_________________
Amiga - PMD 85


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

Registrován: 13.05.2013, 09:15
Příspěvky: 2276
Bydliště: Brno
Has thanked: 841 times
Been thanked: 302 times
Dokončena možnost nahrávat 5 samplů v jeden moment. Tak snad základ hudebního formátu dokončen. Mám i hotových prvních 5 patternů (3 různé) z 2.nepublikované skladby. Ještě si bude muset sednout to, na kolik Longů se bude hrát v mé hudební rutině 1 řádek klasického formátu v běžném trackeru. Ale to je již jen věc časování a ne mého formátu, ten může hrát 1 a více Longů po sobě, jen se natahuje objem dat. S tímhle uvidím hlavně kvůli tomu ztlumovani samplů. Ale rozhodně i na 1 Long bez zásahů je skladba poslouchatelná.

@defor: a kolik taktů si vezmou ti makra? Spíše mi jde o míru zatížení než o přesný počet. Asi jsem úchyl, ale mně se zatím více líbí to zarovnání na bajty :)

A ještě si dovolím mou reakci na současný stav rutiny i když vibrato a arpeggio jsou není v poslední době odzkoušené...
:jump:

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 26.01.2021, 10:58 
Offline
Kecka

Registrován: 11.01.2021, 11:47
Příspěvky: 48
Has thanked: 0 time
Been thanked: 39 times
Lisiak4 píše:
@defor: a kolik taktů si vezmou ti makra? Spíše mi jde o míru zatížení než o přesný počet. Asi jsem úchyl, ale mně se zatím více líbí to zarovnání na bajty :)

Nerozumím. Makra si "berou" tolik taktů podle toho, do jakých instrukcí je assembler rozvine. Ale v tom mém příkladu makro obsahuje pouze deklaraci "dc.l", která jen vytváří v paměti long-word o dané hodnotě - žádnou instrukci. Schopnost psát makra je standardní vlastností všech modernějších assemblerů. Usnadňují programování opakujících se bloků kódu a zvyšují jeho přehlednost a použitelnost. Nic víc, nic míň.


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 ... 8, 9, 10, 11, 12, 13, 14 ... 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 1 návštěvní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:  
cron
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz