Aihe: Sointujen relaatio ja biisien kaavat
1 2 3 4 5 6 7
levesinet
25.03.2010 13:23:42
Ehdotan syntaksia, jolla kuvataan vaikkapa A-osan rakenne. Esimerkiksi:
 
* * * * 1 * * * 1 2 3 4 5 6 * *
 
Tähti tarkoittaa, että rakennetaan tahti tyhjästä. Numero 1 tarkoittaa, että tahti on kopio 1. tahdista. Eli ensin tehdään neljä tahtia puhtaalta pöydältä, sitten tahti joka on kopio 1. tahdista, sitten kolme tahtia puhtaalta pöydältä, sitten seuraavat 6 tahtia ovat samat kuin tahdit 1-6. Lopuksi vielä kaksi tahtia vapaasti.
 
Edelleenkin ajattelen rakentavani kaksi tahtia kerrallaan. Ensin aliohjelma näkee "* *" eli se tekee oikeasti kaksi tahtia tyhjästä. Mutta seuraavien "* *" kohdalla edelliset tahdit ovat voineet vaikuttaa melodiaiskujen painomatriisiin niin, että nyt melodiaiskuilla on taipumusta ajoittua samoin kuin edellisissä tahdeissa. Tätä tekniikkaa kokeilin sunnuntaina ja minusta se toimi lupaavasti. En antaisi sen vaikuttaa tähän syntaksiin vaan pitäisin sen jotenkin globaalina melodian rytmillisen jaksollisuuden parametrina. Sen sijaan:
 
* *, * *; 1 *, * *; 1 2, 3 4; 5 6, * *.
 
Pilkku toimii säkeiden erotinmerkkinä. Säkeiden välissä on lyhyt hengähdystauko. Puolipiste toimii säeryhmien erotinmerkkinä. Säeryhmien välissä on tauko. Niin kauan kuin teen kahden tahdin mittaisia säkeitä, pärjään aliohjelmalla, joka rakentaa tasan kaksi tahtia kerrallaan. Piste tarkoittaa, että kokonainen osa päättyy. Siinä kohtaa on tyypillisesti täydellinen kadenssi ja tauko.
 
Sointukulku muodostetaan tällaisen rakenteen ehdoin.
 
Rakennemerkintä paljastaa kokonaisten tahtien lukumäärän. Mutta melodinen säe ei välttämättä ala tahtiviivan kohdalta vaan se voi siirtyä alkamaan usean iskun verran edellisen tahdin puolelta. Näin eksymmekin jo kohotahteihin ja vajaatahteihin... 8P
 
Nyt voin määritellä erilaisia vaihtoehtoisia A-osia:
 
* *, * *; 1 *, * *; 1 2, 3 4; 5 6, * *.
* *, 1 *; 1 2, * *.
jne.
Klezberg
25.03.2010 19:55:56
 
 
Tuo malli ja rakenne tuntuu mielekkäältä, hyvinkin käyttökelpoiselta moneenkin genreen. No, jotain lisäjuttuja tulee kyllä heti mieleen.
 
Syntaksikin vaikuttaa käyttökelpoiselta tavaksi jolla käyttäjä syöttää haluamansa rakenteen. Itse ohjelmassa käsittelisin varmasti rakennemäärittelyä toisin. Mutta nyt täytyy odottaa sopivaa tilaisuutta että päässä olisi riittävästi tilaa käydä tämän kimppuun.
huomasin tässä että mun klarinetinsoitto kuulostaa aika luonnonmukaiselta... lähinnä niinkuin sorsalta
levesinet
25.03.2010 20:14:00 (muokattu 30.03.2010 18:22:39)
Klezberg: Syntaksikin vaikuttaa käyttökelpoiselta tavaksi jolla käyttäjä syöttää haluamansa rakenteen.
Hyvä. Antaa idean hautua vielä vähän aikaa. Opiskelin juuri kitarasointuja ja nyt pääsen jo tekemään melko monipuolisia kulkuja.
Klezberg
25.03.2010 23:20:08 (muokattu 26.03.2010 09:47:27)
 
 
Rupesin kuitenkin vääntämään osia tuosta mallistasi rubylla... Sointusäestyksen laittaminen rytmiin oli helppoa. Rumpusäestyksen jätin tuonnemmaksi. Melodiangeneroinnin kanssa meni aikaa, ei se ihan toimi vieläkään. Mutta vähitellen hahmottuu.
 
