disklaviers Archives - Alex's Piano Service

Making Archival Copies of Floppy Disks Using a Greaseweazle v4

I periodically encounter Disklavier floppy disks that will play acceptably in the piano, but which cannot be backed up on a computer. Player Piano Floppy Backup Utility (PPFBU) and other tools that usually are effective with Yamaha disks can’t see the files on the disk, and so my typical floppy disk backup routine doesn’t work.

Enter the Greaseweazle (see the Greaseweazle GitHub page). This is an inexpensive device that serves as a sort of translator between a conventional floppy disk drive, and your computer. It allows you to, essentially, “scan” the disk, bypassing whatever obstacles are causing your disk to be unreadable. You’re making a copy of the disk based on magnetic flux, rather than attempting to actually read it. With this scan, you can produce other disks in the future.

Scan the Old Disk

First, you’ll need a scan of the original disk.

There are many ways to do this, but using the Greaseweazle tools on GitHub, you can produce hfe files, which are relatively small bit-level scans. You can also scan the disk to an scp file, which is a very detailed, low level copy; however, this is likely not necessary, and the files are much larger (more than 20 MB to represent a 720 KB disk). If you do make an scp file, make certain to add the ––raw switch.

Note! I needed to add the ––drive=1 switch, as I was using a straight floppy disk cable without a twist. If you’re using a twisted floppy disk cable, you might need a different switch. See the Greaseweazle documentation for details.

Note also! Nearly all early Disklavier floppy disks at 720KB 2DD disks. You can check the difference by checking to see whether there are two holes. See below. If you have a 2DD disk, adding the ––format=ibm.720 switch is appropriate. If, on the other hand, you have a newer 2HD disk (typically used in the Mark III or later), you’ll need to use ––format=ibm.1440 instead.

2HD disks have openings at both corners, but 2DD disks do not. You’ll usually find the write-protect slider in one corner, but other will be blank.

Instruction: gw read ––drive=1 ––format=ibm.720 [DISKNAME].hfe
Instruction (optional scp file): gw read ––raw ––drive=1 ––format=ibm.720 [DISKNAME].scp

Executing the command gw read ––drive=1 ––format=ibm.720 OAC-1062-Chick_Corea_Classics.hfe on my computer.

Write the New Disk

Write the disk image with the following instruction:

Instruction: gw write ––drive=1 ––format=ibm.720 [FILENAME].hfe
Instruction (optional scp file): gw write ––drive=1 ––format=ibm.720 [FILENAME].scp

Executing the command gw write ––drive=1 ––format=ibm.720 OAC-1062-Chick_Corea_Classics.hfe on my computer.

Always test your duplicates! Even if you’re just storing your disks so that you have a collection of images for the future, write the image to a disk temporarily and check it by playing it in your piano.

In the case of the example above, the computer was able to read the original disk, and so I verified it could read the new one with PPFBU:

Checking the disk!

An Experience using Giebler’s DOM Package for a Clavinova Backup

I’m in the process of transferring files in a Yamaha CLP-156, a Clavinova from 1994, which uses an early version of ESEQ. I’ve been trying to figure out how to read these disks, and in my journeys, I encountered this Yamaha service note from 2004. They refer to a product called Giebler’s Yamaha DOM package, which is used for copying Clavinova and Disklavier files. I was curious to see if this different at all from the more modern tools I have available, and if it might have an edge reading older disks.

You can view the Yamaha DOM Package from Gary Giebler on the Giebler website. It’s a bit pricey — $54.95 at the time of this writing. But it’s a specialized tool, to say the least!

However, it requires an MS-DOS based version of Windows. I couldn’t get it to run in FreeDOS, as it required a Windows environment for the installation. I was able to get it running on Windows ME, running on physical hardware with an internal floppy disk drive. This is a very high bar to clear for installation — Windows ME and Windows 98SE are hard to install on modern hardware, to say the least, and Windows ME barely ran on the 2008 era computer I used for this process.

