PC Engine Homebrew News: The duo that brought you FX-Unit Yuki returns! A demo for "Nyanja!" is available, an action platformer akin to games like Bubble Bobble & Snow Bros in gameplay style.
Main Menu

Visual PCE Music Player V3 Update

Started by ccovell, 12/21/2014, 07:45 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

ccovell

Hi, folks.  Another little project I started working on is a tool that plays PCE game music, and displays each channel's notes, volume, and waveform (instrument) visually, like a player piano.

IMG

This is Version 3 of my player, which adds TIMING for each song, and an option to have the player Autoplay all songs (and stop at the last song before sound effects.)  I've removed the pitch bend because it was a little silly.

Please make comments and suggestions for improvement!

Download: chrismcovell.com/data/HES_Visual_Player_V3.zip

I've written a how-to for converting/hacking HES to my player:
chrismcovell.com/texts/Howto_HES_to_Visual.txt

Here are the game contents:
Newly added:
The Kung-Fu (Chinawarrior)
R-Type
Battle Lode Runner
Magical Chase

Aldynes
Alien Crush
Ankoku Densetsu (Leg. Axe II)
Blodia / Timeball
Bonk's Adventure
Cratermaze
Devil's Crush
Devil's Crush (stereo hack)
Doraemon Meikyuu Daisakusen
Dungeon Explorer
Dungeon Explorer (NES sound)
Dungeon Explorer (NES before mix/arp)
F-1 Dream
Keith Courage / Wataru
Makyou Densetsu / Legendary Axe
Maniac Pro Wrestling
Neutopia
Neutopia II
Ninja Spirit
Out Live
Sidearms
Son Son 2
Super Star Soldier
Victory Run


Display:
Each channel's frequency/note (with higher notes towards the left and lower notes towards the right) is printed in a different colour, from red to purple.  The volume of each channel likewise is in a dimmer shade of the same colour.  If one of the noise channels is active, the 32-level noise frequency is printed near the right edge of the screen in grey.  Each time the game music changes the sample waveform, it is printed in a box on the right side of the screen (if no other waveforms are currently being printed.)  Everything scrolls upwards, like a ticker tape/seismograph/player piano, as the song is playing.

Controls:
For now, I and II change the game's subtune, RUN stops the music playing but holds all sound channels active, and SELECT swaps muting/solo settings for all sound channels.

Joypad Left and Right move the cursor to the various options.  Up/Down changes each option.  You can:
- set each of the 6 channels on/off
- zoom out to view more of the note range
- clip the visible note range (at 1x etc) or have all note writes overlap on-screen
- change whether the channel volume display is at the left / right side of the screen, or off.  Also, the waveform write display can be set on/off.
- change the playback speed from 8x down to 1/16x
- turn on/off the "Autoplay" option, which goes to the next song when its time is up.

Basically the Zoom, View, and Speed functions allow you to get a detailed display of each note, or a zoomed out overview of the song.  See below:

IMG

Zooming is necessary because there are 4096 frequencies for each sound, but the display is 512 pixels across (1/8 of the possible notes).  So the options are to clip/limit the view, or zoom down the view.  Zooming out means you can see the entire note range, but minute changes like vibrato may not appear in the zoomed out view.

Have fun playing!

Phase

This is pretty neat, had some fun messing around with the channels on a bunch of songs.
(noob questions) Are you planning on making a tutorial for how to convert roms to music roms? I'd like to play around with Air Zonk and Blazing Lazers.
Do you have any future plans for this?  What could you use this for, or is it just for fun?

ccovell

This is mostly just for fun.  Game programmers/musicians can use it to figure out how some games made their sound effects, for example (through volume/frequency changes).  Or you could use it to isolate certain channels (eg, for learning how to play it on keyboard/guitar...)

This tool uses the already ripped HES music format.  HES files themselves are playable PCE ROMs, usually, so I look into the first bank of the HES file to find out the PLAY/INIT addresses, and run the HES file in an emulator to see what banks it gets mapped into, as well as what ZP and regular RAM it uses, and my player can have its RAM use adjusted so they don't conflict.