Edit: Joo, kyllä tuohon löytyy tolkkua. Vaatii tuon rumpuraidan ennenkuin aikaa kuulostaa miltään. Senkin toteutuksen jo ratkaisin periaatteessa.
 
Toistaiseksi olen toteuttanut osia mallistasi alkuperäisen toteutukseni sisällä. Esimerkiksi säestyksen ja melodian generoinnissa on jo valmius useamman tahdin mittaisten patternien ja mallien käyttöön, mutta itse ohjelman rakenne tuottaa edelleen yksittäisiä tahteja (jolloin patterneista jää käyttämättä yli jäävä osuus). Nyt alan hahmottaa miten muutan tuota vähitellen hanskaamaan useamman tahdin mittaisia kokonaisuuksia ja siitä vähitellen kohti laajempia rakenteita. Ehkä.
huomasin tässä että mun klarinetinsoitto kuulostaa aika luonnonmukaiselta... lähinnä niinkuin sorsalta
levesinet
26.03.2010 18:40:59
Klezberg: Syntaksikin vaikuttaa käyttökelpoiselta tavaksi jolla käyttäjä syöttää haluamansa rakenteen.
Katselen juuri sointukulkuja ja samassa katoaa innostus lähteä toteuttamaan ehdottamaani rakennekuvausta. Parempi vaan protoilla sellaiseen suuntaan, mihin algoritmi luonnostaan laajenee.
 
Klezberg: Rupesin kuitenkin vääntämään osia tuosta mallistasi rubylla...
Hui. ;D
Klezberg
26.03.2010 19:56:34 (muokattu 26.03.2010 21:02:28)
 
 
levesinet: Katselen juuri sointukulkuja ja samassa katoaa innostus lähteä toteuttamaan ehdottamaani rakennekuvausta. Parempi vaan protoilla sellaiseen suuntaan, mihin algoritmi luonnostaan laajenee.
 
Joo, varsinaisesti tarkoitinkin enemmän sitä että rakenne/malli näkyy siitä toteutuksesta. Mutta ei se mitään.
 
Hui. ;D
 
Ei pelkoa... Tältä kuulostaa nyt
http://htoyryla.dyndns.org/music/generie1.mp3
http://htoyryla.dyndns.org/music/generie1.mid
 
Pohjana on se sinun säännöstösi pohjalta toimiva sointukulun generointi, soinnut soitetaan sinulta kopioiduilla rytmikuvioilla, ilman sitä kitarasointuhommaa. Melodia generoidaan samalla systeemillä kuin sinulla, mutta ilman varaslähtöjä. Muitakin eroja voi olla, tahattomastikin.
 
Edit: tuossa toinen vielä:
http://htoyryla.dyndns.org/music/generie2.mp3
http://htoyryla.dyndns.org/music/generie2.mid
 
Edit2: Ja olihan siellä käpy, käytännössä melodia pomppi intervallin verran alkusävelen molemmin puolin. Huomasin kun kävin siistimään koodia. No, ihan hauskalta tuntui sekin.
Menee lajiin ohjelmistovirheavusteinen säveltäminen. Itse asiassa taisin tykätä noista enemmän kuin siitä mitä se ohjelma nyt suoltaa. Eli noissa oli käytössä sävelkorkeuden määräytyminen melodiassa kuminauhaperiaatteella :-)
 
No, tässä nyt näytteet nyt kun se toimii niinkuin piti
http://htoyryla.dyndns.org/music/generie3.mp3
http://htoyryla.dyndns.org/music/generie3.mid
huomasin tässä että mun klarinetinsoitto kuulostaa aika luonnonmukaiselta... lähinnä niinkuin sorsalta
levesinet
26.03.2010 23:35:26
http://htoyryla.dyndns.org/music/generie2.mp3
 
Kuulostaa reggaelta. Rytmi taitaa tosiaan olla aika nopeasti muovattavissa.
Klezberg
26.03.2010 23:43:06 (muokattu 26.03.2010 23:46:21)
 
 
levesinet: Kuulostaa reggaelta. Rytmi taitaa tosiaan olla aika nopeasti muovattavissa.
 
