Thanks Marcus. I just set the environment variable that you mentioned in the run_gr.bat file that Geof mentioned and portaudio now works. I realize it is not a clean solution, but it is a working one. I am happy.
Tony On Mon, May 9, 2016 at 9:42 AM, Marcus Müller <marcus.muel...@ettus.com> wrote: > Hi Tony, > > to be honest, I'll be rewriting GNU Radio's slightly dated and slightly > ugly preference system, as it seems, so I'm not 100% giving up on this. > So, I hope the spirit of the workaround was clear to you: you can always > manually set this particular setting via python (instead of specifying it > in a configuration file). > The python module "detour" was just an attempt to make that a permanent > feature of the flow graph. Instead, I could have just asked you to add it > pretty far up in the generated top_block.py (or whatever your generated > python file is called). There's also another way of specifying such > settings – environment variables (which under windows are especially little > fun to set...). > You can (as documented in [1]) specify a setting as an environment > variable; in your case, something like > > GR_CONF_audio_audio_module = portaudio > > I know you can configure environment variables *somewhere *in windows, > but I forget where – my Windows usage is just too rare. > > Best regards, > Marcus > > [1] http://gnuradio.org/doc/doxygen/page_prefs.html > > > On 09.05.2016 14:33, Tony Richardson wrote: > > There appear to be some problems with "python module"s in Windows GRC > too. I get an error that the editor can't find a particular file. If I > add the python block in GRC, then have it generate code and add the code to > the corresponding Python file from an external editor - I can then run the > top level Python file from a command prompt and it works! (Appears to be > using portaudio). > > If I try to execute from GRC it replaces my Python source with a file > containing the line: > > # this module will be imported in the into your flowgraph > > and will not run anymore. > > Thanks for your help, but I agree that it is time to give up. > > Tony > > > On Mon, May 9, 2016 at 3:45 AM, Marcus Müller <marcus.muel...@ettus.com> > wrote: > >> Hi Tony, >> >> > The lack of path separators is troubling. >> >> I couldn't agree more. But since that just means that the separator get's >> "eaten" somewhere, and we don't know whether that happens when generating >> these paths or just when printing, I'm still full of hope… >> >> The fact these directories don't exist on my machine (even with >> appropriate separators) is more troubling. >> >> … my hopes being crushed. >> >> > Is there a way to override the default values? >> >> Yes, but not at runtime, I'm afraid: The "first" directory a program >> looks into for configuration has to be hard-coded somewhere, and in the >> case of GNU Radio, it's specified via the GR_PREFSDIR CMake Variable when >> building GNU Radio. >> That happens in the gnuradio/gnuradio/lib/constants.cc.in file, where >> CMake expands the @GR_PREFSDIR@ macro. The actual setting of that >> variable happens in the main gnuradio/CMakeLists.txt, line 165 >> >> set(SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/${GR_CONF_DIR}" CACHE PATH >> "System configuration directory" FORCE) >> >> so we learn that CMAKE_INSTALL_PREFIX was set to >> C:gr-buildsrc-stage3staged_install, plus a few \, probably :D >> >> So that's essentially where I'd have to give up: That code was put there >> during build, and I can't change it later. >> >> What I'll probably do is a bug report about GNU Radio, upon finding the >> prefsdir path not to be a directory (in your case: not to exist at all) >> giving up and not even trying to read any other paths. I might fix that by >> allowing users to specify these directories as environment variables; that >> would make sense to me, but as it kind of changes "logical" API, I'd like >> to discuss this with a maintainer. >> >> I think I might come up with a workaround, however. Again, I haven't >> tried this, especially not under windows, where the whole "launch an editor >> and edit that file" aspect might fail, but *shrug*: >> >> In your GRC flow graph, add a "python module". >> There, without indenting, add the following code >> >> from gnuradio import gr >> p = gr.prefs() >> p.set_string("audio","audio_module","portaudio") >> >> and close the editor. Basically, you're setting the configuration option >> manually for the meantime. >> >> Best regards, >> Marcus >> >> >> On 09.05.2016 04:38, Tony Richardson wrote: >> >> The command: >> >> gnuradio-config-info --prefsdir --sysconfdir >> >> returns >> >> C:gr-buildsrc-stage3staged_installReleaseetc >> C:gr-buildsrc-stage3staged_installReleaseetcgnuradioconf.d >> >> The lack of path separators is troubling. The fact these directories >> don't exist on my machine (even with appropriate separators) is more >> troubling. I assume this is why config files in the installed etc >> directory are not being read. After using the Windows installer, I have >> what appear to be corresponding directories here: >> >> C:\Program Files\GNURadio-3.7\etc >> C:\Program Files\GNURadio-3.7\etc\gnuradio\conf.d >> >> I have a HOME environment variable defined in Windows, so I think GRC is >> looking in $HOME/.gnuradio for a config.conf file. Running GRC actually >> creates a $HOME/.gnuradio directory and places some configuration files in >> that directory, but doesn't appear to read from it. I also tried putting a >> config.conf file in the APPDATA/.gnuradio directory but it isn't being read >> either. >> >> Is there a way to override the default values? >> >> Tony Richardson >> >> On Sat, May 7, 2016 at 9:05 AM, Marcus Müller < >> <marcus.muel...@ettus.com>marcus.muel...@ettus.com> wrote: >> >>> Sooo gnuradio-runtime/lib/prefs.cc: >>> >>> 77 // Find if there is a ~/.gnuradio/config.conf file and add this to >>> 78 // the end of the file list to override any preferences in the >>> 79 // installed path config files. >>> 80 fs::path homedir = fs::path(gr::appdata_path()); >>> 81 homedir = homedir/".gnuradio/config.conf"; >>> 82 if(fs::exists(homedir)) { >>> 83 fnames.push_back(homedir.string()); >>> 84 } >>> 85 >>> >>> >>> This means that things in Users/youruser/Application >>> Data/.gnuradio/config.conf *should* be read. >>> >>> I also tried changing the canvas size in the "c:/Program >>> Files/GNURadio-3.7/etc/gnuradio/conf.d/grc.conf" file, which I think is >>> supposed to be the system-wide file, but changes there have no effect >>> either. >>> >>> Uh-oh. >>> >>> Can you execute a >>> >>> gnuradio-config-info --prefsdir --sysconfdir >>> >>> please? >>> >>> Back to topic: >>> >>> Is there a way for me to figure out what configuration files are being >>> read? >>> >>> >>> I'm really not experienced Windows debugger; under Unixes, I'd do run >>> like (to trace all "stat" calls, ie. when the code above checks for the >>> existence of config.conf) >>> >>> strace -e stat -o '|grep config.conf' gnuradio-config-info -v >>> >>> >>> but I really don't know whether that even works in theory under Windows. >>> >>> I'm a bit worried about this line: >>> >>> 81 homedir = homedir/".gnuradio/config.conf"; >>> >>> Because it implicitly assumes that the OS considers "/" as path >>> separator between .gnuradio and config.conf. Boost might or might not fix >>> that under windows. But it's probably OK. >>> >>> Best regards, >>> Marcus >>> >>> >>> On 07.05.2016 15:41, Marcus Müller wrote: >>> >>> The * is actually just an artifact of how that list is generated; it's >>> written by CMake when gathering the enabled audio engines; When running >>> cmake, you'll see something like >>> >>> -- ###################################################### >>> -- # Gnuradio enabled components >>> -- ###################################################### >>> -- * python-support >>> -- * testing-support >>> [..] >>> -- * gr-atsc >>> -- * gr-audio >>> -- * * alsa >>> -- * * oss >>> -- * * portaudio >>> -- * gr-channels >>> [...] >>> >>> >>> And our beautiful hack to make alsa, oss, portaudio ... look like bullet >>> points under gr-audio is actually to get these the name "* alsa", "* oss" >>> and so on :D. That doesn't break automatic "grep-ability" to let scripts >>> check for any of these, and if you had something like >>> >>> gnuradio-config-info --enabled-components|sed s'/;/\n/g' >>> >>> it'd give you the "original" tree-ish looking structure. >>> >>> so, for now, that's totally ok. >>> >>> Is there a way for me to figure out what configuration files are being >>> read? >>> >>> Hm, logging. Waaaaitasec. I'll have to look this up; will do later. >>> >>> Best regards, >>> Marcus >>> >>> >>> On 06.05.2016 14:55, Tony Richardson wrote: >>> >>> I think I'm making progress with your help Marcus. >>> >>> The output of "gnuradio-config-info --enabled-components" is: >>> >>> python-support;testing-support;volk;doxygen;sphinx;gnuradio-runtime;gr-ctrlport;gr-blocks;gnuradio-companion;gr-fec;gr-fft;gr-filter;gr-analog;gr-digital;gr-dtv;gr-atsc;gr-audio;* >>> portaudio;* >>> windows;gr-channels;gr-noaa;gr-pager;gr-qtgui;gr-trellis;gr-uhd;gr-utils;gr-video-sdl;gr-vocoder;gr-fcd;gr-wavelet;gr-wxgui;gr-zeromq >>> >>> What does the '*' before portaudio mean? >>> >>> I think you are also correct in that it appears my config.conf file is >>> not being read. GRC created a ~/.gnuradio directory and populated it with >>> a grc.conf file and prefs directory. I created a config.conf file in the >>> same directory. Adding the [grc] stanza seems to have no effect. I also >>> tried changing the canvas size in the "c:/Program >>> Files/GNURadio-3.7/etc/gnuradio/conf.d/grc.conf" file, which I think is >>> supposed to be the system-wide file, but changes there have no effect >>> either. Is there a way for me to figure out what configuration files are >>> being read? >>> >>> Tony Richardson >>> >>> >>> >>> >>> On Fri, May 6, 2016 at 3:14 AM, Marcus Müller < >>> <marcus.muel...@ettus.com>marcus.muel...@ettus.com> wrote: >>> >>>> Huh, can you verify portaudio is in the output of "gnuradio-config-info >>>> --enabled-components" ? >>>> >>>> Can you add another section, >>>> >>>> >>>> [audio_portaudio] >>>> verbose = true >>>> >>>> Just to verify: you're using the "[..]" section headers correctly, and >>>> the rest of the conf file looks ungarbled, right? >>>> >>>> We might be encountering a case where the config file simply isn't >>>> read; as a quick test: >>>> Close all gnuradio-companions, add >>>> >>>> [grc] >>>> canvas_default_size = 100,100 >>>> >>>> to that file, and open up the companion – your canvas size should now >>>> be 100x100px. Is that the case? >>>> >>>> Best regards, >>>> Marcus >>>> >>>> >>>> On 06.05.2016 00:20, Tony Richardson wrote: >>>> >>>> Thanks, but I've tried that (setting "audio_module = portaudio"). It >>>> doesn't appear to have the desired effect. >>>> >>>> Tony >>>> >>>> On Thu, May 5, 2016 at 4:26 PM, Marcus Müller < >>>> <marcus.muel...@ettus.com>marcus.muel...@ettus.com> wrote: >>>> >>>>> Sorry, not currently running any Windows VM, but in the spirit of >>>>> giving you the info you need as fast as possible: >>>>> >>>>> Quick lecture of the audio sink/source factory tells me that under >>>>> windows, by default the windows audio architecture is used. >>>>> So to use portaudio instead, you need to have a GNU Radio config file >>>>> (under unixoids, that's ~/.gnuradio/config.conf), and add >>>>> >>>>> [audio] >>>>> audio_module= portaudio >>>>> >>>>> >>>>> Best regards, >>>>> Marcus >>>>> >>>>> On 05.05.2016 22:59, Tony Richardson wrote: >>>>> >>>>> I'm using the pre-built Win64 binary of GNURadio listed on the >>>>> gnuradio.org site. The portaudio library was included as part of the >>>>> Win64 build, but I can't seem to figure out how to use it instead of the >>>>> default windows audio. (I want an audio source and the windows audio >>>>> source does not work.) I've tried putting "audio_module = portaudio" (and >>>>> "audio_module = audio_portaudio") in the config.conf file, but when I run >>>>> a >>>>> simple flowgraph that includes an audio source and sink, I see: >>>>> >>>>> INFO: Audio source arch: windows >>>>> INFO: Audio sink arch: windows >>>>> >>>>> in the console and there is no sound. I assume the lines above are >>>>> telling me that the windows audio devices are being used and not the >>>>> desired portaudio devices. I have tried leaving the device name in the >>>>> audio source blank as well as trying "0" and "hw:0,0", but still see the >>>>> messages above. Can someone tell me how to configure audio for portaudio >>>>> or is it just not supported? >>>>> >>>>> Tony Richardson >>>>> >>>>> >>>>> _______________________________________________ >>>>> Discuss-gnuradio mailing >>>>> listDiscuss-gnuradio@gnu.orghttps://lists.gnu.org/mailman/listinfo/discuss-gnuradio >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> Discuss-gnuradio mailing list >>>>> <Discuss-gnuradio@gnu.org>Discuss-gnuradio@gnu.org >>>>> <https://lists.gnu.org/mailman/listinfo/discuss-gnuradio> >>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio >>>>> >>>>> >>>> >>>> >>> >>> >>> >> >> > >
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio