Author: aorante (aka mvac7)
Architecture: MSX
Format: ROM 32K
Programming language: C and Z80 assembler
Includes a minimalTech demo song by neuroflip
PSGed is an experimental application for MSX computers to make music working directly with the PSG registers (AY-3-8910).
It is designed with a graphical user interface easy to use.
As I explain in the description and in the story, this application is experimental, in the sense that it was a learning experience in programming and in the design of these types of applications, so it was not considered useful for musical composition.
Like me, it can serve as a reference to make a musical application. I hope it can inspire or help you in your developments.
I use the BPM unit in the tempo control
In programming I have used the VBLANK interrupt, so no fine tuning is available.
To identify the values I have used a BPM meter from a DJing software, but a check has not been carried out so it may be inaccurate.
Also keep in mind that it is measured only for computers running in PAL (50Hz), so in the case of using this application in NTSC, they will not correspond to the real tempo. It is possible that in the future it will be adapted for NTSC.
I will start by confessing that PSGed was my first attempt to develop an application for MSX computers using C and Z80 assembler.
At this time, I knew the MSX hardware because when I was a teenager I had programmed in BASIC and I had even done some assembly routines, but everything seemed very hard to me.
...until at some MSX user meeting, where I met Mr. Alberto de Hoyo (Nerlaska). He told me that it could be programmed in C using the SDCC cross-development compiler.
I found in Alberto's WEB a tutorial to create a ROM and doing a lot of research on the internet (there wasn't much about development with SDCC for MSX), and I was making my way through the fog of ignorance to the person I am today: A Smoke seller!
To share my experience with the world, I opened an exclusive Blog for PSGed, where I posted everything I learned. Mysteriously, one day a UFO abducted the blog and disappeared. If anyone knows anything, report it to agents Mulder and Scully. The truth is out there!
The idea of PSGed was to develop an application to create music under a Groovebox-type interface (such as electrives or 303), but when working directly editing the AY parameters instead of using instruments, it did not provide the desired functionality. For that reason I left it as an AY sound editor that includes a simple sequencer and did not add disk access functionality.
But it gave me ideas for a new, more complete version with improvements in the sequencer, where it allowed the entry of notes and changes in the sound parameters at the pattern level.
PSGed v2 reached an advanced stage of development but was more complex to use than the previous version, so I left the project. I made the mistake of continuing to not include instrument-based operation.
After some time of this failure, I started version 0.9 of the initial PSGed with improvements based on v2: new graphic interface design and patterns with musical note input.
But now I wantes to pause. However, during this time, because of my friend Neuroflip I got into the chiptune scene in Barcelona. A marginal musical subculture that moved through small spaces in the marginal neighborhoods of Barcelona. We formed a group called 303bcn and we started with Neuroflip's C64 where he was DJing his music, while I was doing VJing from an MSX connected to a video projector. To do this, I developed an application for VJing where using the keyboard you could visually interpret the music, showing different graphic effects.
veejingSX · Lowtoy Review
Later we went on to use Commodore Amiga computers, specifically three Amigas 1200: (2 for DJing and 1 for VJing). We needed an extra-long table to fit so many A1200s. But this is another story.
Those responsible for many of our concerts were the guys from Lowtoy. Very cool people.
This experience made me think of an application oriented to live playback and this led to the next chapter:
Continuing with the idea of creating a Groovebox type application, I started looking at the existing MSX players such as PT3 and WYZ and in the end I decided to try the WYZ one.
The WYZ player provides three channels to compose the melody plus a channel to launch effects (this is mixed with one of the three channels), allowing to provide the feeling of having 4 channels. The FX channel allowed it to be used for percussion or gaming sound effects. It also allows the use of the AY-3-8910 effect with the low frequency envelope, to create a sound with a sawtooth-like waveform, providing a great bass sound ideal for developing a Groovebox.
I contacted the programmer (WYZ) and I developed a demo that includes a matrix of buttons to launch patterns and to be able to perform or improvise the live playback (DJing). I named it grooveSX. (New in MSX Resource Center)
The problem that I found is that the WYZplayer did not serve my purposes. It was designed to reproduce songs efficiently in games or demos and did not allow to work directly from an editor so it required a version with important changes.
To develop the Groovebox application that I had devised, I needed to program a specific player and at that moment I didn't had the level of assembly programming for it, so I went to other projects.
Along the way, I have developed several music shows, TARP (The Alan Randoms Project) being the first one that I have published fully finished. I also developed a drum machine as part of a new vision of GrooveSX, this time in MSX-DOS format and with disk access.
In all this time I have also programmed some open source libraries, graphical tools (via Infinite Development System) and Random Monkey Generators. Nothing useful. For this reason, I now roam in the underworld of losers developers. If you need me, Who you gonna call? Ghostbusters!
I decided to open this project on GitHub, thanks to Retro DeLuxe, since he showed interest in this project.
It is possible that PSGed version 0.9 will be published soon and later an application called TDB based on the evolution of TARP but with editing. I do not rule out in the future being able to make the GrooveSX application, although it may already be published in a parallel universe.
Note: The images included are just a small sample of all the designs I have created. Shame haunts me for not finishing my projects. I deserve to be publicly punished with tarring and feathering for my offense to the MSX user community.
a tracker-like sequence editor!
mvac7 (aka aorante)
- SDCC v3.9 http://sdcc.sourceforge.net/
- Hex2bin v2.5 http://hex2bin.sourceforge.net/
A standard MSX computer with 16K RAM.
- You can record it to a FlashROM
- From disk using tools like ODO, loadrom, execrom, etc.
- From cassette using WAVeR or a similar tool.
I want to thank the following persons, who directly or indirectly helped me to achieve the development of this project.
- Neuroflip/303bcn: beta testing & ideas.
- Andrear: beta testing & ideas.
- Nerlaska: Code support.
- Marq/Lieves!Tuore: Code support.
- Avelino Herrera: Code support.
- Pentacour: nMSXtiles tool.
- Ramones: mouse code. (MSXblog) - (MSXbanzai)
- Baze: ASM Z80 routines
- Kun/Paxanga Soft Moral support. Another music app developer.
- Fubukimaru ASCII support and Markdown Advisor.
- Karoshi MSX Community
- change tempo to bpm (http://en.wikipedia.org/wiki/Tempo)
- increasing acceleration of change value in large numbers.
- load demos
- redesign the presentation of the sequencer.
- Add mouse control
- Help functionality (scroll)
- Pressing Stop, stop when you just play the end of the pattern.
- On the menu when the mouse is detected, select your choice.
- Redesigned main screen.
- Return Key to play song.
- Select key to play pattern.
- Bug. Stop the sound, to show Help screen.
- Bug. PLAY at the start of the interrupt / loop.
- 16 patterns memory.
- 32-step sequencer.
- Added Name and author information.
- Info window.
- Clear tool (CLR), delete the current pattern.
- New tool (NEW), delete all the song information (resets).
- Confirmation modal window (for New and CLR).
- Copy tool (cpy), copy the current pattern to pattern indicated.
- button (Set). Assigns the current pattern, at the position of the sequencer.
- After Stop. If the player is in pause mode, the stop key terminates the playback of the song. Shown in standby mode.
- Button enables/disables the loop mode of play.
- Added three tones in the pattern editor (offset).
- Mute channels by mouse click.
- Added second button (mouse/joystick) or Graph key to remove or add a silent item.
- Fixed bug in the interpretation of the volume / envelope, in the data structure.
- Fixed bug in the presentation of the playback position of the pattern.
- Fixed bug in direct change so play / song to play / pattern.
- Fixed problem with Sync (Using the asm statement: HALT).
- Changing the color palette to detect the VDP 9938 or higher (MSX2).
- Using PSG MegaFlashROM SCC+
- Added ComboBox control to select the envelope.
- Asm routines added. Andrear adaptation of mouse routines by Ramones.
- Editable fields in the Info window.
- Separation of the main player code to a function.
- Button to play all PSG registers [ins].
- Added window that displays the registers of the PSG.
- Separation of the stop code to a function.
- Update help text (summary).
- Help. Asm routine to return control line.
- Added on-screen presentation, "AY-3-8910 sound editor"
- Double-stop function. Place the sequencer to the first position.
- Copy to function. Shows the initial value, the current pattern.
- Sequencer. Added function insert step.
- Sequencer. Added function delete step.
- Edit screen. Added new features and changes for adjustment of noise and envelope areas.
- Bug. Update data at the end of song play without loop.
- Bug. After play in stop mode, when there will be a combobox, the music plays...
- New version logo.
- Added demo minimalTech / neuroFlip.
- Remove Demo3 to gain memory space.
- Changing the load screen. Added name and author of the demos.
- Real-time modification of AY records in playback mode.
- Replacement of old functions and libraries with the latest fR3el libraries.
- Reverse engineering to recover the graphics (PSGed/GFX/).
- RLEWB compression of graphic and demo datas.
- New Load screen.
- Help improvements.
- Support for keyboard shortcuts to select the control device.
- Control the keystroke when exiting a window/screen.
- Convert application to MSXDOS. (.COM)
- Add exit button.
- Add confirmation modal window, exit the application.
- Calculation of the BPMs for NTSC.
- Sequencer. Return Function Pattern (neuroflip). The number selected will be the pattern where the player becomes, when you finish the playback of the sequence and loop mode is enabled.
- Sequencer. Add 64 steps.
- Sequencer. Change current system notes.
- Save info registers in each pattern.
- Editor. Changing tone frequency value for offset. (-128>+128)
- Change in real time registers of tone frequency...
- Disk file access.
- get dir
- load file
- save file
- control parameters from 6 pots + 2 buttons (1 joystick input)
If you want to make music for MSX computers from an MSX, you have the great TriloTracker but if you are looking for the comfort of your daily computer, you have a great variety of good cross-trackers for different operating systems:
- TriloTracker (GitGub) [MSX]
- WYZTracker by Augusto Ruiz [Windows]
- Vortex Tracker II [Windows]
- Arkos Tracker 2 [Windows/Linux/MacOSX]
And if you want to use your MSX as a musical instrument, you can try the MSX Synth application from Paxanga soft.