Itse asiassa tuossa en ole koskenut niihin painotus- enkä patterntaulukoihin ollenkaan. Se mitä tein oli että luin midin Finale Notepadiin ja siinä voi valita millä tyylillä se nuotit soittaa ---taisin valita Jazz? Johonkin valitsin Latin. Reggae oli valinnoissa myös mutta ei kuulostanut hyvältä näillä nuoteilla.
 
Eli siis kyse oli "soittajan" tulkinnasta. Miditiedostossa on "suora" versio.
huomasin tässä että mun klarinetinsoitto kuulostaa aika luonnonmukaiselta... lähinnä niinkuin sorsalta
levesinet
27.03.2010 00:29:38
Vihdoin pitenee melko hallitusti, kun on tiukat soinnutussäännöt
http://www.netsonic.fi/~kiskon07/musa/sal1.mid
Klezberg
27.03.2010 11:18:53
 
 
levesinet: Vihdoin pitenee melko hallitusti, kun on tiukat soinnutussäännöt
 
Mietinkin tuossa äskettäin...
 
Sinulla oli viimeksi julkaisemassasi koodissa sointukulku annettu lähtötietona. Minä ihan laiskuuttani käytän edelleen sointukulun automaattista sääntöpohjaista generointia. Jos sitten siirrytään malliin jossa osia aletaan toistaa, pitäisi kai tuossa automaattigeneroinnissa varmistaa myös että toistettavien osien välisissä siirtymissä sointu vaihtuu sääntöjen mukaan. Aika mielenkiintoinen ongelma.
 
Teetkö sointukulun edelleen käsin vai onko siihen automatiikka?
huomasin tässä että mun klarinetinsoitto kuulostaa aika luonnonmukaiselta... lähinnä niinkuin sorsalta
Klezberg
27.03.2010 11:28:30 (muokattu 27.03.2010 13:52:16)
 
 
Heitän vielä kolmannen viestin, ihan tahallani jaan eri asiat eri viesteiksi.
 
Minuahan on kiinnostanut myös ajatus automaattisesta, interaktiivisestakin, webbiradiosta, ja yksi kokeiluhan tuosta jo olikin. Serverini pyörittää kyllä perliä siinä kuin muutakin, joten ratkaisusi pohjalta voisi tuommoisen rakentaa jos on kiinnostusta.
 
Itse webbisovellus voisi olla semmoinen, että käyttäjä saa antaa/muuttaa lähtötietoja sekä antaa kappaleelle nimen. Generoitu kappale menee sitten soittolistalle. Aikaa myöten radio voisi tukea useampiakin genrejä.
 
***edit: Poistin teknistä harhailua tästä. Perl > Lilypond > Midi > jokin softa joka soittaa midin wav-tiedostoksi > webbiradio on todennäköisesti ihan toimiva ratkaisu. Jos ehdin, kokeilen tuota. Webbikäyttöliittymä ja interaktiivisuus ovat sitten jatkopohteita.
huomasin tässä että mun klarinetinsoitto kuulostaa aika luonnonmukaiselta... lähinnä niinkuin sorsalta
levesinet
27.03.2010 14:13:24 (muokattu 27.03.2010 14:26:53)
taulukko.wrand palauttaa satunnaisen indeksin taulukossa olevien painokertoimien mukaan.
Joo, voisin vihdoinkin tehdä funktion wrand(taulukko). Luokat ja oliot eivät ole yhtään mukavia Perlissä.
 
Ylemmällä tasolla sitten erilaiset patternit ovat ilmeinen kohde vastaaville ratkaisuille. Soinnut, skaalat, sävelet, rytmit yms.
On käynyt mielessäni, että tamborim- tai agogo-lyömäsoittimille voisin tehdä improvisatorisia sooloja käyttäen samankaltaista painomatriisia kuin nyt melodian rytmitykseen. Eli missä kulkee raja rytmillisesti yksiselitteisen patternin ja stokastisen patternin välillä?
 
Eri tasoilla voidaan toteutusta muuttaakin ilman että se vaikuttaa ylemmälle tasolle.
Joo, siltä alkaa näyttää. Protoilun pohjalta on jo helpompi hahmottaa sävellystä formaalina prosessina.
 
Levesinet kehittelee vauhdilla omaa algoritmiaan ... Toistaiseksi tässä on ollut haussa ymmärrystä ja hahmotusta niistä tarpeista ja käsitteistä.
Levesinet etsii musiikin teoriaa käytännön kokeiluin.
 
