.[ ČeskéHry.cz ].
MusicString - Melodie nacpané do kupy ASCII znaků

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Ostatní
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Frooxius



Založen: 27. 04. 2011
Příspěvky: 73
Bydliště: Kopřivnice

PříspěvekZaslal: 27. únor 2012, 17:11:49    Předmět: MusicString - Melodie nacpané do kupy ASCII znaků Odpovědět s citátem



Ahoj, rád bych vám představil jeden z mých mnoha projektů, konkrétně další ze série mých programovacích jazyků (nyní ale nikoliv ve spojení s WPU) a to MusicString, jazyk zaměřený na tvorbu a zápis hudby.

Oficiální web

Co je to MusicString?

MusicString je audio programovací jazyk na navržený pro zápis a tvorbu jednoduchých melodií a hudby pomocí malého množství ASCII znaků, což umožňuje snadné sdílení skrze různá média založená na textu, jako jsou webové stránky, fóra, mikro-blogovací služby (zejména Twitter), IRC kanály, či Instant Messengery. Cílem je nabídnout relativně jednoduchý způsob zápisu hudby a tónů s minimálním počtem znaků, při zachování logické a poměrně jednoduché syntaxe. Ono by to totiž šlo zapsat i mnohem více krátce, jen by to bylo pro člověka poměrně dost složité to zakódovat, nebo i přečíst, naštěstí něco takového vždycky nabídnou automatizované nástroje.

Malá ukázka, autorem je Morgan Dow
kód:
@100;[(~4a3OQ4Og3OQ4O4E3Ln4LLn4LD3JLJ43JL4J3JL4J3JL5J3no4n5L, | 3CC..5E3CC..5E3..4C3CC..5E3..3C4CC..5E3CC..4E4g , %b-3CC4C3nm4n6Km3nm4n5LKK3K5KK):3]


Co to umí?

Melodie a hudební skladby jsou zapsány jako série tónů. Káždý tón (v podstatě nota) je vyjádřen pomocí jediného písmena z anglické abecedy, kde každé písmeno vytvoří jinou výšku tónu (jinou frekvenci). MusicString navíc podporuje teoreticky neomezené množství souběžných kanálů (prakticky limitované pamětí), což umožňuje vytvářet jak akordy, tak i kanály s různými nástroji.

Skladatel si může vybrat z několika nástrojů, výchozí sada obsahuje základní signály (sinus, čtverec, trojůhelník, pila, "rána", a šum), avšak s použítím externích sad nástrojů je možné MusicString rozšířit o celou řadu dalších nástrojů a zvuků, či dokonce několik sad nástorjů zkombinovat s použítím kanálů, což teoreticky umožňuje použití libovolného množství sad nástorjů najednou.

Kromě výšky tónu a nástrojů je samozřejmě možné měnit i délku, hlasitost, či amplitudovou obálku. Jazyk také nabízí konstrukty pro znovupoužívání a opakování částí sekvencí a obsahuje i více pokročilé vlastnosti, jako podmínky.

Dostupný software - jak to použít?

Dokumentace
Stáhnout verzi 0.2.1 alpha (PDF)
Jazyk těžko použijete bez oficiální dokumentace, ta detailně popisuje funkce samotného jazyka, jednotlivých konstruktů i některé důležité části samotné implementace.

MusicString kompilátor
Stáhnout verzi 0.2.2 alpha (binárky, Windows + Linux + Mac OS X)
Napsat MusicString program je jednoduché - stačí vytvořit plaintextový soubor a předhodit jej kompilátoru, který z něj vyprodukuje WAV soubor. MusicString kompilátor bude vždy nejaktuálnější a nejpresnější verzí vzhledem k specifikaci MusicString jazyka.

Visual MusicString - IDE (doporučeno)
Stáhnout verzi 0.1 alpha preview (binárka + Qt DLL, Windows)
Oficiální vývojové prostředí pro MusicString! Tento nástroj by měl výrazně usnadnit komponování, testování i pouhé přehrávání MusicString melodií, zatím je v alpha stádiu, takže očekávajte nějaké ty pády, navíc není vše podstatně ještě implementováno, ale použít se to snad dá >:3



Co se chystá?
Následující seznam obsahuje zatím neimplementované (nebo jen částečně) funkce:
- Implementace podpory sady nástrojů (implementováno v parseru)
- Vibrato (implementováno v sythetizátoru)
- Podmínkový běh
- Normalizace hlasitosti nástrojů
- Podpora webových prohlížečů
- Konfigurace kompilátoru
- Nastavení délky tónů poměrem (např. trioly) a obdobou tečkové notace