Eventually, I was able to improve on this. I’m now running it on a virtual machine using VirtualBox. To start with, I had to install Windows ME, and found a Windows ME VDI ready to use on Internet Archive. The Giebler software will install only in the Windows environment, but on the virtual machine it won’t run in it. It was necessary to install DOS Mode for Windows Millennium Edition, and then reboot into DOS. Obviously it can’t directly read the floppy disk drive from within VirtualBox, so I make images of the floppy disks, and then attach those to the session after booting into DOS.

Finally, I got everything installed, and I got to the first screen. This software has the following options, and none are particularly helpful for our purposes:

The Yamaha Disk Manager control screen. (Serial number and name are scrubbed from the status bar.)

I tried a handful of disks with it. I found its performance at reading disks somewhat limited compared to modern tools like Mark Fontana’s Player Piano Floppy Backup Utility (PPFBU). But it was able to look at disks and list their contents, and it had a pleasant old-timey feel. See, for instance, a directory listing:

The directory listing for a Christmas album I used as a sample.

I attempted to make a copy of the disk, and was met with this error:

Uh-oh. It won’t copy the disk.

So now, for my Clavinova. First, using Yamaha Disk Manager (YDM), I copy the track to the local disk:

Copying an MDA / ESEQ file to the local disk.

And then, I open DOMSMF, and am met with the following menu:

The initial menu in DOMSMF.

At this point, I can select “Convert Yamaha to Midi” and, remarkably, it works!

Instructing DOMSMF to convert the MDA file to MIDI.
There’s the resulting MIDI file!
Playing the song in Windows ME (before transferring it to an actual computer from the modern era)!

How to Make the Disklavier play the Piano Part of Any Song

The Yamaha Disklavier is a sophisticated piece of technology, but typically, you’re limited to Yamaha’s song library. Many Yamaha songs include both a piano part for the Disklavier and an accompanying music track, though the Disklavier piano part might differ dramatically from the original piano part in the song. In many cases, the piano tracks are recorded as accompaniments by artists, and are either added to songs that didn’t have piano originally, or that are designed to augment rather than to replace the piano in the original recording.

I recently had a customer ask if I could figure out a way for the Disklavier to play the piano portion of a particular song that was important to him.

To achieve this, I used four programs: first, Spleeter by Deezer to isolate the piano and separate it from the other components of the song, and then Audacity, a powerful open-source tool, to edit and combine the non-piano tracks. I chose to use the service Ivory to convert the piano audio to MIDI. Finally, I used Ardour to adjust the timing in the MIDI to perfectly sync it with the audio.

As an alternative to Ivory, Onset and Frames can be locally installed. This software is dated (2018), and there are many frustrations with attempting to run such an old Python program, so I opted not to use this solution. However, if you have a high-end system with a powerful GPU and the free time to get it running, it’s a free option. You’ll also need to train your own model, with was estimated to take several days on my GeForce RTX 4080.

Separating the Tracks

I used the 5stems model in Spleeter, which allows you to individually separate the piano. See the instruction below.

spleeter separate -o ./tmp -p spleeter:5stems "sample.wav"

The output of Spleeter.
Here’s a six-second excerpt from Norah Jones’s “The Nearness of You” with the piano.
Here’s the same six-second clip without the piano.

Recombining the Tracks

After reviewing each track, I found only the bottom vocals track had usable audio; the others were filled with artifacts, so I simply removed them. However, in songs with more instrumentation, this would be an important step. Review the tracks, listen to them individually, and remove any artifacts you can, applying filters as necessary.

This is what the isolated tracks look like without the piano.

Next, I used the Ivory App to transcribe the piano audio track. Ivory is an AI-driven piano transcription tool that converts piano audio into sheet music or into MIDI files. Utilizing advanced deep neural networks, it offers high transcription accuracy. I converted my piano.wav file (produced by Spleeter) into an mp3, and then uploaded it to Ivory.

Transcribing songs on Ivory.
The resulting MIDI file, as displayed in Ardour.

Syncing the Audio