Teetkö sointukulun edelleen käsin vai onko siihen automatiikka?
Toteutin hätäisesti muutamia kielioppeja suoraan Perl-aliohjelmina (hyi hyi). Pitäisi kehittää jonkinlainen syntaksi, jolla voin rakentaa sointukuluista monipuolisia kielioppeja.
Tässä kuva siitä, kuinka hahmottelin kielioppia paperille:
 
http://www.netsonic.fi/~kiskon07/musa/sointukulku_AD1.jpg
 
Ensimmäinen sointu, joka ei mahtunut kuvaan, on 0.maj7. Voin kuvitella piirtäväni paljon erilaisia 8 tai 16 tahdin mittaisia kielioppeja. Kieliopista on kaksi versiota, sellainen joka soveltuu sointukulun kertaamiseen, ja sellainen joka soveltuu sointukulun lopettamiseen. Biisin alussa on 8+8 tahtia A-osaa, joten ensin voidaan soveltaa ensimmäistä versiota ja sitten toista (joka päättyy 6/9-sointuun).
 
Ennen kuin sovelletaan sointukielioppia, arvotaan toonika, jolloin selviää lopullinen sävellaji. Nyt siis alan uskoa sävellajeihin ja modulaatioihin. Soinnun aste taitaa sitten vaikuttaa melodian hajasäveliin. :)
 
Jos biisi ei vielä lopu, niin tuotetaan seuraava osa jonkun toisen sointukulkuskeeman mukaan.
Ensiksi arvotaan seuraavan osan toonika ja käydään muuttamassa päättyneen osan viimeiseen tahtiin dominanttifunktioinen sointu, joka liittyy modulaatioon.
 
Lisäksi minulla on nyt eri säestyspatternit ns. siirtymätahdeille (biisin alussa tai keskellä olevan osan kaksi viimeistä tahtia) ja finaalitahdeille (biisin kaksi viimeistä tahtia).
http://www.netsonic.fi/~kiskon07/musa/sal2_1.mid
 
webbiradio... SKINI...
Joo, se on ihan hauska idea. Täytyypä pitää mielessä.
 
antaa kappaleelle nimen
Oikeastaan innostuin ehdottamastasi nimeämisalgoritmista, koska minua huvittaa ajatus siitä, että voisin hetkessä tuottaa mielettömän määrän (sinänsä köyhiä) partituureja ja tiedän jo, millä periaatteella hissimusabiisini saavat nimiä.
Klezberg
27.03.2010 14:20:14
 
 
Pitää vielä korostaa, että tuo SKINI tuli ja meni. Webbiradiolle todennäköisesti toimiva ratkaisu syntyy tuolla perl > lilypond > midi > wav pohjalla. Ketju toimii jo midiin asti, haeskelen ratkaisua tuon wavin tekemiseksi suoraan komentorivltä (jotta serveri voi tehdä sitä automaattisesti).
huomasin tässä että mun klarinetinsoitto kuulostaa aika luonnonmukaiselta... lähinnä niinkuin sorsalta
Klezberg
27.03.2010 14:50:30
 
 
levesinet:
On käynyt mielessäni, että tamborim- tai agogo-lyömäsoittimille voisin tehdä improvisatorisia sooloja käyttäen samankaltaista painomatriisia kuin nyt melodian rytmitykseen. Eli missä kulkee raja rytmillisesti yksiselitteisen patternin ja stokastisen patternin välillä?

 
Tuo on juuri semmoinen asia joka minun ideaalisessa työkalupakissani jää pattern-olion sisäiseksi asiaksi. Pattern-olio ohjaa jotakin mikä lopulta soi. se voi toimia täysin deterministisesti, stokastisesti, heuristisesti, riippuen pattern-olion toteutuksesta ja sen saamista lähtötiedoista. Pattern-olio myös seurata mitä muualla tapahtuu ja perustaa valintojaan siihen.
 
