Skip to content
/ PSGed Public

Experimental application for MSX computers to make music working directly with the PSG registers

Notifications You must be signed in to change notification settings

mvac7/PSGed

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PSGed

Author: aorante (aka mvac7)
Architecture: MSX
Format: ROM 32K
Programming language: C and Z80 assembler

Includes a minimalTech demo song by neuroflip



Description:

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.


Author's Notes

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.



The little history of PSGed

Talking about PSGed is talking about procrastination, electronic music, energy drinks and chocolate cream sandwiches.


Chapter 1. How do I do this?

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.

PSGed v0.1
PSGed v0.1b

PSGed v0.1
PSGed v0.82b

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.


Chapter 2. What if it can be done better?

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.

PSGed v2.0b
PSGed v2.0b

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.

PSGed v0.90b
PSGed v0.90b


Chapter 3. The crazy ones of the chiptune.

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
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.

Those times were very crazy. Parties, Beer, energy-drinks and above all a lot of noise !!!! YEAH!

This experience made me think of an application oriented to live playback and this led to the next chapter:


Chapter 4. Drum and Bass Machinator!

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)

GrooveSXlive v0.03b
GrooveSXlive v0.03b

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.

TARP
The Alan Randoms Project

Drumm
GrooveSX Drumm


Chapter 5. Back to the future.

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.

Have I ever told you, that my main objective was actually to make a Tracker for MSX Yamaha computers with the SFG-01/5 module?


openmoji thinking-face

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.

grooveSX_tracker
a tracker-like sequence editor!

mvac7 (aka aorante)


Requirements:

To compile:

To run:

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.

Acknowledgements

I want to thank the following persons, who directly or indirectly helped me to achieve the development of this project.



Task List

PSGed v0.4b ROM (16/11/2010)

  • 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.

PSGed v0.5b ROM

  • 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).

PSGed v0.7b ROM

  • 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+

PSGed v0.8b ROM (20/11/2010)

  • 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.

PSGed v0.82b ROM (26/01/2012)

  • Real-time modification of AY records in playback mode.

PSGed v0.83b ROM GitHub Release

  • 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.

Future releases

  • 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)

More and better

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:

And if you want to use your MSX as a musical instrument, you can try the MSX Synth application from Paxanga soft.

About

Experimental application for MSX computers to make music working directly with the PSG registers

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published