B00daW #1 Posted September 22, 2008 (edited) Here is a WIP Channel F System II music sequencer that I've taken up coding. This is my first coding project to date. http://average.morphcat.de/channelf ================================================= Badman Bandstand - Channel F System II Sequencer Version: 0.1 (Sprout) Date: 09/21/2008 Coder: B00daW ================================================= ============== Introduction: ============== OK. First off, don't ask me why I decided to make a sequencer for this old, single channel, mediocre console. I just wanted to and I got to it to try to make it. This is my first grand scale coding project to date, so don't make me cry, please.;P Yeah. The Channel F System II is fully capable of almost a full range of sound, and that's what I aim to accomplish with this sequencer. The System I version's sound was pretty much broken and wasn't really able to emit the same crisp audio as the System II; being crude square wave grinding noises. Channel F has THREE different square waves it's capable of playing. In this "Sprout" version of the sequencer, we are capable of using the middle-tone "tenor" square. All three are: Baritone, tenor, and alto. Baritone is rather distorted, and you will be able to hear what I mean when you try to play the currently lowest available note (G3); even though we aren't accessing the baritone square. The tenor sounds rather crisp and enjoyable. The alto is rather ear piercing and not very practical. I intend on expanding Badman Bandstand to include both squares for completion sake anyway. However, the interface to control both will not be as easy as the tenor square, since both will be so out of tune and useless for standard notation-based composition, but could provide use to game development or glitch beat music. ================================= Why the name "Badman Bandstand"? ================================= The British version of the Fairchild Channel F - System II was called the "Adman Grandstand." It's a little pun. :) ================================================ What's needed and included in Badman Bandstand? ================================================ - Badman Bandstand code - DASM for DOS/Windows (v2.20.10b) - Channel F System II specific version of MESS for Windows. (Unfortunately, due to 4 year past development on MESS to date, the correct System II sound emulation has been lost in their CVS archive. I do have the correct source from the person who coded it in the first place, but implementing it now with the current source state of MESS wouldn't work and would be pointless. As a matter of fact, it would almost be necessary to "port" the old MESS code to the new version of MESS for it to even work. Fortunately, I'm currently working with the developers of MESS to have this added into one of their regular, monthly builds of MESS in the future. Also another important point to add, I have had someone verify on hardware that this sequencer is accurate and works for musical composition. :D) Linux/Mac Users: You will need your processor and OS-specific build of DASM (v2.20.10b), and someone with Windows and the special MESS build to rip your song for you. ============================= How to use Badman Bandstand? ============================= - Open up "song.inc" to get started. The instructions are included in the "song.inc" and the example should suffice the average user to be able to create a song. Believe me. If not, get a hold of me and I'll try to break it down for you. - Compose your song. - Sign/Label your song in "sig.inc" The instructions are included within "sig.inc". They are very self explanatory. Don't mind the extra code, and leave it alone. :D - Assemble and play your song. (Windows users:) Use the appropriate batch file to assemble the song. "!compile" will compile the song's binary file and display to you the output or any errors DASM deems necessary for you to see. "!compile+run" will assemble the song and run it through MESS for you. You will most likely be using this command. "!run" runs an already assembled song binary in MESS for you. (Linux/Mac users:) I'm going to assume you know how to download DASM (v2.20.10b) and make an executable script to run MESS in WINE or Parallels on your machine. :D ============= Extra notes: ============= If anyone has interest in making hardware recordings of songs, wishing to collaborate on the project, or have any questions regarding Badman Bandstand, track me down and get in touch. ======== Thanks! ======== SeanRiddle, e5frog, Blackbird, Urchlay, Andrew Davie, MESSdev, and others! Edit: Not really sure about the typo. xD Edited September 23, 2008 by B00daW Quote Share this post Link to post Share on other sites
Allpaul #2 Posted September 23, 2008 This looks cool! Quote Share this post Link to post Share on other sites
e5frog #3 Posted October 2, 2008 (edited) About the signature: ;===========================================================================; Signature ;=========================================================================== ; Sign your work under the second .byte line of "signature:" ; Format: "Song ·Author· Year" ; ; **Leave this alone!** ; signature area calculation org [$800 + [prog_size * $400] -$15 - $10] ; Sign below here on the second .byte line! signature: .byte "28i.2" .byte "NWNPNPNW ·B00daW· 2008" .byte 0,0,0, 0,0,0, 0,0,0 ; 7 bytes of data for Multi-Cart ; ; **Leave this alone!** himenu: lisu 3 ; load the latch value in 'O'33, #r27 lisl 3 lr A, S st ; set the latch jmp $0000 ; jump to reset vector- BIOS will start normally .byte "28i.2" can be removed as it is only used to indicate build number of Pac-man. The Multi-Cart data (last seven bytes) is only needed if program size is 8k, as those bytes are needed to make sure the program continues if the latch changes somewhere in the middle of running it... it's a fail-safe. And ofcourse, it's not needed at all if it's not included on an autoswitching multicart. The .byte 0,0,0, 0,0,0, 0,0,0 is only a filler. You can put your signature at the last bytes and just remove the number of bytes that your signature has: org [$800 + [prog_size * $400] -(signature size) ] if signature is "NWNPNPNW ·B00daW· 2008" that's 22 bytes, you can write: org [$800 + [prog_size * $400] - 22 ] or org [$800 + [prog_size * $400] -$16 ] if you don't like mixing hex and dec. ... or fill around it with any characters or hex-bytes you like to make it look good in a hex-editor. Great work, I look forward to hearing more nice music! Edited October 2, 2008 by e5frog Quote Share this post Link to post Share on other sites