After downloading the MIDI file, I found that the MIDI file did not properly sync with the audio. In order to solve this, I synthesized the audio (using FluidSynth with Yamaha C7 samples). I then imported this into Audacity, and played the isolated piano alongside the original audio. After a few attempts, I then moved the audio back and forth until I determined exactly how much time had to be added to properly sync the two pieces.

fluidsynth -a alsa -g 1.3 -m alsa_seq -i /usr/share/sounds/sf2/Yamaha_C7__SMB_.sf2 ~/DownloadedMIDI.mid -F ~/IsolatedPiano.mp3

The isolated piano comes in much too early!
The isolated piano is perfectly in sync with the original.

After carefully adjusting the audio which I’d synthesized from the MIDI file in Audacity, I determined that the MIDI file needed a total of 1.150 seconds added to it. This is a decimal fraction, rather than seconds in 60ths of a second, which is how Ardour determines time.

Seconds in 60ths = Integer Part + (Decimal Fraction × 60)

Just take the decimal component of the number (.150, in this case), and multiply it by 60. In this case, we end up with 1:09 seconds. Now we have a number we can use in Ardour.

I’ve now carefully moved the track to 1:09 seconds (or 1.150 seconds, according to my measurement in Audacity).
I’ve now extended the MIDI track, and can export it!

Once the MIDI file is downloaded, name the MIDI file from Ivory and the piano-free audio from Audacity identically, and transfer them onto a USB stick. The properly named files will look something like this:

01MySong.mid
01MySong.mp3

Provided the filenames are identical (excepting the extension), the two files will be recognized as the same song by the Disklavier.

Your Disklavier is now ready to play both files in sync! The keys will move to the isolated piano track, and the audio will play alongside it without any competing piano sounds.

Synthesized audio from the MIDI file (using FluidSynth with C7 sampling) along with the vocals.

Free Music Collection for the Nalbantov-Equipped Disklavier

Customers often ask where they can get songs for their Nalbantov-equipped Disklavier. If you’ve explored the other pages on my website, you know I’ve managed to cobble together a very large inventory of public domain music. For those using Nalbantov drives in older Disklaviers, I’ve preassembled a 108 disk selection, formatted using the ESEQ format compatible with those older systems.