Reproducing the banks, Play and Init addresses of an HES file (by modifying an existing .asm file in the "music/" directory should get it running in the player.  But getting note/volume information and channel muting means trapping all the HES file's writes to the sound hardware, and rerouting them to my code.  The .asm files in the "music/" directory in my source code contain most of what changes between each game's music.

Duo_R

Add my YouTube channel: https://youtu.be/sOg93QUtlg0
For sale trade list: https://tinyurl.com/2csm7kq

TurboXray

This is an awesome idea. Nice work :)

spenoza

There are some drum effects that would be awesome to pin down.

Nazi NecroPhile

I'm too musically retarded to do much with this, but it's dang cool.  :mrgreen:
Ultimate Forum Bully/Thief/Saboteur/Clone Warrior! BURN IN HELL NECROPHUCK!!!

Opethian

now for Brains Town in this I would be indebt
IMG

esteban

Quote from: guest on 12/22/2014, 10:08 AMI'm too musically retarded to do much with this, but it's dang cool.  :mrgreen:
Same here. I still haven't even tried to figure out how to use a flash card/cart/whatever yet.


I am behind Le Curve.
IMGIMG IMG  |  IMG  |  IMG IMG

ccovell

#9
Original archive (Ankoku Densetsu, Keith Courage, Victory Run) updated with 3 more game tunes:

Neutopia, Maniac Pro Wrestling, Dungeon Explorer.

SuperPlay

Just having a play with this, looks like I am going to be busy for a while :-)

TailChao

Fantastic work, this is very helpful :)

ccovell

#12
More tunes in a new archive

Contents
Legendary Axe (Makyou Densetsu)
Alien Crush
Devil's Crush (Devil Crash)
Bonk's Adventure (PC Genjin)
Super Star Soldier
Ninja Spirit (Saigo no Nindou)

Also included are updated libraries that handle Timer IRQs for games that use sample playback.  Unfortunately, due to the high frequency of the Timer, there will be some glitching on-screen due to scanline interrupts being... interrupted.  Not a major problem.

ccovell

I've added quite a few tunes, and implemented an "Autoplay" function.  Check out the 1st post.

touko


TurboXray

Super Star Soldier has something weird going on with the DDA channel, for one of the tracks. It's not playing clearly (sounds a little jumbled and genesis-y). You think this might be the hes file itself?

ccovell

#16
Hmmm... I didn't notice that, but SSS is actually a problem one because on real hardware it sometimes fails to play samples when a song gets started.  I'm still learning how to make smooth HES hacks on games that use samples.

edit: I just compared Super Star Soldier on HuCard (on my CoreGrafx) and my HES Visual version, and both have identical-sounding samples (ie: sounding really nice).  The only change I made was increasing the global balance (to $FF) because the original HuCard tunes are too quiet.

esteban

I am ashamed to admit that I still have not tried the VPCEMP. :(
IMGIMG IMG  |  IMG  |  IMG IMG

ccovell

Music Player updated, with the following tunes added:

The Kung-Fu (Chinawarrior)
R-Type
Battle Lode Runner
Magical Chase


Link: https://www.chrismcovell.com/data/HES_Visual_Player_V3.zip

elmer

Excellent, thanks!  :D

I remember seeing the music player on your video about how developers made their music. It looks like a brilliant tool for aspiring musicians who want to learn how the PCE masters made their music.

Arkhan Asylum

hey it's kinda like what piano-rolling music looks like instead of using a tracker!

;) lol
This "max-level forum psycho" (:lol:) destroyed TWO PC Engine groups in rage: one by Aaron Lambert on Facebook "Because Chris 'Shadowland' Runyon!," then the other by Aaron Nanto "Because Le NightWolve!" Him and PCE Aarons don't have a good track record together... Both times he blamed the Aarons in a "Look-what-you-made-us-do?!" manner, never himself nor his deranged, destructive, toxic turbo troll gang!

NightWolve

Wow, only you could've coded this! Very impressive, hundreds of work hours here for what would've taken anyone else thousands!

ccovell

Thanks!  It wasn't all that difficult (except for the moving h-interrupt framebuffer scroll restart) to get the main code up and running, nor did it take all that long.  The rest was just minor tweaks and improvement, then hacking the game HESes.  And this latter part is quite therapeutic and can be fun.