Tak, to je snad prozatím vše, tak komentujte, tvořte a sdílejte! :3


Naposledy upravil Frooxius dne 27. únor 2012, 17:23:32, celkově upraveno 2 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky MSN Messenger
Crypton



Založen: 14. 05. 2009
Příspěvky: 306
Bydliště: The Void

PříspěvekZaslal: 27. únor 2012, 17:12:55    Předmět: Odpovědět s citátem

Wow! Shocked
_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Slappy



Založen: 31. 07. 2009
Příspěvky: 169
Bydliště: Zilina

PříspěvekZaslal: 28. únor 2012, 08:17:12    Předmět: Odpovědět s citátem

Kamo tak toto je sila!

Ja sice na to mozem len tak cumiet, lebo neovladam tuto [ani ziadnu inu hudobnu] rec, ale vyzera to uplne uzasne.
_________________
Skinovane instalatory pre NSIS a Inno Setup, zdarma pre SK/CZ projekty: www.graphical-installer.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
if.then



Založen: 13. 04. 2008
Příspěvky: 579

PříspěvekZaslal: 28. únor 2012, 10:30:43    Předmět: Odpovědět s citátem

Podíval jsem se do nápovědy a připadá mi celkem nepraktické, že bez změny frekvence není možno obsáhnout celou klaviaturu. Chápu, že je to vlastnost ASCII, ale stejně je to vzhledem k změně mapování všech písmen na tóny při změně frekvence poněkud nevyhovující. Možná bych pouvažoval nad jiným rozložením.

Jinak, vypadá to pěkně, ale stáhnul jsem si to a ty "instrumenty", to se nedá snést. Sinus opravdu není náhrada za opravdový nástroj. Doufám, že nový "soundfont" se zvuky reálných nástrojů vyjde co nejdříve Smile

Ale nenech se odradit, vypadá to dost zajímavě.

(Proč tohle fórum neakceptuje znak pomlčky?)
_________________
For guns and glory, go to www.ceske-hry.cz.
For work and worry, execute VC++.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Frooxius



Založen: 27. 04. 2011
Příspěvky: 73
Bydliště: Kopřivnice

PříspěvekZaslal: 28. únor 2012, 14:18:32    Předmět: Odpovědět s citátem

Děkuji za komentáře

if.then: Tady žádné rozložení nepomůže, ASCII na to prostě nemá dost znaků. V následující části skusím trochu osvětlit, jak jsem došel k současnému způsobu. Vlastnosti jazyka jsem ale konzultoval s některými hudebníky a ve většině skladeb by stejně jak velký rozsah nebyl potřeba, většinou se pohybuje maximálně v rozsahu pár oktáv, což ten jazyk splňuje a je udělán tak, že jednou posuneš frekvenci do jiného rozsahu a potom se v ní nějakou dobu pohybuješ, takže by to mělo většině skladeb vyhovovat.

Když si to vezmeš, tak v notovém zápisu je to podobné, tam je (bez pomocných čar) ten rozsah ještě menší než u MusicString, přičemž je na začátku rozsah určen klíčem. Pokud jsou pak třeba dvě stopy, jedna s houslovým klíčem a druhá s basovým, tak v MusicStringu uděláš to samé, vytvoříš dva kanály a každý si posuneš do potřebného rozsahu, ve kterém se pohybuješ, tedy např. ( vysoké tóny , hluboké tóny ), stejně, jako tomu bývá i notových zápisů.

O rozsahu frevekncí jsem dost uvažoval a kolik skladeb vlastně znáš, kde by tento systém byl nepraktický? Protě, kde by se rychle střídaly extrémně vysoké a extrémně nízké noty s rozsahem větším, jak 4 oktávy? Tam by totiž asi nebyl praktický ani ten notový zápis a myšlenkou MusicStringu není přinést něco, co je praktičtější jak noty, proto jsem frekvence zvolil tímto způsobem.

Ovšem můžu popřemýšlet o rozšíření, které použije UTF-8 znaky, tedy přibudou i znaky s diakritikou a tak, čímž odpadne potřeba předem nastavit frekvenční rozsah, přičemž too lze vždycky automaticky převést do ASCII stylu. Otázka ovšem je: zvládne vůbec tolik znaků běžná klávesnice bez všelijakých nešikovných prstolamů? (brát trochu s nadsázkou). A jak moc je vůbec taková funkce opravdu potřeba? Prostě, běžně se jeden kanál v tak velkém rozsahu ani nepohybuje. Můžu něco přidat formou pomocného nástroje ve Visual MusicStringu (sežere to všechny ASCII znaky jako tóny a převede na ASCII verzi s posuvy), ale pokud to tak moc nehoří, tak spíše někdy později. ^^'

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

Ohledně těch nástrojů chápu, ta možnost přidávat vlastní nástroje a zvuky je právě proto, aby to umělo vyloudit mnohem více zvuků, přeci jen, každý má jiný vkus.

Základní nástroje jsem zvolil v duchu minimalizmu, na některé skladby se asi přímo nehodí, ale přesto bych je nezahazoval, dají se dobře použít pro chiptune skladby, či pro hraní si s audiem a skládání zvuků, navíc se možnost i ještě rozšíří, protože plánuji speciální kanály, které ovlivní jiný kanál, např. frekvenční modulací, amplitudovou obálkou a dalšími transformacemi. Smile

Jinak díky za komentář.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky MSN Messenger
Frooxius



Založen: 27. 04. 2011
Příspěvky: 73
Bydliště: Kopřivnice

PříspěvekZaslal: 1. březen 2012, 17:55:05    Předmět: Odpovědět s citátem

Nová verze Visual MusicString!

Stáhnout verzi pro Windows
Stáhnout verzi pro Mac OS X
Stáhnout verzi pro Linux (potřeba mít Qt 4.8.0 knihovny, nejsou přibaleny)

Verze 0.2a
[+] Přidána podpora Linuxu a Mac OS X
[+] Přidána možnost exportu do audio souboru
[+] Přidán report chyb v syntaxi
[+] Přidána možnost změny vzorkovacího kmitočtu při generování v reálném čase
[+] Přidána informativní stránka "O programu", obsahuje verze i doby kompilace
[+] Přidána jednoduchá vizualizace amplitudy
[*] Opravena řada chyb
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky MSN Messenger
nou



Založen: 28. 07. 2007
Příspěvky: 1047

PříspěvekZaslal: 1. březen 2012, 18:34:31    Předmět: Odpovědět s citátem

preco to buildujes voci Qt 4.8? treba mysliet na pouzivatelov starsich vydani distribucii.
_________________
Najjednoduchšie chyby sa najtažšie hľadajú.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Ladis



Založen: 18. 09. 2007
Příspěvky: 1533
Bydliště: u Prahy

PříspěvekZaslal: 1. březen 2012, 19:43:11    Předmět: Odpovědět s citátem

To je v Linuxu hezkou cestou neřešitelný problém, prostě vždycky někdo bude mít tak starou distribuci, kde bude starší verze použitých knihoven, a časem budou lidi používat budoucí verze ditribucí, kde bude už příliš nová zpětně špatně kompatibilní verze. Je nesmysl, aby dělal sám milion balíčků pro všechny distribuce a pro všechny jejich verze (a to i roky do budoucna). U free stačí napsat, jakou verzi knihoven potřebuje, uživatelé si ji seženou sami, u komerční aplikace je nejjednoduší hodit binárky knihovny do složky aplikace a v shell skriptu pro spuštění nastavit příslušnou cestu do prohledávání. Však ve Windows a Mac OS X se binárky knihoven přikládají k aplikaci taky.
_________________
Award-winning game developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nou



Založen: 28. 07. 2007
Příspěvky: 1047

PříspěvekZaslal: 1. březen 2012, 20:25:43    Předmět: Odpovědět s citátem