I’ve put together a 108 Disk collection for the Nalbantov-equipped Disklavier, relying on the above selection of public songs (mirrored at https://mega.nz/folder/o4Zx0LxI#qLimb9LXm3vobvF-tspF_g). This is an excellent start for anybody who has recently upgraded their Disklavier, and is looking for some songs!

Using External Speakers with the Disklavier

I have a customer who recently upgraded his Mark IV to a DKC-900, and wanted to add larger Bluetooth enabled speakers. We used Rockville TM150B 10″ Speakers. Although the speakers are powered, and amplify signal quite well, we nonetheless found the audio output from the Disklavier was a bit low. I added an RCA preamp to amplify the signal going into the speakers. The RCA preamp is zip tied in place using 24″ zip ties. These work wonderfully for strapping components to the beams.

The speakers underneath the piano are present, but are no longer powered or connected.

An RCA preamp installed between the control center RCA output and the speaker.
The piano alongside its powered Rockville speakers, overlooking the ocean.
This piano connects to his network using a Powerline adapter, as discussed in my Connecting Yamaha Disklaviers to a Network article.

Combining CD Audio and MusicSoft Floppy Disks from Mark IV for the Enspire / DKC-900

Here’s a basic outline of the steps involved:

  1. Copy MIDI tracks from Floppy Disks using Player Piano Floppy Backup Utility.
  2. Rip Audio tracks from CD as MP3 files.
  3. Put resulting files in the same directory, making sure the MP3 files and MID files for a given song have the same names.
  4. Put the collection of files in a folder with the album name.
  5. Put the folder onto a USB stick.
  6. Insert the USB stick into your Enspire and enjoy!

Copy MIDI tracks from Floppy Disks

First, you’ll need copies of the MIDI files from the floppy disks. The best tool for this is Player Piano Floppy Backup Utility, created by Mark Fontana. It’s freeware, but he requests donations. You can download it from him, or you can download ppfbu_v1.4_setup.exe from my MEGA drive. You can read more about this process on the Disklavier Floppy Disk Backups, ESEQ and MIDI Formats page.

The most important part of this step is that you write the files as “Renamed MIDI files.” I typically name each one with the name of the track, and make sure each name starts with the track number (00, 01, 02…). This makes it much easier to keep track of which MIDI file goes with which MP3 later on.

Using PPFBU to extract the files, and then export them as Renamed MIDI files. I’m using a dedicated Windows XP box that I keep just for this purpose. You can rename the files in PPFBU before you export them, or you can rename the MIDI files after (like I did in this case).

Rip the Audio tracks from CD

You’ll need to rip the audio off of the corresponding audio CD. You can rip CD audio natively on Windows using Windows Media Player. In the Linux environment, I used Asunder. In the Mac environment, you can actually use the Music App. The main point is just to extract mp3 files for each track on the CD.

Ripping an Audio CD using Asunder on a Linux system.

Name and Organize the Files

Below, you can see the files listed after ripping the audio CD, and after backing up the floppy disk drive using Player Piano Floppy Backup Utility. The floppy disk tracks are MIDI files and have a .mid extension. These contain the instructions to operate the piano. The CD tracks have been ripped as MP3 files and therefore have a .mp3 extension—these contain the audio.

'01 - Kingston Trio - Tom Dooley.mp3'
'01 - Tom Dooley.mid'
'02 - Greenback Dollar.mid'
'02 - Kingston Trio - Greenback Dollar.mp3'
...
'12 - Kingston Trio - (Sinking of the) Reuben James.mp3'
'12 Reuben James.mid'

All the files are present, but they will not yet play correctly in the Disklavier, as the filenames do not match.

I wrote a short Python script to automatically rewrite all the filenames to match. Using the numbers at the beginning of each filename, it pairs together matching MIDI and MP3 files and names them whatever the name of the MIDI file is, but without spaces or symbols. This appears to be the same formatting of downloadable Disklavier albums.

Whether you use the script or not, the before and after directory listings indicate how you must rename the files.The script is called using the following syntax:

python merge.py /path/to/your/directory "Album Name"

$ python merge.py . "Kingston Trio"

Copied and Renamed: 01 - Tom Dooley.mid -> 01TomDooley.mid

Copied and Renamed: 01 - Kingston Trio - Tom Dooley.mp3 -> 01TomDooley.mp3

Copied and Renamed: 02 - Greenback Dollar.mid -> 02GreenbackDollar.mid

Copied and Renamed: 02 - Kingston Trio - Greenback Dollar.mp3 -> 02GreenbackDollar.mp3

...

Copied and Renamed: 12 Reuben James.mid -> 12ReubenJames.mid

Copied and Renamed: 12 - Kingston Trio - (Sinking of the) Reuben James.mp3 -> 12ReubenJames.mp3

Listing of resulting directory, “Kingston Trio”:

01TomDooley.mid
01TomDooley.mp3
02GreenbackDollar.mid
02GreenbackDollar.mp3
...
12ReubenJames.mid
12ReubenJames.mp3

Note that now the MP3 and MIDI files have identical names for each song, identical capitalization, and that all spaces and symbols have been removed. In the ENSPIRE, unlike earlier iterations of the Disklavier, filename length does not seem to matter. Here’s a graphical representation of the last folder, ready to move:

The filenames match! It’s ready to be put on a USB stick and played in your ENSPIRE.

It’s Time to Play!

At this point, you can move the complete folder (in this case, Kingston Trio) onto a USB stick, and insert it into the front of your ENSPIRE controller.

Once your USB is inserted, you’ll see the My Songs (5) option appear in the ENSPIRE controller app. (This image is copied from the ENSPIRE Controller Operation Manual created by Yamaha, which is available from them.) Just open up the “Album” (which is the folder you created for all of your files on your USB stick), and select a song! It’ll play the piano parts, and the audio will accompany it.

Mark IV Disklavier SSD Conversion Or Hard Disk Replacement

This article was contributed by Richard Zajac.

The Mark IV utilized a spinning hard disk, which was more than sufficient for the technology of its time. Even advanced systems like the Yamaha Disklavier don’t demand exceptionally fast read speeds, as piano notes aren’t played within microseconds of each other. However, spinning hard disks do come with inherent drawbacks. Being mechanical, they are prone to eventual failure, and are noisy. Additionally, during system updates, the limitations of their read and write speeds become evident, resulting in updates that can take nearly an hour to complete.

Whether you’ve chosen to upgrade because of the improved read/write speed, or you’ve simply arrived here because the hard drive has failed, or an update has been interrupted, read on!

First, you’ll need a new solid state drive with a minimum of 80 GB of storage capacity, as well as an IDE to SATA adapter. The 120 GB OWC Mercury Pro Legacy comes with all necessary components. (Note that, although Richard used this, and it fit neatly into the system, I installed mine using a 120 GB Patriot Burst drive and Kingwin SATA to IDE adapter, so my pictures differ. His OWC product is a neat, all-in-one solution.)

Installation

  1. Remove the control unit from the piano by first unscrewing the parallel port connector using the two flat blade nuts on the sides of the port.
  2. Unplug all the cables and then carefully unscrew the control unit from the piano. It is very heavy, so carefully lift it down and turn it over.
  3. Unscrew all the black screws on the top face of the control unit that would normally be against your piano. This surface is the unpainted, silver surface.
  4. Carefully remove the two plugs from the hard drive. Unscrew the drive underneath using a Phillips screwdriver with lots of pressure taking care not to strip the screws.

The original spinning disk, at rest

At this point, you’ll need to copy the contents of the old hard drive into an image file. If your old hard disk does not work, please contact me for a fully updated v4.26 Mark IV hard disk image, and include your serial number.

To create your own backup on Linux or Mac, you can use the dd instruction in a terminal. Note that you’ll need to adjust /dev/sdX to be whatever the location of your hard disk is! On Mac, this will be similar to /dev/rdiskX.

sudo dd if=/dev/sdX of=bckup.img status=progress

Specifications for the original disk

Take your new SSD drive and plug it into your computer using a USB adapter such as this one. Unplug the red adapter on the back of the hard drive and then plug the following cables into the hard drive itself.

The drive should mount to your Macintosh or Linux computer.

Using the terminal, type in “diskutil list” command shown as below, then press “Enter” to list all the disks in your Mac computer. Take down the number of your USB drive. Here assume that the USB drive number is “2”.

Type in the following command, replacing “#” with your USB drive number. diskutil unmountDisk /dev/disk#

Then press “Enter” to unmount it.

Type in the following command. On Mac, replace “/path/to/your.img” by dragging the image file from the Finder into terminal. On Linux, type the path. Then press “Enter” to burn the IMG image file to the USB drive.

sudo dd if=/path/to/your.img of=/dev/rdisk2 bs=4k status=progress

Note that, on Windows, you can burn ISO files over USB using Rufus.

Unmount your USB drive, put the red adapter back on, and screw it into your Disklavier top assembly. You will need to use the middle screws to give it enough room to be able to have the cable attached and close it. Voilà! You have now updated your system and changed your drive to solid state!

My Patriot Burst SSD, mounted directly to the top plate.

I was able to line up the Patriot Burst drive with the cooling holes on the upper plate such that I could screw it directly in place

Conveniently Rename all ESEQ Files for use with EEXPLORE and PIANODIR.FIL

This Python program will recursively rename .FIL files in the specified directory, ensuring they follow the naming convention described, and convert all filenames to uppercase. If, for instance, you have twenty albums, direct this program to run in their parent directory, and all the albums in subdirectories will be corrected.

This script renames all files to be all-caps including extensions, and for the name to be exactly eight characters long with no symbols. It will add filler characters if necessary. It will make sure they’re unique by incrementing a counter. These appear to be the most important factors in making files identifiable to early Disklaviers, based on my experience and those of commenters.

Usage: python renamefordisk.py [TARGET]

Just download renamefordisk.py. The source code is also at the bottom of this page.

As mentioned above, this will either correct all the files in the target directory, or will recursively change the names of all .FIL files in subdirectories if pointed at a parent directory. This is very useful if you’re, for instance, transferring many albums using backing up numerous floppy disks.

At this point, you’re ready to use EEXPLORE.EXE to move through each directory and prepare your PIANODIR.FIL. At a future date, I’d like to automate this.

Make certain to back up all files before running this! I can’t guarantee perfect results for all combinations of names and strings of characters.

Filenames before conversion.
Running ESEQ Explorer on the above directory. The names are deformed using MS-DOS shorthand.

The above is not guaranteed to read in a Disklavier. It is not apparent whether this is because of misbehavior by ESEQ Explorer, or is an issue with older Disklaviers. However, this does make it less likely the tracks will read correctly in older systems.

Filenames after conversion.
ESEQ Explorer with proper disk names. Note that the names are consistent with the names in the directories.

If you see the above, it’s quite likely it’ll read in your older Disklavier.

Nalbantov Drive Bay Insert

I recently installed a Nalbantov USB drive using an updated version of the insert and mount that I designed.

You can see based on the pictures below that the Nalbantov slim is slightly too small to fill the entire cavity left by the original floppy disk drive. Additionally, there are no mounts of any kind to hold the Nalbantov in place. This insert solves both problems: The drive screws into the insert at just the right distance and depth, and the insert also buffers the area around the outside of the drive.

I’ve included several pictures of how it fits into the case below. If you’d like to 3D print your own, I can provide the CAD file in 3mf format, gcode format, and STL format. If you’d prefer to order one from me, ready printed, you can order a Nalbantov Drive Bay Insert ready-made here.

The insert installed over the screw positions of the original floppy disk drive.
I 3D printed the spacers at 50% infill so they’d be fairly solid. These spacers allow you to use the original machine screws that hold down the OEM floppy disk drive, which is a huge advantage. No visits to the hardware store!

Disklavier HQ100/MX100II Solenoid Failure

I have a customer who recently experienced an issue with his Yamaha Disklavier HQ100. The HQ100 is the Japanese version of the MX100II. He primarily uses this instrument over MIDI, and finds the Disklavier quite useful.

This discussion should apply to other models of Yamaha Disklavier. The Yamaha MX100A and MX100B use different solenoids, but the designs are similar.

The symptom was that, when started, the Disklavier would play a single key at maximum velocity. It would sustain it for several seconds before releasing. Additionally, the system emitted a noisy whine while powered on. This noise turned out to be a failed power supply, and a replacement resolved that particular symptom. However, despite this, the system would still play one single key after powering on and then fail to respond to any subsequent commands.

The key that was playing was a low D (specifically, D1). I disassembled the instrument and inspected the solenoid for that key. The solenoid assembly was exuding an enormous amount of heat. The burned coil can be seen below.

There was also considerable damage to the inside of the coil assembly. The solenoid was unable to move fully back down into the rest position, as the assembly was badly melted.

I replaced the solenoid; however, this did not solve the problem. The new solenoid would activate and rapidly heat up. At one point, F1 activated instead of D1, adding an interesting twist.

I disconnected CN201, meaning that the Drive C solenoid drive board was still receiving power from the Disklavier but wasn’t receiving a signal. This isolated the problem to the Drive C board. Replacing the solenoids made it clear that they weren’t the issue. Therefore, the problem had to be somewhere on the PCB below:

I traced the circuitry back from the solenoid. In the image above, the D1 key solenoid is plugged into CN207. I verified that diodes D213-D224 were all behaving correctly (between 400-600 mV forward, and 0 back). Eventually, I was able to trace the behavior to the transistor array. My current theory is that the transistor array failed, causing current to run to the solenoid continuously. The solenoid eventually melted the plastic sleeve. This would also explain why the F1 solenoid activated in place of the D1 during later tests—both key solenoids are attached to the same failing transistor array.

This is the failed component. In the MX100II, this transistor array (2NTH3L20 / Yamaha #VB293700) has been discontinued. However, the equivalent array is NX551020 available through Digikey.