Skip to content


Folders and files

Last commit message
Last commit date

Latest commit



4 Commits

Repository files navigation

TX81Z Programmer

This is an MS-Windows software editor for the 1987 Yamaha TX81Z synthesizer module.

The TX81Z Programmer was originally released on May 25, 2005. I originally released it as $20 shareware, but now I've decided to release it as open source under the GNU Public License version 2.

This code was originally written on Visual C++ 6. I now have it configured to compile on VS2015 Community Edition.

Software Dependencies

File Layout

  • Directories:
    • doc/ - docs and HTML Help file project
    • setup/ - installer project
    • src/ - executable project
    • src/wnd/ - application windows created using CreateWindow
    • src/dlg/ - application windows created using CreateDialog (ie they have a dialog resource, which is usually made with the dialog editor)
    • src/ctrl/ - custom dialog controls
    • src/msg/ - general code library (linked list, files, paths, error handling, random numbers, string processing, etc.)
    • src/gui/ - general gui library
    • src/midi/ - low-level MIDI library (send sysex message, etc.)
  • Files:
    • src/prog.h - global constants
    • src/prog.c - global procedures and WinMain(), which creates the main window
    • src/wnd/mainWnd.c - main window
    • src/tx81z.c - high-level TX81Z-specific MIDI library (send voice, etc.)
    • src/freqratios.c - tables of oscillator frequencies
    • src/tx81z_init.c - tables of init data
    • src/tx81z_meta.c - structures for representing the TX81Z's internal state


  • Each .c file contains 8 sections. The first 6 sections declare what's in the file:
    • Global Constants
    • Global Procedures
    • Global Variables
    • Unit (file scope) Constants
    • Unit Procedures
    • Unit Variables
  • The next 2 sections are:
    • Global Procedure definitions
    • Unit Procedure definitions
  • The global declaration sections are duplicated from the header files. I did this to make it easy to browse the contents of the file and jump from declaration to definition in Vim. It's probably not that useful in Visual Studio.
  • A global identifier is composed of the name of the module, an underscore, and the procedure name.
  • A unit identifier is similar but begins with a two letter lowercase abbreviation.
  • The files freqratios.c, tx81z_inits.c, and tx81z_meta.c are #included by other .c files where they belong (just to get them out of my face), so they are not included in the project.


An editor for the Yamaha TX81Z synthesizer module (Windows)



Unknown, Unknown licenses found

Licenses found






No packages published