beriem spat. potrebuje to Qt Multimedia modul a ten nema balicek (a vyzera ze to je novinka v 4.Cool.

OFFTOPIC: ale preco zbytocne obmedzovat pouzivatela? ak je mozne jednoducho a elegantne vyriesit problem s kniznicami. toto sa mi nepaci na MacOS ze aplikacia ktora ma inde par mega je pre mac velka desiatky MB pretoze si zo sebou taha polku sveta. windows je na tom podobne. ono na disku sa to este lahko strati ale v RAM to uz nie je take jednoznacne..
_________________
Najjednoduchšie chyby sa najtažšie hľadajú.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



Založen: 28. 07. 2007
Příspěvky: 1552

PříspěvekZaslal: 1. březen 2012, 20:34:14    Předmět: Odpovědět s citátem

nou: Proti které verzi by to teda měl podle tebe linkovat?
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
nou



Založen: 28. 07. 2007
Příspěvky: 1047

PříspěvekZaslal: 1. březen 2012, 20:54:19    Předmět: Odpovědět s citátem

proti verzii ktora je v poslednej LTS verzii. co je 4.6. ale berte to skor ako doporucenie.
_________________
Najjednoduchšie chyby sa najtažšie hľadajú.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Ladis



Založen: 18. 09. 2007
Příspěvky: 1533
Bydliště: u Prahy

PříspěvekZaslal: 1. březen 2012, 21:23:25    Předmět: Odpovědět s citátem

A LTS jaké distribuce? Ne všichni používaj .deb Wink. Zvlášť v tomhle konkrétním případě je to jasné - linkuje proti minimální verzi knihovny, která obsahuje potřebné features.

Jinak uživatelé se omezují sami tím, že používají Linux. Je to něco za něco (sám Linux preferuju, kdyby něco). Mimochodem nějak jsem v tvém příspěvku nenašel, jak jednoduše a elegantně vyřešit ten problém s knihovnami (já vím reálně jen o tuně verzí balíčku nebo přihodit do složky k exe). Velikostí bych se netrápil, data jsou u většiny aplikací řádově větší na disku i v RAM než kód včetně knihoven (dnes jsem měl v IE 9 otevřeno asi 20 normálních tabů a součet iexplore.exe byl 600 MB RAM).

Osobně doporučuju přidávat knihovny k aplikaci, protože pak můžete použít features a bug fixes nejnovější verze knihovny, a přitom to pojede všem, i co maj 2-3 roky starej Linux, a uživatelé nemusí nic doinstalovávat, v tomhle případě dokonce kompilovat z SVN/GIT.
_________________
Award-winning game developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 2. březen 2012, 00:07:36    Předmět: Odpovědět s citátem

Malý problém bych viděl v libstdc++. Určitě se vyplatí to přídat k aplikaci, nicméně pokud např. 3D driver, ke kterému za běhu musíte aplikaci linkovat (děje se to automaticky, jinak byste se nedostali k OpenGL), používá jinou knihovnu libstdc++, může se vyskytnout problém. Setkal jsem se s tím u her z Humble Bundle. Dynamický linker v linuxu zjevně nemá rád, když se mu vyskytnou v procesu 2 stejné knihovny, ale různých verzí, nebo tam nějak figurovala ještě verze gcc. Univerzální řešení neznám, ale občas pomohlo přesměrovat libstdc++ u hry na libstdc++ v systému. To byl zrovna .deb z Humble Bundle, takže zas tak jisté s balíčkama taky není.

Jinak přibalení VŠECH knihoven k aplikaci je stejně asi to nejlepší, co můžete udělat pro closed source a bez toho, aniž byste dělali balíčky deb/rpm.

Samozřejmě ještě jistější je odladit si to pro konkrétní verze konkrétních distribucí, pokud chcete mít absolutní jistotu a pro každou udělat balíček.

Nejjistější je jít cestou open source a nechat servery typu http://www.playdeb.net , ať si to sami přeberou a otestují pro každou distribuci, a máte klid.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Frooxius



Založen: 27. 04. 2011
Příspěvky: 73
Bydliště: Kopřivnice

PříspěvekZaslal: 4. březen 2012, 04:57:24    Předmět: Odpovědět s citátem

Oops, to se to tu rozmluvilo. K Windows a Mac OS X verzi jsem knihovny radši přibalil, některým to totiž nefungovalo a netušili, jak ty knihovny vůbec nainstalovat, tak to tak bylo prostě pro uživatele jednodušší, jen rozbalí a jedou, můžu ale distributovat i jak verzi s přibalenými knihovnami, tak bez, navíc až dokončím implementaci "soundfontů", tedy spíše sad nástrojů (aby se to nepletlo s MIDI soundfonty, i když je to podobný princip), tak zveřejním i zdrojový kód, zatím se ještě trochu motám v licencích a přemýšlím, kterou vybrat, takže to půjde instalovat i ze zdrojáku (v podstatě všechny tři verze - Windows/Linux/Mac jsou z toho samého zdrojáku beze změn), mělo by to fungovat i s Qt 4.7.4, možná i starším.

Navíc, Qt je "jen" pro GUI a real-time přehrávání, kdo chce, může to přehrávat i s jinou knihovnou, stačí správě nacpat vygenerované samply do libovolného (tedy vhodného) bufferu a je to. Když už o tom mluvím, rychle jsem uplácal i DLL knihovničku, která používá kód, co k přehrávání používá SDL, takže tady je malá ochutnávka, i když je to zrovna příklad s VB.NET, až to bude "officiálně", přihodím i C/C++ hlavičku: http://data.solirax.org/musicstring/MusicStringVB.NET.zip
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky MSN Messenger
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Ostatní Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata 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 hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna