KCT Posted September 15, 2006 Report Share Posted September 15, 2006 (edited) Hi All,I figured I share what I have done, perhaps it helps someone who wanted to do the same thing. So I recently decided to save my old recordings to a large hard drive with as little as possible loss. I wanted to save the Audio Contentas WAV file to prevent additional content loss. Later I would still have the option to convert to MP3 or other format if needed.So I went on e-bay and bought for little money a MDS-JE510 for that purpose since I have a larger task to complete ( some 200 MD's) andwould not want to tie up my living room setup with this effort. What I wanted was to have a fully automated conversionprocess in which I only have to insert a new MD once in a while. For this setup I used the following devices.:A SONY Laptop Penti II with Windows 98a ROLAND digital Interface EDIROL a Behringer SCR2000 Digital Interface with SCMS 'handler' (optional)a Behringer SNR2000 Analog Noise Reduction (optional)a SONY MDS-JE510EasyTitleand for Software I used Sound Forge 6.0 and for the automation part some scripting software from Acrasoftcalled Gound Control. Microsoft Excel came in handy as well for some pre-formating the data files.Below you can find the script I wrote to run this process. I did not really care much for clean programming, so please excuse that.Also note, depending on the computer speed some delays may vary. I chose 50ms key delay and 15ms execution delayin the System Settings Menu of Ground Control.I was also working with plain text files, which contain play time and artist - title information.The playtime data file (playtime.txt) has the format: MD#, Track#, Playtime in seconds0,1,3220,2,3490,3,7380,4,4130,5,2100,6,3550,7,4000,8,4440,9,4051,1,321,2,1311,3,1751,4,1751,5,1931,6,1131,7,2871,8,2551,9,1351,10,1411,11,2171,12,2121,13,961,14,165while the Artist data files (MDxx.txt) are as follow:MiniDisc # 3 - Groove Zone Volume 41) Janet Jackson & Luther Vandross - Best things in life are free (Extended) 2) Alexander O`Neal - Criticize (Single) 3) Atlantic Starr - Where M.... (Single) 4) Midnight Star - One Life to live (Single) ...CheersKCT// Input MD Number and then find out how many Tracks are on this MD// ************************************************************************InputBox("Enter Minidisc Number",%MD_Num)PutVar(%FileName,"C:\md_DOS\ok\")AddString(%fileName,%md_num)AddString(%filename,".txt")// ************************************************************************InputBox("Enter Track Number to start with",%ST)// readlines out of MDxx.txt into variable %B, and display total_lines in %APutVar(%a,0)OpenFile(1,%filename):LoopIf(ReadLine(1,%,DoNothing(),Goto(":Exit1"))Increment(%a)Goto(":Loop"):Exit1CloseFile(1)// subtract 1st line from line countSubtract(%a,1,%a)// ************************************************************************// Run Sound ForgeRunProgram("C:\Program Files\Sonic Foundry\Sound Forge 6.0\forge60.exe",Normal)// ************************************************************************Delay(2000)// Run TerminalRunProgram("C:\WINDOWS\Desktop\HyperTerminal\Computer2Computer.ht",Normal)// ************************************************************************// Find Play Time of first TrackGetStringLength(%MD_Num,%MD_num_length)OpenFile(2,"C:\md_DOS\ok\PlayTime.txt"):Loop3If(ReadLine(2,%c),DoNothing(),Goto(":Exit3"))Left(%c,%MD_num_length,%MD_play_time)If(Equals(%MD_num,%MD_play_time),GoTo(":Exit3"))Goto(":Loop3"):Exit3Subtract(%ST,1,%Trk_num)Repeat(ReadLine(2,%c),%Trk_num)GetStringLength(%c,%len)Subtract(%len,%MD_num_length,%len)Subtract(%len,3,%len)If(MoreThan(%len,"3"),Subtract(%len,1,%len))Right(%c,%len,%Play_time)// ************************************************************************// open MD file again and skip first line// readlines out of MDxx.txt into variable %Audio_File_Name, and Track Number in %Trk_numOpenFile(1,%filename)If(ReadLine(1,%MD_label),DoNothing(),Goto(":Exit2"))Repeat(ReadLine(1,%MD_label),%Trk_num):Loop2If(ReadLine(1,%Audio_file_name),DoNothing(),Goto(":Exit2"))Increment(%trk_num)// Here goes the meat of setting up the MD player and controlling Sound Forge// prepare RecordingGoSub(":Setup_MD")GoSub(":Setup_SF")GoSub(":Record")// set Timer with Track TimeTimeoutMessageBox("... please wait ...",%Play_time,Information)Delay(250)MinimizeWindow("MD_Copy_2_HD.gc - GroundControl")Delay(250)ActivateWindow("Sonic Foundry Sound Forge 6.0 - [sound 1 *]")// Save as Wave FileGoSub(":Save_Wave")// Get Play Time for next trackGoSub(":get_play_Time")// Loop until last track on MDGoTo(":Loop2"):Exit2GoTo(":End")// Subroutines, Goto End before running into these// ************************************************************************:Setup_SFActivateWindow("Sonic Foundry Sound Forge 6.0")Delay(2000)// MD prepare PC RecordingSendKeys("^r")// PC Recording start, sendkey r after ^r was send// PC Recording stop, sendkey spacebar Return() // ************************************************************************:Setup_MD// MD prepare Play TrackActivateWindow("Computer2Computer - HyperTerminal")Delay(250)// Send Command - MD ProgramSendKeys("[:079f")Delay(250)// Send Command - MD Track depending on trk_numIf(Equals(%trk_num,1),SendKeys("[:0780"))If(Equals(%trk_num,2),SendKeys("[:0781"))If(Equals(%trk_num,3),SendKeys("[:0782"))If(Equals(%trk_num,4),SendKeys("[:0783"))If(Equals(%trk_num,5),SendKeys("[:0784"))If(Equals(%trk_num,6),SendKeys("[:0785"))If(Equals(%trk_num,7),SendKeys("[:0786"))If(Equals(%trk_num,8),SendKeys("[:0787"))If(Equals(%trk_num,9),SendKeys("[:0788"))If(Equals(%trk_num,10),SendKeys("[:0789"))If(Equals(%trk_num,11),SendKeys("[:07c0"))If(Equals(%trk_num,12),SendKeys("[:07c1"))If(Equals(%trk_num,13),SendKeys("[:07c2"))If(Equals(%trk_num,14),SendKeys("[:07c3"))If(Equals(%trk_num,15),SendKeys("[:07c4"))If(Equals(%trk_num,16),SendKeys("[:07c5"))If(Equals(%trk_num,17),SendKeys("[:07c6"))If(Equals(%trk_num,18),SendKeys("[:07c7"))If(Equals(%trk_num,19),SendKeys("[:07c8"))If(Equals(%trk_num,20),SendKeys("[:07c9"))If(Equals(%trk_num,21),SendKeys("[:07ca"))If(Equals(%trk_num,22),SendKeys("[:07cb"))If(Equals(%trk_num,23),SendKeys("[:07cc"))If(Equals(%trk_num,24),SendKeys("[:07cd"))If(Equals(%trk_num,25),SendKeys("[:07ce"))If(MoreThan(%trk_num,"25"),MessageBox("Track more than 25 !!!!"))// Send Command - MD PauseDelay(250)SendKeys("[:07a9")MinimizeWindow("Computer2Computer - HyperTerminal")ActivateWindow("Sonic Foundry Sound Forge 6.0 - [sound 1 *]") Return() // ************************************************************************:get_play_TimeIf(ReadLine(2,%c),DoNothing(),Goto(":RTN"))Left(%c,%MD_num_length,%MD_play_time)GetStringLength(%c,%len)Subtract(%len,%MD_num_length,%len)Subtract(%len,3,%len)If(MoreThan(%len,"3"),Subtract(%len,1,%len))Right(%c,%len,%Play_time):RTNReturn()// ************************************************************************:Save_WaveActivateWindow("Sonic Foundry Sound Forge 6.0 - [sound 1 *]")Delay(700)// stop recordingSendKeys("r")Delay(5000)SendKeys("(%{F4})")// save as wavDelay(100)SendKeys("(%f)")Delay(1500)SendKeys("a")Delay(500)SendKeys("MD_")Delay(500)SendKeys(%MD_Num)Delay(500)SendKeys("_Trk_")Delay(500)SendKeys(%Audio_file_name)Delay(500)SendKeys(".wav")Delay(500)SendKeys("(%s)")Delay(500)// wait for save as wav to completeActivateWindow("MD_Copy_2_HD.gc - GroundControl")// calculate best time for waiting while saving file (depending on computer HD speed may vary)Multiply(%play_time,170,%ANS)Multiply(%play_time,100,%pl_tmp)Subtract(%ANS,%pl_tmp,%ANS)Divide(%ANS,100,%ANS)TimeoutMessageBox("File been saved, please wait ...",%ANS,Information)// close SFSendKeys("(%F)")Delay(500)SendKeys("c")Delay(500)SendKeys("(%{F4})")// wait for 2 sDelay(2000)// reset MD playerActivateWindow("Computer2Computer - HyperTerminal")Delay(100)SendKeys("[:079d")Delay(500)MinimizeWindow("Computer2Computer - HyperTerminal")// Run Sound Forge againRunProgram("C:\Program Files\Sonic Foundry\Sound Forge 6.0\forge60.exe",Normal)Delay(2000)Return()// ************************************************************************:RecordActivateWindow("Sonic Foundry Sound Forge 6.0")// recordDelay(500)SendKeys(" ")// play MDActivateWindow("Computer2Computer - HyperTerminal")Delay(100)SendKeys("[:07aa")MinimizeWindow("Computer2Computer - HyperTerminal")Return()// ************************************************************************// Close open Files:EndCloseFile(1)CloseFile(2)// ************************************************************************// Terminate ApplicationActivateWindow("Sonic Foundry Sound Forge 6.0")Delay(500)SendKeys("(%{F4})")Delay(500)ActivateWindow("Computer2Computer - HyperTerminal")Delay(500)SendKeys("(%{F4})")Delay(500)SendKeys("y")// ************************************************************************// Copy Files:DOSDelay(5000)ActivateWindow("Exploring - My Documents")Delay(500)SendKeys("^a")Delay(500)SendKeys("^x")Delay(500)SendKeys("{TAB}")Delay(500)SendKeys("h:")Delay(500)SendKeys("~")Delay(500)SendKeys("{TAB}")Delay(1500)SendKeys("{TAB}")Delay(500)SendKeys("{DOWN}")Delay(1500)SendKeys("(%F)")Delay(2000)SendKeys("n")Delay(2000)SendKeys("f")Delay(2000)SendKeys("MD_")Delay(500)SendKeys(%MD_num)Delay(500)SendKeys("~")Delay(2000)SendKeys("~")Delay(500)SendKeys("^v"):finish Edited September 22, 2006 by KCT Quote Link to comment Share on other sites More sharing options...
A440 Posted September 15, 2006 Report Share Posted September 15, 2006 (edited) Can you explain to a non-programmer what this does? Apparently you're reading titles and song lengths, going from the optical out of the deck through the SCMS stripper and noise reduction into the computer, and using the scripts to time each recording. So it's still a realtime recording. You could also do this, though with analog instead of optical output, with a NetMD unit by using Hi-MD Renderer's NetMD Recorder function, similar to the old WinNetMD: it controls the unit through SonicStage, plays back each track and records it as a separate track from the headphone jack. For all I know the programming is similar. Unless someone has all these gadgets lying around, why not just get an RH1 and upload? Edited September 15, 2006 by A440 Quote Link to comment Share on other sites More sharing options...
KCT Posted September 16, 2006 Author Report Share Posted September 16, 2006 A440,the script controls the Sound Forge Recording software and the MD Deck via the IR Titler.First the script ask for MD number and which track to start with, then runs SF and Hyperterminal, then the script programs the MD player to play the first track only.The recording is timed and stopped accordingly, then the script gets the Track info andsaves the WAV file with this information as file name. Then repeats this process untilall tracks are recorded. Yes, I am routing the optical through the SCR2000 to get rid of the SCMS which is optional and needed for the consumer ROLAND EDIROL interface only. If you have a good soundcard that has optical in and ignores SCMS that would do the job to. Otherwise going through analog ports would work too.The noise reduction unit is optional and analog only. For that the script need no changes. Just plug into different input and select different source within SF. Sure you can use otherMD units but they must have IR control capability. Eventually the script may need to bechanged depending on the IR codes used for a perticular MD unit.I have not looked into Hi-MD or NetMD Recorder option as I do not own such MD units andprobably would require to run SONY software which I don't like.Yes, it is realtime recording, but I am not in a hurry. It will be a winter project forme to complete my entire collection. Quote Link to comment Share on other sites More sharing options...
A440 Posted September 16, 2006 Report Share Posted September 16, 2006 Thanks for the explanation. You've turned an early MD deck into an almost-NetMD unit by controlling it through the IR port. Pretty cool. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.