Jump to content
IGNORED

LynXmas 2020 Game Jam


Igor

Recommended Posts

As there seems to be no time... So I fell for a traditional Xmas tune. Jingle Lynx Bells in a jazzy setting. Using only 3 channels.

1073409071_Screenshotfrom2020-12-0807-17-12.png.a34c9a44a8395f97894a233e8bf499d9.png

But there is no chance to get to the level @Fadest and @Nop90 are showing.

 

I also dicovered a new workflow! By playing one track at a time on the piano I can then export the tune to MusicXML and from the net I found a tool xml2abc.py that creates ABCmusic out of it.

  • Like 2
Link to comment
Share on other sites

5 hours ago, karri said:

So I fell for a traditional Xmas tune. Jingle Lynx Bells in a jazzy setting. Using only 3 channels.

[...]

I also dicovered a new workflow! By playing one track at a time on the piano I can then export the tune to MusicXML and from the net I found a tool xml2abc.py that creates ABCmusic out of it.

Right now, I'm trying to convert Jingle Bells and some others Christmas songs into ABC, it is a such a pain for may poor skills...

Tried xml2abc but it gives me something unreadable (don't know for you, but in France, we never used ABS notation but Do, Ré, Mi... at school, and I was not very attentive in music courses) and replay very bad.

Seems like ABCExplorer get better results (it can import midi files also), but till, I think that there are some conventions of ABC that are not managed in your library ?

I know you send me years ago a small documentation for ABCMusic, do you still have it ?

 

 

Edited by Fadest
Link to comment
Share on other sites

27 minutes ago, Fadest said:

I know you send me years ago a small documentation for ABCMusic, do you still have it ?

@Fadest My abc notes from back in the day for both cc65 versions are attached here on the first post (it's furthest down on the first post). Probably containing mostly info I've gotten from Karri in the first place. https://atariage.com/forums/topic/256753-atari-lynx-game-development-tools-and-tutorials-wip/
 

Edited by Turbo Laser Lynx
  • Thanks 1
Link to comment
Share on other sites

19 minutes ago, Fadest said:

Right now, I'm trying to convert Jingle Bells and some others Christmas songs into ABC, it is a such a pain for may poor skills...

Tried xml2abc but it gives me something unreadable (don't know for you, but in France, we never used ABS notation but Do, Ré, Mi... at school, and I was not very attentive in music courses) and replay very bad.

Seems like ABCExplorer get better results (it can import midi files also), but till, I think that there are some conventions of ABC that are not managed in your library ?

I know you send me years ago a small documentation for ABCMusic, do you still have it ?

 

 

I could not find it... But I will keep my eyes open. Perhaps I published something on AtariAge?

 

But I might publish a python script to convert MusicXML stuff to Lynx ABC format. In any case I need it myself as well.

 

  • Thanks 1
Link to comment
Share on other sites

There's actually a charming uniqueness to these very colorful and playful type of graphics and it's kind of refreshing and cool to see. Look forward to seeing the end result!

 

On 12/3/2020 at 2:52 AM, Nop90 said:

Refined the mockup. My gfx skills are terrible, aren't they? ?

 

img2.png.e8b5c04de62f63d51190aa2bd43be810.png

 

Someone will make it look better one day. Now I'm coding the tiles animation and the game logic to test if the game is as good as I think in my head.

 

 

Edited by Clint Thompson
  • Like 1
Link to comment
Share on other sites

1 hour ago, Fadest said:

Tried xml2abc but it gives me something unreadable

ABC tools use as base time a note of a quarter and shorter notes are written as a fraction like A/2 that is a chrome. A/2 can be also written A/

 

Lynx driver doesn't use the divider sign, so you have to multiply the notes lenght to have the shortest note as base and adjust the playing time.

 

So CDE/CDE/ needs to be converted in C2D2EC2D2E . This is what I learned in the weeked end and now writing/converting tunes for the Lynx ABC driver is super easy.

 

 

Edited by Nop90
  • Thanks 1
Link to comment
Share on other sites

I found the manual :) '

 

It was in the comments of the code. What a silly place for it.


 

; The Lynx hardware keeps the sound going on without CPU support.
; During music interrupts the CPU will control the volume changes for fadeing
; out the instrument sounds.
;
; You can interrupt a sound playing by starting a new sound with abcplay()
;
; The numbers work on bytes currently. Setting delays should be capped at 255
;

;----------------------------------------------------------------------------
;
; C entrypoints
;
; You need to call abcstop() at init time before using abcmusic
;
;
; extern void abcplay(char chan, char *tune);
; extern void abcstop();
; extern unsigned char abcactive[4];
;
; The tune supports the following elements:
; Notes CDEFGAB
; Octave higher cdefgab
; Sharp notes ^C ^D...
; Flat notes _D _E...
; You can also make a note one octave lower by a comma C, D,
; Or one octave higher with an apostrophe c' d'
; Break in the music is z z2 z3
; Longer notes C2 C3 C4
;
; For direct sound control there is also a few exposer internals
; extern void __fastcall__ abcoctave(unsigned char chan, unsigned char val);
; extern void __fastcall__ abcpitch(unsigned char chan, unsigned char val);
; extern void __fastcall__ abctaps(unsigned char chan, unsigned int val);
; extern void __fastcall__ abcintegrate(unsigned char chan, unsigned char val);
; extern void __fastcall__ abcvolume(unsigned char chan, unsigned char val);
; 
  • Like 1
Link to comment
Share on other sites

Music done. Finally.

 

The workflow for me was Musescore3 -> Export to MusicXML -> xml2abc.py -d 8 Jingle_Lynx_Bells.musicxml

This provides a fairly usable dump like below. The V:1 is voice 1
 

V:1
 Ge- e2 d2 c2 | G8 | Ge- e2 d2 f2 | A8 | Af- f2 e2 d2 | B8 | ggzf z dze- | e4- ee- e2 |$ %8
 Ge- e2 d2 c2 | G8 | Ge- e2 d2 c2 | G8 | Af- f2 e2 d2 | ggzg z g2 ^g | a2 g2 e2 dc- |$ %15
 c2 z g- g4 |: e'2 e'2 e'4 | e'e'ze'- e'4 | e' g'3 c'2 d'2 | g'8 | z f' f'2 f'2 f'2 | %21
 f'e'ze'- e'4 |1$ e'2 d'2 d'e'- e'2 | d'4 f4 :|2 g'2 g'2 f' d'2 c'- || c'2 z c'' c'c'' c'2 | %26
 c''2 z2 z4 | z d''^d'' z e''c''g'f' |$ e'f'^f'a' g'e'c'd' | _e'c'd'c' z4 | z4 z _a (3=ac'a' | %31
 g'e'c'b gedc | dgef _ac'e'g' |$ _b' z _a'g' g'2 z f' | e'2 z c'' b'2 z a' | %35
 ^g'2 z f'' e''2 z d'' | c''2 z c''' b''2 a''2 | g''a''b''_e''- e''4 | z2 z e' f'e'f'g' |$ %39
 e'c'_af ecd^d | efe'_e' d'gbc' | z2 z _B- B4 |] %42
V:2
 E z z2 E2 z2 | z8 | E z z2 A2 z2 | E3 F- F4 | F z z2 G2 z2 | B2 c2 B2 c2 | ^c2 d2 e2 d2 | %7
 A2 B2 A2 G2 |$ E z z2 E2 z2 | z A z z D z3 | E z G2 A2 z2 | z8 | F z z2 G2 z2 | cczc z c2 z | %14
 ^f2 e2 _B2 AG- |$ G2 z _e- e4 |: b2 b2 c'4 | bbzc'- c'4 | g g3 c2 d2 | e'8 | z a a2 a2 a2 | %21
 _agzg- g4 |1$ g2 ^f2 f^g- g2 | a4 z4 :|2 g2 g2 a f2 e- || e2 z2 z4 | z2 D z3 D2 | D3 D- D4 |$ %28
 D2 z D4 z | z3 _E4 z | z2 A2 z2 A2 | z D3 z B2 z | z2 _A2 z2 A2 |$ g z f_e e2 z d | %34
 z D- D2 z D- D2 | D3 D- D4 | z D- D2 z D- D2 | z2 F2 z2 F2 | z2 F2 z2 F2 |$ z z z2 z _A z2 | %40
 z z z B- B4 | z2 z F- F4 |] %42

You still have to combine binds like e- e2 should be e3. My abcmusic is not clever enough to combine the notes.

Plus double ,, and double '' is not supported. If you want it change the octave. O2 e'' is equal to O1 e' or O0 e.

Plus all extra stuff with % and $ marks should be deleted.

 

The python module is now in my game repo with my Musescore3 tune. In case you have similar needs.

 

Perhaps I need to figure out what happens in the game now. After all, gameplay matters...

And then the last thing is the graphics.

 

And the size is still just 18377 bytes. No worries :) 

  • Like 2
Link to comment
Share on other sites

Attached there is a test rom with the complete tune of my game (no video, only the audio) in infinite loop.

 

The tune was converted from a free (Creative Common license) tune found on The Mod Archive site. I can try to make some gfx icons when needed, but there is no way I can compose original musics.

 

My creative part in making this tune was adapting the ABC driver, tha seems to work as expected. 

 

Happy listening:

 

ABCTest.lnx

 

Edit:

 

This is the tune transcription. All the game code will be released as open source after the Jam

 

char tune0_A[] = "X7 O1 I1 V80 T7 R0 H0 K3 |: c2c4  G2c2c4  G2f2e2d2c2B2c2d2G2c2c4  G2c2c4  G2F2G2A2c2B2c2d2G2 c2c4  G2c2c4  G2f2e2d2c2B2c2d2G2c2c4  G2c2c4  G2F2G2A2c2B2c2d2G2 c2c4  G2c2c4  G2f2e2d2c2B2c2d2G2c2c4  G2c2c4  G2F2G2A2c2B2c2d2G2 c2c4  G2c2c4  G2f2e2d2c2B2c2d2G2c2c4  G2c2c4  G2F2G2A2c2B2c2d2G2 aecAaecAaecAaecAafcAafcAafcAafcAgecGgecGgecGgecGgdBGgdBGgdBGgdBG aecAaecAaecAaecAafcAafcAafcAafcAgecGgecGgecGgecGgdBGgdBGgdBGgdBG aecAaecAaecAaecAafcAafcAafcAafcAgecGgecGgecGgecGgdBGgdBGgdBGgdBG aecAaecAaecAaecAafcAafcAafcAafcAgecGgecGgecGgecGgdBGgdBGgdBGgdBG :";
char tune0_B[] = "X7 O3 I1 V60  T7 R0 H0 K3 |: C2C4  CcC2C2c2G2F2F4  FfG2G2g2G2C2C4  CcC2C2c2G2F2F4  FfG2G2g2G2 C2C4  CcC2C2c2G2F2F4  FfG2G2g2G2C2C4  CcC2C2c2G2F2F4  FfG2G2g2G2 C2C4  CcC2C2c2G2F2F4  FfG2G2g2G2C2C4  CcC2C2c2G2F2F4  FfG2G2g2G2 C2C4  CcC2C2c2G2F2F4  FfG2G2g2G2C2C4  CcC2C2c2G2F2F4  FfG2G2g2G2 A2A4  AaA2A2a2A2f2f4ff'f2f2f'2f2c2c4cc'c2c'2c2c2g2g4gg'g2g2g'2g2 A2A4  AaA2A2a2A2f2f4ff'f2f2f'2f2c2c4cc'c2c'2c2c2g2g4gg'g2g2g'2g2 A2A4  AaA2A2a2A2f2f4ff'f2f2f'2f2c2c4cc'c2c'2c2c2g2g4gg'g2g2g'2g2 A2A4  AaA2A2a2A2f2f4ff'f2f2f'2f2c2c4cc'c2c'2c2c2g2g4gg'g2g2g'2g2 :";
char tune0_C[] = "X7 O1 I1 V100 T7 R0 H6 K3 |: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz z2g2e2c4  G2c2e2f4  g4  d10       g2e2c8      c2a2g2f2a2g8       z2g2e2c4  G2c2e2f4  g4  d10       g2e2c8      c2a2g2f2a2g8       e10       ddccGGf10       efeeGGe10       ddccGGd10       ddccdd e10       ddccGGf10       efeeGGe10       ddccGGd10       ddccdd z2ggeecc3 GGcceeff3 g3 gd4  d6    ggeecc7     ccaaggffaag4  g4   z2ggeecc3 GGcceeff3 g3 gd4  d6    ggeecc7     ccaaggffaaggffeedd :";

 

Edited by Nop90
  • Like 4
Link to comment
Share on other sites

4 hours ago, Nop90 said:

The tune was converted from a free (Creative Common license) tune found on The Mod Archive site. I can try to make some gfx icons when needed, but there is no way I can compose original musics.

This is a good find. I also tend to go with original tunes when the time is limited.

Of course this year I composed a completely new tune "Jingle Lynx Bells". It has no connection to any known Xmas tunes, ?

-- just kidding --

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...