Käytännön kehittelyssä pattern-oliot ovat aluksi täysin deteministisiä ja niitä kehitetään sitten tarpeiden mukaan. Ulkoa katsottuna pattern-olioilla on kuitenkin selkeät rajapinnat eikä niiden sisäinen toteutus näy ulospäin.
huomasin tässä että mun klarinetinsoitto kuulostaa aika luonnonmukaiselta... lähinnä niinkuin sorsalta
Klezberg
27.03.2010 16:30:02
 
 
Tuo automatisointi perlistä ääneksi toimii jo, ja kuulostaa yllättävän hyvältä. Pari askelta vielä niin tuon saa kuulumaan webbiin reaaliajassa. Jos kiinnostaa, niin laita tulemaan uudempi perl-koodi, vaikka sähköpostilla.
huomasin tässä että mun klarinetinsoitto kuulostaa aika luonnonmukaiselta... lähinnä niinkuin sorsalta
levesinet
27.03.2010 18:26:47 (muokattu 27.03.2010 18:27:20)
Klezberg: Jos kiinnostaa, niin laita tulemaan uudempi perl-koodi
 
Sävellysalgoritmin viimeisin versio tuottaa suunnilleen rondomuotoisia biisejä, joten olen saavuttamassa tavoitteeni, ja ohjelma tekee melodiaan taukoja kunkin osan loppuessa.
http://www.netsonic.fi/~kiskon07/musa/sal4.txt
 
Rondomuotoon liittyy myös se, että biisillä on pääsävellaji ja päämelodiainstrumentti. Sivuosat soitetaan muilla melodiasoittimilla kuin päämelodiainstrumentilla. Näin syntyy kontrastia. Sointukulkujen maailma on yhä varsin rajallinen. Melodia ei vielä varsinaisesti toistu, toisin kuin sointukulut.
 
MIDI-näytteitä:
http://www.netsonic.fi/~kiskon07/musa/sal4_1.mid
http://www.netsonic.fi/~kiskon07/musa/sal4_2.mid
http://www.netsonic.fi/~kiskon07/musa/sal4_3.mid
 
Välillä pitäisi varmaan pysähtyä miettimään tietorakenteita.
Klezberg
27.03.2010 23:15:18
 
 
Levesinetin vääntämä algoritmi ja ohjelma on kyllä kuuntelemisen arvoinen.
 
Experimental Automatic Webradio onkin siksi heittänyt pseudointialaisen musiikin toistaiseksi mäkeen ja tarjoaa nyt pseudobossanovaa, toistaiseksi koemielessä. Teknisessä toteutuksessa on puutteita ja se kuulunee myös rytmillisinä nytkähdyksinä jotka eivät siis ole lähtöisin alkuperäisistä sävellyksistä.
 
Ja web-osoite: http://htoyryla.dyndns.org/bossa
ogg-stream: http://htoyryla.dyndns.org:8000/prog.ogg (esim. vlc:llä kuunteluun).
huomasin tässä että mun klarinetinsoitto kuulostaa aika luonnonmukaiselta... lähinnä niinkuin sorsalta
levesinet
28.03.2010 21:56:47 (muokattu 30.03.2010 20:27:21)
Klezberg: Levesinetin vääntämä algoritmi ja ohjelma on kyllä kuuntelemisen arvoinen.
Kiitoksia kannustuksesta. Tässä viimeisimpiä tuloksia poikkeuksellisesti digipianoni MIDI-saundein:
http://www.netsonic.fi/~kiskon07/musa/Bossa1.mp3
http://www.netsonic.fi/~kiskon07/musa/Bossa2.mp3
http://www.netsonic.fi/~kiskon07/musa/Bossa3.mp3
Melodiat saa jo muistuttamaan jotain jazz-improvisaation tapaista.
 
Perhaps the most radical potential for automated composition resides in the capability of a single program to generate many distinct pieces of music. One might think of such a program as a new kind of "record" that plays a different piece every time. The possibilities range from the mundane, such as computer-composed music for fast-food restaurants and supermarkets, to the sublime. We have now seen the appearance of a new type of composer: the metacomposer, who shapes compositional principles as fluently as traditional composers have shaped compositional material. Far such artists the originality of the music will clearly depend on the originality and subtlety of the programming.
http://www.kurzweilai.net/articles/art0305.html?printable=1
 
Cantabile?
http://www.netsonic.fi/~kiskon07/musa/Beguine.mp3
levesinet
14.04.2010 18:12:46
Klezberg: siltä varalta että vaihdan tuon sointukulun generoinnin ja rupean generoimaan valsseja (mistä aloitinkin) ja sitten peräti sitä klezmeriä.
Joko syntyy klezmeriä?
Lisää uusi kirjoitus aiheeseen (vaatii kirjautumisen)