Convert Visual Basic Code to Qt



  • I have this program, Atmosphere Deluxe (http://www.vectormediasoftware.com/atmdeluxehome.htm), and unfortunately Vectormedia Software, the company who manufactures it, designed it with Visual Basic, which can't exactly be accessed by someone blind like me. I wonder if it's possible to convert Visual Basic code into Qt code. I've tried contacting the head administrator of the company, Nick Moulds, but I unfortunately haven't heard from him since August 1, 2012 at 3:48 AM. Nick says that since Vectormedia Software is a privately-owned company with very few employees based in Halifax, West Yorkshire, England, it's hard for them to find time to respond to customers, despite the fact that they used to have a support ticket system that specifically stated that the company would respond to customer support requests within 24 hours. Also, when I originally purchased the software on February 6, 2007, it didn't arrive at my house until May of 2010! This is because in addition to having few employees, the company is having a hard time finding overseas distributors. They have customers all over the world. Shouldn't that be something easy to find? You can download a trial version here: http://www.vectormediasoftware.com/atmdeluxedown.htm.


  • Lifetime Qt Champion

    Hi,

    It's highly likely that you can create a Qt alternative but it might not be easy. It looks like some sort of audio + image configurable player. Does it also control some sort of hardware ?



  • @SGaist said in Convert Visual Basic Code to Qt:

    Hi,

    It's highly likely that you can create a Qt alternative but it might not be easy. It looks like some sort of audio + image configurable player. Does it also control some sort of hardware ?

    No. It's actually software that you can play through any soundcard on your computer. it's basically what you'd call a "Soundscape Generator", which allows you to create custom ambience soundscapes for pretty much any application. This software has several layers, which allow you to have access to a panel for choosing sounds, a panel for importing your own sounds and images, a panel for choosing slideshows and panoramic images, a controller, which is basically a slimmed-down version of the main interface, a sound editor, a CD Player, a scenario importer, an MP3 player, a scenario exporter, an FX rack, a custom scheduler, a scenario evolving feature, an alarm feature, and a sound recorder. Those are the main features that I know, but I'm sure there's more that I haven't learned about yet.


  • Lifetime Qt Champion

    From your description, most of the part you'll be able to do with Qt. For the sound FX part, depending on what it offers, you might need some additional stuff but that's not unexpected when building large software.



  • @Annabelle The only way you can get that to be done in Qt is that you will know very well Basic or QBasic and also C++. It will be very hard to do it but it can be archived. Also, you will need the source code in basic of it. the rest is just to hardcode it yourself... line by line from Basic to C++. if what they are using are some libraries you will need also that libraries but anyway here you have many c++ libraries on the internet that will do the very same thing there - just effects and as far as I can see is just mix of many audio samples.. which can be done easily in Qt.
    Qt is very powerful take a look at Qtractor
    hope that help to understand that that can be done but very difficult - but not impossible...



  • @arsinte_andrei
    I've tried contacting the company at support@vectormediasoftware.com, which is still their email address, but I'm not sure if they've been receiving my emails. I put all the company's addresses on my Safe Senders and Safe Recipients lists, but I haven't received anything from them since 2012. One of their other representatives, Sarah, said to me in an email dated 5/1/2010 at 11:25 AM, that she, Nick and the others would try to make the interface from scratch, so it could be compatible with screenreaders like JAWS. I'd like to try to help them, but as I'm still learning C++, I'm not sure where to start. I'd like to design it with the same interface as the Strum Acoustic and Strum Electric guitar instruments made by Applied Acoustics of Canada http://www.applied-acoustics.com. However, what I'd like to do is make the interface have what Atmosphere Deluxe has. Checkboxes which toggle sounds, whose names would change depending on the sound loaded. If there is no sound, the name of the checkbox would be "Not Set". If I load a sound, say, Calm Sea, the checkbox would automatically change the name to "Calm Sea". I also want to make Volume, Rate-Of-Change, and Pan sliders like they have, but I want my interface to make it so that JAWS will speak the name of the sliders "Sound 1 Volume Up/Down Slider" and the values "250" or "100%". When you look at Atmosphere Deluxe, you'll see that with JAWS, most of the buttons and Sliders are spoken as "Graphic 0" rather than their names, and JAWS thinks they look exactly identical all across the board. Yet the checkboxes and Radio Buttons are spoken correctly. I wonder what those guys did to make their software not be recognized fully by JAWS. And how can I help them to fix it?



  • If I were to make a software like Atmosphere Deluxe, designed with Qt, how would I build sounds into it? Then, how would customers toggle those sounds with checkboxes? That is, when the checkbox is checked, the sound plays, and when it's unchecked, the sound stops. Note that each time the checkbox is turned on (checked), the sound always plays from the beginning, no matter where it stopped when it was unchecked.


  • Moderators

    @Annabelle For audio see http://doc.qt.io/qt-5/audiooverview.html
    To start/stop playing audio using checkboxes see http://doc.qt.io/qt-5/qcheckbox.html#stateChanged



  • @jsulm said in Convert Visual Basic Code to Qt:

    @Annabelle For audio see http://doc.qt.io/qt-5/audiooverview.html
    To start/stop playing audio using checkboxes see http://doc.qt.io/qt-5/qcheckbox.html#stateChanged

    What I mean is that the sound plays continuously, not a certain number of times, but is made to run ad infinitum, kind of like a song composed in the form of an infinite-loop motif.


  • Moderators

    @Annabelle You could connect a slot to http://doc.qt.io/qt-5/qaudiooutput.html#stateChanged and if the state is not ActiveState any-more start again.



  • @jsulm said in Convert Visual Basic Code to Qt:

    @Annabelle You could connect a slot to http://doc.qt.io/qt-5/qaudiooutput.html#stateChanged and if the state is not ActiveState any-more start again.

    Then there's the Custom soundbanks, where the default name for each checkbox is "Not Set", and when a customer loads a sound into the slot, the name changes from "Not Set" to whatever the name of the sound is, for example, "White Zone No Parking Announcements". Would "Start Again" be in the code when the audio output state is not "ActiveState"? I'm confused on this one!



  • I've started putting together the code for the "Main Screen" of this newly designed version of Atmosphere deluxe. Is there a way for me to create a title bar that says: Atmosphere Deluxe Main Screen? Here's an example of the code of the main screen. please read this carefully and tell me if it looks right to you. If there's anything I need to change, please let me know.

    #include <qwidget.h
    #include <qapplication.h>
    #include <qpushbutton.h>
    #include <qlistbox.h>
    #include <qslider.h>
    #include <qcheckbox.h>
    #include <qfont.h>
    #include <qformlayout.h>
    
    class MyWidget : public 
    QFormLayout
    
    {
    public:
        MyWidget( QWidget *parent=0, const char *name=0 );
    };
    
    
    MyWidget::MyWidget( QWidget *parent, const char *name )
            : 
    QFormLayout
    ( parent, name )
    {
        QPushButton *switchtocontroller = new QPushButton("Switch To Controller", this, "switchtocontroller");
    connect(switchtocontroller, SIGNAL(clicked()), qApp, SLOT(switchtocontroller()) );
        QPushButton *slideshow = new QPushButton("Slideshow", this, "Slideshow");
    connect(slideshow, SIGNAL(clicked()), qApp, SLOT(slideshow()) );
        QPushButton *evolve = new QPushButton("Evolve Scenarios", this, "evolve");
    connect(evolve, SIGNAL(clicked()), qApp, SLOT(evolve()) );
        QPushButton *identify = new QPushButton("Identify Random Sounds", this, "identify");
    connect(identify, SIGNAL(clicked()), qApp, SLOT(identify()) );
        QPushButton *rec = new QPushButton("Sound Recorder", this, "rec");
    connect(rec, SIGNAL(clicked()), qApp, SLOT(rec()) );
    QSlider *CDPlayerVolume = new QSlider( vertical, this, "CD Player Volume" );
        slider->setRange( 0, 250 );
        slider->setValue( 0 );
    connect(CDPlayerVolumeSlider, SIGNAL(valueChanged(int)), this, SIGNAL(volumeChanged(int)));
    connect(CDPlayerVolumeSlider, SIGNAL(valueChanged(int)), player, SLOT(setVolume(int)));
        QPushButton *cd = new QPushButton("CD Player", this, "cd");
    connect(cd, SIGNAL(clicked()), qApp, SLOT(cd()) );
    QSlider *MP3PlayerVolume = new QSlider( vertical, this, "MP3 Player Volume" );
        slider->setRange( 0, 250 );
        slider->setValue( 0 );
    connect(MP3PlayerVolumeSlider, SIGNAL(valueChanged(int)), this, SIGNAL(volumeChanged(int)));
    connect(MP3PlayerVolumeSlider, SIGNAL(valueChanged(int)), player, SLOT(setVolume(int)));
        QPushButton *mp3 = new QPushButton("MP3 Player", this, "mp3");
    connect(mp3, SIGNAL(clicked()), qApp, SLOT(mp3()) );
        QPushButton *fx = new QPushButton("FX and Mixing", this, "fx");
    connect(fx, SIGNAL(clicked()), qApp, SLOT(fx()) );
    QSlider *BrainwavesVolume = new QSlider( vertical, this, "Brainwaves Volume" );
        slider->setRange( 0, 250 );
        slider->setValue( 0 );
    connect(BrainwavesVolumeSlider, SIGNAL(valueChanged(int)), this, SIGNAL(volumeChanged(int)));
    connect(BrainwavesVolumeSlider, SIGNAL(valueChanged(int)), player, SLOT(setVolume(int)));
        QPushButton *brainwaves = new QPushButton("Brain Waves", this, "brainwaves");
    connect(brainwaves, SIGNAL(clicked()), qApp, SLOT(brainwaves()) );
    QSlider *RandomSoundVolume = new QSlider( vertical, this, "Random Sound Volume" );
        slider->setRange( 0, 250 );
        slider->setValue( 0 );
    connect(RandomSoundVolumeSlider, SIGNAL(valueChanged(int)), this, SIGNAL(volumeChanged(int)));
    connect(RandomSoundVolumeSlider, SIGNAL(valueChanged(int)), player, SLOT(setVolume(int)));
        QPushButton *customrandom2 = new QPushButton("Custom Random Soundbank 2", this, "customrandom2");
    connect(customrandom2, SIGNAL(clicked()), qApp, SLOT(customrandom2()) );
        QPushButton *customrandom1 = new QPushButton("Custom Random Soundbank 1", this, "customrandom1");
    connect(customrandom1, SIGNAL(clicked()), qApp, SLOT(customrandom1()) );
        QPushButton *random4 = new QPushButton("Random Soundbank 4", this, "random4");
    connect(random4, SIGNAL(clicked()), qApp, SLOT(random4()) );
        QPushButton *random3 = new QPushButton("Random Soundbank 3", this, "random3");
    connect(random3, SIGNAL(clicked()), qApp, SLOT(random3()) );
        QPushButton *random2 = new QPushButton("Random Soundbank 2", this, "random2");
    connect(random2, SIGNAL(clicked()), qApp, SLOT(random2()) );
        QPushButton *random1 = new QPushButton("Random Soundbank 1", this, "random1");
    connect(random1, SIGNAL(clicked()), qApp, SLOT(random1()) );
    QSlider *BackgroundSoundVolume = new QSlider( vertical, this, "Background Sound Volume" );
        slider->setRange( 0, 250 );
        slider->setValue( 0 );
    connect(BackgroundSoundVolumeSlider, SIGNAL(valueChanged(int)), this, SIGNAL(volumeChanged(int)));
    connect(BackgroundSoundVolumeSlider, SIGNAL(valueChanged(int)), player, SLOT(setVolume(int)));
        QPushButton *custombackground2 = new QPushButton("Custom Background Soundbank 2", this, "custombackground2");
    connect(custombackground2, SIGNAL(clicked()), qApp, SLOT(custombackground2()) );
        QPushButton *custombackground1 = new QPushButton("Custom Background Soundbank 1", this, "custombackground1");
    connect(custombackground1, SIGNAL(clicked()), qApp, SLOT(custombackground1()) );
        QPushButton *background2 = new QPushButton("Background Soundbank 2", this, "background2");
    connect(background2, SIGNAL(clicked()), qApp, SLOT(background2()) );
        QPushButton *background1 = new QPushButton("Background Soundbank 1", this, "background1");
    connect(background1, SIGNAL(clicked()), qApp, SLOT(background1()) );
    QSlider *MasterVolume = new QSlider( vertical, this, "Master Volume" );
        slider->setRange( 0, 250 );
        slider->setValue( 0 );
    connect(MasterVolumeSlider, SIGNAL(valueChanged(int)), this, SIGNAL(volumeChanged(int)));
    connect(MasterVolumeSlider, SIGNAL(valueChanged(int)), player, SLOT(setVolume(int)));
        QPushButton *masterStop = new QPushButton("Master Stop", this, "masterStop");
    connect(masterStop, SIGNAL(clicked()), qApp, SLOT(masterStop()) );
        QPushButton *import = new QPushButton("Import Scenario", this, "import");
    connect(import, SIGNAL(clicked()), qApp, SLOT(import()) );
        QPushButton *export = new QPushButton("Export Scenario", this, "export");
    connect(export, SIGNAL(clicked()), qApp, SLOT(export()) );
        QPushButton *save = new QPushButton("Save Scenario", this, "save");
    connect(save, SIGNAL(clicked()), qApp, SLOT(save()) );
        QPushButton *saveAs = new QPushButton("Save Scenario As...", this, "saveAs");
    connect(saveAs, SIGNAL(clicked()), qApp, SLOT(saveAs()) );
        QPushButton *delete = new QPushButton("Delete Scenario", this, "delete");
    connect(delete, SIGNAL(clicked()), qApp, SLOT(delete()) );
        QPushButton *saveAs = new QPushButton("Save Preset As...", this, "saveAs");
    connect(saveAs, SIGNAL(clicked()), qApp, SLOT(saveAs()) );
        QPushButton *load = new QPushButton("Load Preset", this, "load");
    connect(load, SIGNAL(clicked()), qApp, SLOT(load()) );
        QPushButton *clear = new QPushButton("Clear Preset", this, "clear");
    connect(clear, SIGNAL(clicked()), qApp, SLOT(clear()) );
        QPushButton *assign = new QPushButton("Assign Scenario", this, "assign");
    connect(assign, SIGNAL(clicked()), qApp, SLOT(assign()) );
        QPushButton *presetScenario1 = new QPushButton("Preset Scenario 1", this, "presetScenario1");
    connect(presetScenario1, SIGNAL(clicked()), qApp, SLOT(presetScenario1()) );
        QPushButton *presetScenario2 = new QPushButton("Preset Scenario 2", this, "presetScenario2");
    connect(presetScenario2, SIGNAL(clicked()), qApp, SLOT(presetScenario2()) );
        QPushButton *presetScenario3 = new QPushButton("Preset Scenario 3", this, "presetScenario3");
    connect(presetScenario3, SIGNAL(clicked()), qApp, SLOT(presetScenario3()) );
        QPushButton *presetScenario4 = new QPushButton("Preset Scenario 4", this, "presetScenario4");
    connect(presetScenario4, SIGNAL(clicked()), qApp, SLOT(presetScenario4()) );
        QPushButton *presetScenario5 = new QPushButton("Preset Scenario 5", this, "presetScenario5");
    connect(presetScenario5, SIGNAL(clicked()), qApp, SLOT(presetScenario5()) );
        QPushButton *presetScenario6 = new QPushButton("Preset Scenario 6", this, "presetScenario6");
    connect(presetScenario6, SIGNAL(clicked()), qApp, SLOT(presetScenario6()) );
        QPushButton *presetScenario7 = new QPushButton("Preset Scenario 7", this, "presetScenario7");
    connect(presetScenario7, SIGNAL(clicked()), qApp, SLOT(presetScenario7()) );
        QPushButton *presetScenario8 = new QPushButton("Preset Scenario 8", this, "presetScenario8");
    connect(presetScenario8, SIGNAL(clicked()), qApp, SLOT(presetScenario8()) );
        QPushButton *presetScenario9 = new QPushButton("Preset Scenario 9", this, "presetScenario9");
    connect(presetScenario9, SIGNAL(clicked()), qApp, SLOT(presetScenario9()) );
        QPushButton *presetScenario10 = new QPushButton("Preset Scenario 10", this, "presetScenario10");
    connect(presetScenario10, SIGNAL(clicked()), qApp, SLOT(presetScenario10()) );
        QPushButton *presetScenario11 = new QPushButton("Preset Scenario 11", this, "presetScenario11");
    connect(presetScenario11, SIGNAL(clicked()), qApp, SLOT(presetScenario11()) );
        QPushButton *presetScenario12 = new QPushButton("Preset Scenario 12", this, "presetScenario12");
    connect(presetScenario12, SIGNAL(clicked()), qApp, SLOT(presetScenario12()) );
        QPushButton *presetScenario13 = new QPushButton("Preset Scenario 13", this, "presetScenario13");
    connect(presetScenario13, SIGNAL(clicked()), qApp, SLOT(presetScenario13()) );
        QPushButton *presetScenario14 = new QPushButton("Preset Scenario 14", this, "presetScenario14");
    connect(presetScenario14, SIGNAL(clicked()), qApp, SLOT(presetScenario14()) );
        QPushButton *presetScenario15 = new QPushButton("Preset Scenario 15", this, "presetScenario15");
    connect(presetScenario15, SIGNAL(clicked()), qApp, SLOT(presetScenario15()) );
        QPushButton *presetScenario16 = new QPushButton("Preset Scenario 16", this, "presetScenario16");
    connect(presetScenario16, SIGNAL(clicked()), qApp, SLOT(presetScenario16()) );
        QPushButton *info = new QPushButton("Scenario Information", this, "info");
    connect(info, SIGNAL(clicked()), qApp, SLOT(info()) );
        QPushButton *colors = new QPushButton("Color Schemes", this, "colors");
    connect(colors, SIGNAL(clicked()), qApp, SLOT(colors()) );
        QPushButton *schedule = new QPushButton("Scenario Scheduler", this, "schedule");
    connect(schedule, SIGNAL(clicked()), qApp, SLOT(schedule()) );
        QPushButton *options = new QPushButton("Program Options", this, "...");
    connect(options, SIGNAL(clicked()), qApp, SLOT(options()) );
        QPushButton *... = new QPushButton("Alarm Options...", this, "...");
    connect(..., SIGNAL(clicked()), qApp, SLOT(...()) );
        QPushButton *alarmOn = new QPushButton("Alarm On/Off", this, "alarmOn");
    connect(alarmOn, SIGNAL(clicked()), qApp, SLOT(alarmOn()) );
        QPushButton *? = new QPushButton("Help?", this, "?");
    connect(?, SIGNAL(clicked()), qApp, SLOT(?()) );
        QPushButton *x = new QPushButton("Exit", this, "x");
    connect(x, SIGNAL(clicked()), qApp, SLOT(x()) );
    


  • @jsulm Another parameter I'm putting in my redesigned version of Atmosphere Deluxe is "Soundcard Select". Like the original Visual Basic coded version of Atmosphere Deluxe, this parameter allows the customer to select which soundcard they'd like the playing sounds to come out of. For example, on my Windows 7 64 Bit machine, I have the Realtek HD Audio High Definition as a built-in soundcard, and I have the MOTU 896HD Audio interface as an external audio device. Is that what QAudioOutput refers to? I have a screenshot of the original Soundcard Select Control Panel of Atmosphere Deluxe, but I'm not sure how to attach it to the message.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.