Mercurial > hg > jslab
changeset 1:5df24c91468d
Oh my what a mess.
author | samer |
---|---|
date | Fri, 05 Apr 2019 16:26:00 +0100 |
parents | bf79fb79ee13 |
children | 74cc9e431818 |
files | .hgignore build/samer/applet/ButtonsApplet.class build/samer/applet/ConsoleApplet.class build/samer/applet/JApplet$1$1.class build/samer/applet/JApplet$1.class build/samer/applet/JApplet.class build/samer/applet/JAppletShell$VContainer.class build/samer/applet/JAppletShell.class build/samer/applet/Sierpinski$1.class build/samer/applet/Sierpinski.class build/samer/applet/WindowApplet.class build/samer/audio/AudioSink$Util.class build/samer/audio/AudioSink.class build/samer/audio/AudioSource$Util.class build/samer/audio/AudioSource.class build/samer/audio/FileSink$1.class build/samer/audio/FileSink$2.class build/samer/audio/FileSink.class build/samer/audio/FileSource$1.class build/samer/audio/FileSource$2.class build/samer/audio/FileSource$3.class build/samer/audio/FileSource$FileSourceViewer.class build/samer/audio/FileSource.class build/samer/audio/LineSink$1.class build/samer/audio/LineSink$2.class build/samer/audio/LineSink$Writer.class build/samer/audio/LineSink.class build/samer/audio/LineSource$1.class build/samer/audio/LineSource$2.class build/samer/audio/LineSource$Reader.class build/samer/audio/LineSource.class build/samer/audio/VLine$LineViewer.class build/samer/audio/VLine.class build/samer/core/Agent$Registry.class build/samer/core/Agent.class build/samer/core/CompoundAgent.class build/samer/core/DefaultShell.class build/samer/core/DoubleFormat.class build/samer/core/Environment$1.class build/samer/core/Environment$2$1.class build/samer/core/Environment$2.class build/samer/core/Environment$Autocoder.class build/samer/core/Environment$Binding.class build/samer/core/Environment$Codec.class build/samer/core/Environment$CompoundIterator.class build/samer/core/Environment$Datum.class build/samer/core/Environment$Iterator.class build/samer/core/Environment.class build/samer/core/Node.class build/samer/core/NumberSink.class build/samer/core/NumberViewer.class build/samer/core/Registry.class build/samer/core/Saveable.class build/samer/core/Saver.class build/samer/core/Shell$1.class build/samer/core/Shell$2.class build/samer/core/Shell$3.class build/samer/core/Shell$Dialog.class build/samer/core/Shell$Interface.class build/samer/core/Shell$Interpreter.class build/samer/core/Shell$ViewerWindowListener$1.class build/samer/core/Shell$ViewerWindowListener.class build/samer/core/Shell$Window.class build/samer/core/Shell.class build/samer/core/Variable.class build/samer/core/Viewable$1.class build/samer/core/Viewable$Vector.class build/samer/core/Viewable.class build/samer/core/Viewer.class build/samer/core/X$1.class build/samer/core/X$2.class build/samer/core/X$3.class build/samer/core/X$4.class build/samer/core/X$5.class build/samer/core/X$6.class build/samer/core/X$7.class build/samer/core/X$BaseCodec.class build/samer/core/X.class build/samer/core/shells/AWTShell$VContainer.class build/samer/core/shells/AWTShell.class build/samer/core/shells/BevelWindow.class build/samer/core/shells/DesktopShell$1.class build/samer/core/shells/DesktopShell$VContainer.class build/samer/core/shells/DesktopShell.class build/samer/core/shells/SwingShell$1.class build/samer/core/shells/SwingShell$VContainer.class build/samer/core/shells/SwingShell.class build/samer/core/types/DoubleModel.class build/samer/core/types/VBoolean.class build/samer/core/types/VColor.class build/samer/core/types/VDouble.class build/samer/core/types/VFile.class build/samer/core/types/VInteger.class build/samer/core/types/VParameter.class build/samer/core/types/VRectangle.class build/samer/core/types/VString.class build/samer/core/util/AgentAdapter.class build/samer/core/util/BaseViewer.class build/samer/core/util/ConsoleEnvironment$Texton.class build/samer/core/util/ConsoleEnvironment.class build/samer/core/util/DefaultViewer.class build/samer/core/util/FileFilter.class build/samer/core/util/FilteredEnvironment.class build/samer/core/util/HashMap$1.class build/samer/core/util/HashMap$Entry.class build/samer/core/util/HashMap.class build/samer/core/util/IMap.class build/samer/core/util/LinearMap.class build/samer/core/util/LogMap.class build/samer/core/util/MouseRetarget.class build/samer/core/util/Properties$1.class build/samer/core/util/Properties$Property.class build/samer/core/util/Properties.class build/samer/core/util/StackLayout.class build/samer/core/util/Tools.class build/samer/core/util/UserEnvironment$1.class build/samer/core/util/UserEnvironment$2.class build/samer/core/util/UserEnvironment$3.class build/samer/core/util/UserEnvironment$4.class build/samer/core/util/UserEnvironment$5.class build/samer/core/util/UserEnvironment$Gluon.class build/samer/core/util/UserEnvironment$Thingy.class build/samer/core/util/UserEnvironment.class build/samer/core/util/VLayout.class build/samer/core/util/VMap$Adjuster.class build/samer/core/util/VMap.class build/samer/core/util/VariableViewer.class build/samer/core/util/heavy/Border$1.class build/samer/core/util/heavy/Border$Base.class build/samer/core/util/heavy/Border$BevelInfo.class build/samer/core/util/heavy/Border$Empty.class build/samer/core/util/heavy/Border$In.class build/samer/core/util/heavy/Border$Interface.class build/samer/core/util/heavy/Border$Null.class build/samer/core/util/heavy/Border$Out.class build/samer/core/util/heavy/Border.class build/samer/core/util/heavy/Borders$AbstractBorder.class build/samer/core/util/heavy/Borders$CompoundBorder.class build/samer/core/util/heavy/Borders$EllipticalBorder.class build/samer/core/util/heavy/Borders$EmptyBorder.class build/samer/core/util/heavy/Borders$LoweredBevelBorder.class build/samer/core/util/heavy/Borders$ParentBgBorder.class build/samer/core/util/heavy/Borders$RaisedBevelBorder.class build/samer/core/util/heavy/Borders$RoundedBorder.class build/samer/core/util/heavy/Borders$SimpleBorder.class build/samer/core/util/heavy/Borders.class build/samer/core/util/heavy/ButtonBar.class build/samer/core/util/heavy/CommandField$Handler.class build/samer/core/util/heavy/CommandField.class build/samer/core/util/heavy/Console$OutputStream.class build/samer/core/util/heavy/Console$Writer.class build/samer/core/util/heavy/Console.class build/samer/core/util/heavy/Dialog$1.class build/samer/core/util/heavy/Dialog.class build/samer/core/util/heavy/Frame.class build/samer/core/util/heavy/JPanel.class build/samer/core/util/heavy/MenuBuilder.class build/samer/core/util/heavy/Meter$1.class build/samer/core/util/heavy/Meter.class build/samer/core/util/heavy/PopupHandler.class build/samer/core/util/heavy/TextualNumberViewer.class build/samer/core/util/heavy/VCanvas$1.class build/samer/core/util/heavy/VCanvas.class build/samer/core/util/heavy/VPanel.class build/samer/core/util/shell/AgentManager$1.class build/samer/core/util/shell/AgentManager.class build/samer/core/util/shell/AppShellBase.class build/samer/core/util/shell/ViewableManager$1.class build/samer/core/util/shell/ViewableManager$2.class build/samer/core/util/shell/ViewableManager$3.class build/samer/core/util/shell/ViewableManager$VblEntry.class build/samer/core/util/shell/ViewableManager$ViewerContainer.class build/samer/core/util/shell/ViewableManager$VwrEntry.class build/samer/core/util/shell/ViewableManager.class build/samer/core/util/swing/ButtonBar.class build/samer/core/util/swing/CommandField$Handler.class build/samer/core/util/swing/CommandField.class build/samer/core/util/swing/Console$OutputStream.class build/samer/core/util/swing/Console$Writer.class build/samer/core/util/swing/Console.class build/samer/core/util/swing/DarkMetalTheme.class build/samer/core/util/swing/Dialog.class build/samer/core/util/swing/DynamicPopupHandler.class build/samer/core/util/swing/Frame.class build/samer/core/util/swing/InternalFrame$1.class build/samer/core/util/swing/InternalFrame.class build/samer/core/util/swing/LED.class build/samer/core/util/swing/MenuBuilder.class build/samer/core/util/swing/Meter$1.class build/samer/core/util/swing/Meter.class build/samer/core/util/swing/PopupHandler.class build/samer/core/util/swing/SilkyMetalTheme.class build/samer/core/util/swing/TextualNumberViewer.class build/samer/core/util/swing/VCanvas$1.class build/samer/core/util/swing/VCanvas.class build/samer/core/util/swing/VContainerBase.class build/samer/core/util/swing/VPanel.class build/samer/core/viewers/BooleanViewer.class build/samer/core/viewers/ColorButton.class build/samer/core/viewers/ColorSwatch.class build/samer/core/viewers/ColorViewer.class build/samer/core/viewers/DoubleViewer.class build/samer/core/viewers/FileViewer.class build/samer/core/viewers/IntegerViewer.class build/samer/core/viewers/NumberViewer.class build/samer/core/viewers/ParameterViewer.class build/samer/core/viewers/StringViewer.class build/samer/core/viewers/swing/BooleanViewer.class build/samer/core/viewers/swing/ColorButton.class build/samer/core/viewers/swing/ColorChooserViewer$ColorModelAdapter.class build/samer/core/viewers/swing/ColorChooserViewer.class build/samer/core/viewers/swing/ColorSwatch.class build/samer/core/viewers/swing/ColorViewer.class build/samer/core/viewers/swing/DoubleViewer$1.class build/samer/core/viewers/swing/DoubleViewer.class build/samer/core/viewers/swing/FileChooserViewer.class build/samer/core/viewers/swing/FileViewer.class build/samer/core/viewers/swing/IntegerViewer.class build/samer/core/viewers/swing/NumberViewer.class build/samer/core/viewers/swing/ParameterViewer.class build/samer/core/viewers/swing/StringViewer.class build/samer/core/viewers/swing/Swatch.class build/samer/functions/Abs.class build/samer/functions/Add.class build/samer/functions/Atanh.class build/samer/functions/BiLaplacian$1.class build/samer/functions/BiLaplacian.class build/samer/functions/BiLaplacianBlend$1.class build/samer/functions/BiLaplacianBlend.class build/samer/functions/CauchyInfomax.class build/samer/functions/CompoundFunction$1.class build/samer/functions/CompoundFunction$2.class build/samer/functions/CompoundFunction.class build/samer/functions/Exp.class build/samer/functions/ExponentialSquashing.class build/samer/functions/Gamma.class build/samer/functions/HalfSquare.class build/samer/functions/Hamming.class build/samer/functions/Hanning.class build/samer/functions/HybridFunction.class build/samer/functions/Log.class build/samer/functions/LogAbs.class build/samer/functions/LogCauchy.class build/samer/functions/LogCosh$1.class build/samer/functions/LogCosh.class build/samer/functions/LogGenCosh$1.class build/samer/functions/LogGenCosh.class build/samer/functions/LogGenExp$1.class build/samer/functions/LogGenExp$2.class build/samer/functions/LogGenExp.class build/samer/functions/LogGenExp2$1.class build/samer/functions/LogGenExp2$2.class build/samer/functions/LogGenExp2$3.class build/samer/functions/LogGenExp2.class build/samer/functions/LogisiticInfomax.class build/samer/functions/LogisticHyperplane.class build/samer/functions/Negate.class build/samer/functions/Power.class build/samer/functions/Quadratic.class build/samer/functions/RaleighLogPrior$1.class build/samer/functions/RaleighLogPrior.class build/samer/functions/Reciprocal.class build/samer/functions/Scale.class build/samer/functions/ScaledFunction.class build/samer/functions/Sgn.class build/samer/functions/SparseExponential$1.class build/samer/functions/SparseExponential.class build/samer/functions/Sqrt.class build/samer/functions/Square.class build/samer/functions/Step.class build/samer/functions/Tanh$1.class build/samer/functions/Tanh.class build/samer/functions/ThresholdLog.class build/samer/functions/WinnerTakeAll.class build/samer/j3d/Axes.class build/samer/j3d/FPS.class build/samer/j3d/ImmediateRenderer.class build/samer/j3d/MatrixPointArray$1.class build/samer/j3d/MatrixPointArray.class build/samer/j3d/MatrixPointArrayAlpha$1.class build/samer/j3d/MatrixPointArrayAlpha.class build/samer/j3d/MatrixPointArrayRef$1.class build/samer/j3d/MatrixPointArrayRef.class build/samer/j3d/MatrixPoints4D$1.class build/samer/j3d/MatrixPoints4D.class build/samer/j3d/MonoView.class build/samer/j3d/MorphPoints$MorphBehavior.class build/samer/j3d/MorphPoints.class build/samer/j3d/PatchArray$1.class build/samer/j3d/PatchArray.class build/samer/j3d/PatchArrayAlpha$1.class build/samer/j3d/PatchArrayAlpha.class build/samer/j3d/Patches$1.class build/samer/j3d/Patches.class build/samer/j3d/PatchesAlpha$1.class build/samer/j3d/PatchesAlpha.class build/samer/j3d/Points3D$1.class build/samer/j3d/Points3D.class build/samer/j3d/Points3DAlpha$1.class build/samer/j3d/Points3DAlpha.class build/samer/j3d/Points3DRef$1.class build/samer/j3d/Points3DRef.class build/samer/j3d/Points4D$1.class build/samer/j3d/Points4D.class build/samer/j3d/Root.class build/samer/j3d/StereoView.class build/samer/j3d/Util.class build/samer/j3d/ViewBase.class build/samer/j3d/ViewGroup.class build/samer/maths/ClippedDivide.class build/samer/maths/ComplexVector.class build/samer/maths/Constant.class build/samer/maths/Difference.class build/samer/maths/Function.class build/samer/maths/FunctionMap.class build/samer/maths/FunctionOfGenerator.class build/samer/maths/FunctionOfVector.class build/samer/maths/FunctionPlotter$1.class build/samer/maths/FunctionPlotter$FunctionIterator.class build/samer/maths/FunctionPlotter.class build/samer/maths/Generator.class build/samer/maths/Identity.class build/samer/maths/IntArrayEditor.class build/samer/maths/IteratorImageSource.class build/samer/maths/LineTrace.class build/samer/maths/Linear.class build/samer/maths/Mat.class build/samer/maths/MatEditor.class build/samer/maths/Mathx.class build/samer/maths/Matrix$1$1.class build/samer/maths/Matrix$1$2.class build/samer/maths/Matrix$1.class build/samer/maths/Matrix$Column$1.class build/samer/maths/Matrix$Column.class build/samer/maths/Matrix$Row$1.class build/samer/maths/Matrix$Row.class build/samer/maths/Matrix$Slice.class build/samer/maths/Matrix$Vbl.class build/samer/maths/Matrix.class build/samer/maths/MatrixAgent.class build/samer/maths/MatrixImage.class build/samer/maths/MatrixImageSource.class build/samer/maths/MatrixImageSourceF.class build/samer/maths/MatrixPanel$Field.class build/samer/maths/MatrixPanel.class build/samer/maths/MatrixPlotter$1.class build/samer/maths/MatrixPlotter.class build/samer/maths/MatrixTImageSource.class build/samer/maths/MatrixTImageSourceF.class build/samer/maths/MatrixTimesVector.class build/samer/maths/MatrixTransposeTimesVector.class build/samer/maths/Neg.class build/samer/maths/Ops$1.class build/samer/maths/Ops$2.class build/samer/maths/Ops$3.class build/samer/maths/Ops$4.class build/samer/maths/Ops$5.class build/samer/maths/Ops$6.class build/samer/maths/Ops$7.class build/samer/maths/Ops$8.class build/samer/maths/Ops$9.class build/samer/maths/Ops$ArrayCopy.class build/samer/maths/Ops$IteratorCopy.class build/samer/maths/Ops.class build/samer/maths/Parameter.class build/samer/maths/Probe.class build/samer/maths/Product.class build/samer/maths/RowColumn.class build/samer/maths/SparseMatrix.class build/samer/maths/Sum.class build/samer/maths/VFunction$1.class build/samer/maths/VFunction$2.class build/samer/maths/VFunction.class build/samer/maths/VGenerator$UI.class build/samer/maths/VGenerator.class build/samer/maths/VVector$1.class build/samer/maths/VVector$2.class build/samer/maths/VVector.class build/samer/maths/Vec$ForArray$InputIterator.class build/samer/maths/Vec$ForArray$Iterator.class build/samer/maths/Vec$ForArray.class build/samer/maths/Vec$InputIterator.class build/samer/maths/Vec$Iterator.class build/samer/maths/Vec.class build/samer/maths/VectorEditor.class build/samer/maths/VectorFunctionOfVector.class build/samer/maths/VectorPlotter.class build/samer/maths/VectorPlusEqualsVector.class build/samer/maths/VectorTimesEqualsScalar.class build/samer/maths/VectorTrace.class build/samer/maths/VectorTraceObs.class build/samer/maths/Zero.class build/samer/maths/opt/AbsXFConvergence.class build/samer/maths/opt/Condition.class build/samer/maths/opt/ConjGrad.class build/samer/maths/opt/ConstrainedConjGrad.class build/samer/maths/opt/ConstrainedGillMurray.class build/samer/maths/opt/ConstrainedMinimiser.class build/samer/maths/opt/Constraints$Factory.class build/samer/maths/opt/Constraints.class build/samer/maths/opt/CubicLineSearch.class build/samer/maths/opt/Datum.class build/samer/maths/opt/Functionx.class build/samer/maths/opt/GConvergence.class build/samer/maths/opt/GillMurray.class build/samer/maths/opt/MinimiserBase$1.class build/samer/maths/opt/MinimiserBase$2.class build/samer/maths/opt/MinimiserBase$3.class build/samer/maths/opt/MinimiserBase$4.class build/samer/maths/opt/MinimiserBase$5.class build/samer/maths/opt/MinimiserBase$LSCondition$1.class build/samer/maths/opt/MinimiserBase$LSCondition.class build/samer/maths/opt/MinimiserBase.class build/samer/maths/opt/PolynomialLineSearch.class build/samer/maths/opt/Positivity$1.class build/samer/maths/opt/Positivity$2.class build/samer/maths/opt/Positivity.class build/samer/maths/opt/State.class build/samer/maths/opt/SubspaceFunctionx.class build/samer/maths/opt/UnconstrainedConjGrad$1.class build/samer/maths/opt/UnconstrainedConjGrad.class build/samer/maths/opt/UnconstrainedMinimiser.class build/samer/maths/opt/Util.class build/samer/maths/opt/XFConvergence.class build/samer/maths/opt/ZeroCrossingSparsity$1.class build/samer/maths/opt/ZeroCrossingSparsity$2.class build/samer/maths/opt/ZeroCrossingSparsity$3.class build/samer/maths/opt/ZeroCrossingSparsity$4.class build/samer/maths/opt/ZeroCrossingSparsity.class build/samer/maths/random/BaseRandom.class build/samer/maths/random/Binary.class build/samer/maths/random/BinaryVec.class build/samer/maths/random/BipolarUniform.class build/samer/maths/random/BoundedHyperbolic.class build/samer/maths/random/BoundedUniform.class build/samer/maths/random/Brownian.class build/samer/maths/random/Cauchy.class build/samer/maths/random/Exponential.class build/samer/maths/random/Gaussian.class build/samer/maths/random/GeneralisedExponential.class build/samer/maths/random/GeneralisedLaplacian.class build/samer/maths/random/Laplacian.class build/samer/maths/random/Logistic.class build/samer/maths/random/Mixture.class build/samer/maths/random/MixtureVec.class build/samer/maths/random/NormalisedGaussian.class build/samer/maths/random/PosteriorSampler.class build/samer/maths/random/PowerLaw.class build/samer/maths/random/Raleigh.class build/samer/maths/random/RectifiedCauchy.class build/samer/maths/random/RectifiedGaussian.class build/samer/maths/random/RectifiedLogistic.class build/samer/maths/random/SparseMixture.class build/samer/maths/random/Ternary.class build/samer/maths/random/Uniform.class build/samer/mds/CorrelationTask.class build/samer/mds/CovarianceTask.class build/samer/mds/DistanceTask.class build/samer/mds/Euclidean.class build/samer/mds/GeometricFilter.class build/samer/mds/MDS$Metric.class build/samer/mds/MDS$SamerStress.class build/samer/mds/MDS$Stress.class build/samer/mds/MDS.class build/samer/mds/MDSBase.class build/samer/mds/Manhatten.class build/samer/mds/MatrixPointViewer2.class build/samer/mds/Minkowski.class build/samer/mds/NewMDS$Laplacian.class build/samer/mds/NewMDS$Stress.class build/samer/mds/NewMDS.class build/samer/mds/ProximityFilter.class build/samer/midi/MidiRecorder.class build/samer/midi/MidiRecorderBase.class build/samer/midi/MidiSynth$1.class build/samer/midi/MidiSynth$Editor.class build/samer/midi/MidiSynth.class build/samer/midi/MidiWithAftertouch.class build/samer/models/AlignedGaussian$1.class build/samer/models/AlignedGaussian.class build/samer/models/BatchedTrainer.class build/samer/models/Covariance.class build/samer/models/DiffScaler$1.class build/samer/models/DiffScaler$OffsetTrainer.class build/samer/models/DiffScaler$ScaleTrainer.class build/samer/models/DiffScaler$TensionedTrainer.class build/samer/models/DiffScaler$Trainer.class build/samer/models/DiffScaler.class build/samer/models/Edge.class build/samer/models/GaussianStats.class build/samer/models/GaussianStatsOnline.class build/samer/models/GeneralisedExponential$1.class build/samer/models/GeneralisedExponential$Trainer.class build/samer/models/GeneralisedExponential.class build/samer/models/ICA$1.class build/samer/models/ICA$NewtonTrainer.class build/samer/models/ICA$ON2DecayWhenActive.class build/samer/models/ICA$ON2Trainer.class build/samer/models/ICA$ON3Trainer.class build/samer/models/ICA.class build/samer/models/ICAScalerSync.class build/samer/models/ICAWithScaler$DifferentialTrainer.class build/samer/models/ICAWithScaler$ScalerTrainer.class build/samer/models/ICAWithScaler.class build/samer/models/IIDPrior$1.class build/samer/models/IIDPrior.class build/samer/models/JointHistogramBase.class build/samer/models/MOGModel$1.class build/samer/models/MOGModel$2.class build/samer/models/MOGModel.class build/samer/models/MOGVector$1.class build/samer/models/MOGVector$2.class build/samer/models/MOGVector$PDF.class build/samer/models/MOGVector.class build/samer/models/MatrixTrainer.class build/samer/models/Mixture$Trainer.class build/samer/models/Mixture.class build/samer/models/Model$Trainer.class build/samer/models/Model.class build/samer/models/NoisyICA$1.class build/samer/models/NoisyICA$2.class build/samer/models/NoisyICA$3.class build/samer/models/NoisyICA.class build/samer/models/Scaler$1.class build/samer/models/Scaler$OffsetTrainer.class build/samer/models/Scaler$ScaleTrainer.class build/samer/models/Scaler$Trainer.class build/samer/models/Scaler.class build/samer/models/SignalHistogram.class build/samer/models/SmoothGeneralisedExponential$1.class build/samer/models/SmoothGeneralisedExponential.class build/samer/models/SparseICA$ON2Trainer.class build/samer/models/SparseICA$ON3Trainer.class build/samer/models/SparseICA.class build/samer/models/VarianceICA$1.class build/samer/models/VarianceICA$2.class build/samer/models/VarianceICA$3.class build/samer/models/VarianceICA.class build/samer/silk/JavaProcedure.class build/samer/silk/SchemeList$Iterator.class build/samer/silk/SchemeList.class build/samer/silk/SilkCompleter.class build/samer/silk/SilkFunction.class build/samer/silk/SilkObserver.class build/samer/silk/SilkTask.class build/samer/silk/Terminal$Transfer.class build/samer/silk/Terminal.class build/samer/tools/AnonymousTask.class build/samer/tools/ArrayImageSource.class build/samer/tools/ArrayVImageSource.class build/samer/tools/ColorRamp.class build/samer/tools/CompoundTask$Iterator.class build/samer/tools/CompoundTask$TaskLink.class build/samer/tools/CompoundTask.class build/samer/tools/ImageSourceBase.class build/samer/tools/ImageTrace.class build/samer/tools/ImageTraceBase.class build/samer/tools/ImageVTrace.class build/samer/tools/ImageViewer$1.class build/samer/tools/ImageViewer.class build/samer/tools/NamedTask.class build/samer/tools/NullTask.class build/samer/tools/Plotter$Pen.class build/samer/tools/Plotter.class build/samer/tools/RThread$Kill.class build/samer/tools/RThread$UI.class build/samer/tools/RThread.class build/samer/tools/RateSchedule.class build/samer/tools/Renderer$Fill.class build/samer/tools/Renderer$Fill3D.class build/samer/tools/Renderer$Line.class build/samer/tools/Renderer$Steps.class build/samer/tools/Renderer.class build/samer/tools/SafeTask.class build/samer/tools/ScatterPlot.class build/samer/tools/SignalTrace.class build/samer/tools/SubrateTask.class build/samer/tools/SwitchTask.class build/samer/tools/Task.class build/samer/tools/Trace.class build/samer/tools/vec2.class build/samer/units/Clicker.class build/samer/units/DoubleToStream.class build/samer/units/DoubleWriter.class build/samer/units/EnergyOperator.class build/samer/units/FFT.class build/samer/units/FFTVector$1.class build/samer/units/FFTVector$2.class build/samer/units/FFTVector$3.class build/samer/units/FFTVector$4.class build/samer/units/FFTVector.class build/samer/units/FIRFilter.class build/samer/units/Filter.class build/samer/units/FilterVector.class build/samer/units/FilteredGenerator.class build/samer/units/GenerateDouble.class build/samer/units/GenerateVector.class build/samer/units/Histogram$Equaliser.class build/samer/units/Histogram.class build/samer/units/IIRFilter.class build/samer/units/JointHistogram.class build/samer/units/Latch.class build/samer/units/LineIn.class build/samer/units/LineOut.class build/samer/units/Matrices.class build/samer/units/MousePosition.class build/samer/units/NoisyLinearSource.class build/samer/units/OnsetMap.class build/samer/units/Oscillator$1.class build/samer/units/Oscillator.class build/samer/units/OverlapAndAdd.class build/samer/units/RescaledIFT.class build/samer/units/SignalWindow$1.class build/samer/units/SignalWindow.class build/samer/units/SpectralFIR.class build/samer/units/Stacker.class build/samer/units/Stacker2.class build/samer/units/StreamToDouble.class build/samer/units/StreamToVec.class build/samer/units/SumFnVec.class build/samer/units/Trigger.class build/samer/units/VecToDouble.class build/samer/units/VecToStream$ArrayObjectWriter.class build/samer/units/VecToStream$IteratorFloatWriter.class build/samer/units/VecToStream.class build/samer/units/VecWriter.class build/samer/units/Wavetable.class examples/gui/awt/Light.java examples/gui/awt/LightS.java examples/gui/awt/Lightweight.java examples/gui/awt/light.html examples/gui/awt/light2.html examples/gui/awt/tester.java examples/gui/swing/BLDComponent.java examples/gui/swing/BoxLayoutDemo.java examples/gui/swing/ConversionPanel.java examples/gui/swing/Converter.java examples/gui/swing/MenuDemo.java examples/gui/swing/MenuLookDemo.java examples/gui/swing/PopupMenuDemo.java examples/java3d/Axis.java examples/java3d/FPS.java examples/java3d/LocalUniverse.java examples/java3d/MatrixPointArray.java examples/java3d/Viewer.java examples/java3d/abs3d.txt examples/java3d/args examples/java3d/hello1.java examples/java3d/hello10.java examples/java3d/hello11.java examples/java3d/hello12.java examples/java3d/hello2.java examples/java3d/hello3.java examples/java3d/hello4.java examples/java3d/hello5.java examples/java3d/hello6.java examples/java3d/hello7.java examples/java3d/hello8.java examples/java3d/hello9.java examples/java3d/util.java examples/maths/GaussianForm.java examples/maths/Inf.java examples/maths/Optimizer.java examples/maths/QuadraticForm.java examples/mds/args examples/mds/mds.scm examples/mds/mds2.scm examples/misc/args examples/misc/meters.scm examples/misc/mouse.scm examples/misc/scope.props examples/misc/scope.scm examples/misc/vtrace.scm examples/misc/x.vector examples/sockets/obj examples/sockets/ostream.scm examples/sockets/recv.scm examples/sockets/recv.silk examples/sound/midi/args examples/sound/midi/args.old examples/sound/midi/plinky.scm examples/sound/midi/plinky.silk examples/sound/sampled/args examples/sound/sampled/args.old examples/sound/sampled/linein.scm local/schemerc.scm local/silk local/swingrc.scm src/samer/applet/CVS/Entries src/samer/applet/CVS/Repository src/samer/applet/CVS/Root src/samer/applet/CVS/Template src/samer/audio/AudioSource.java src/samer/audio/CVS/Entries src/samer/audio/CVS/Repository src/samer/audio/CVS/Root src/samer/audio/CVS/Template src/samer/audio/FileSource.java src/samer/audio/FileSource2.java src/samer/audio/LineSource.java src/samer/audio/MultiFileAudioStream.java src/samer/audio/StreamSource.java src/samer/audio/StreamSource.java.old src/samer/audio/VLine.java src/samer/core_/CVS/Entries src/samer/core_/CVS/Repository src/samer/core_/CVS/Root src/samer/core_/CVS/Template src/samer/core_/Shell.java src/samer/core_/shells/CVS/Entries src/samer/core_/shells/CVS/Repository src/samer/core_/shells/CVS/Root src/samer/core_/shells/CVS/Template src/samer/core_/types/CVS/Entries src/samer/core_/types/CVS/Repository src/samer/core_/types/CVS/Root src/samer/core_/types/CVS/Template src/samer/core_/util/CVS/Entries src/samer/core_/util/CVS/Repository src/samer/core_/util/CVS/Root src/samer/core_/util/CVS/Template src/samer/core_/util/heavy/CVS/Entries src/samer/core_/util/heavy/CVS/Repository src/samer/core_/util/heavy/CVS/Root src/samer/core_/util/heavy/CVS/Template src/samer/core_/util/shell/CVS/Entries src/samer/core_/util/shell/CVS/Repository src/samer/core_/util/shell/CVS/Root src/samer/core_/util/shell/CVS/Template src/samer/core_/util/swing/CVS/Entries src/samer/core_/util/swing/CVS/Repository src/samer/core_/util/swing/CVS/Root src/samer/core_/util/swing/CVS/Template src/samer/core_/viewers/CVS/Entries src/samer/core_/viewers/CVS/Repository src/samer/core_/viewers/CVS/Root src/samer/core_/viewers/CVS/Template src/samer/core_/viewers/swing/CVS/Entries src/samer/core_/viewers/swing/CVS/Repository src/samer/core_/viewers/swing/CVS/Root src/samer/core_/viewers/swing/CVS/Template src/samer/functions/CVS/Entries src/samer/functions/CVS/Repository src/samer/functions/CVS/Root src/samer/functions/CVS/Template src/samer/j3d/CVS/Entries src/samer/j3d/CVS/Repository src/samer/j3d/CVS/Root src/samer/j3d/CVS/Template src/samer/maths/CVS/Entries src/samer/maths/CVS/Repository src/samer/maths/CVS/Root src/samer/maths/CVS/Template src/samer/maths/opt/CVS/Entries src/samer/maths/opt/CVS/Repository src/samer/maths/opt/CVS/Root src/samer/maths/opt/CVS/Template src/samer/maths/random/CVS/Entries src/samer/maths/random/CVS/Repository src/samer/maths/random/CVS/Root src/samer/maths/random/CVS/Template src/samer/mds/CVS/Entries src/samer/mds/CVS/Repository src/samer/mds/CVS/Root src/samer/mds/CVS/Template src/samer/midi/CVS/Entries src/samer/midi/CVS/Repository src/samer/midi/CVS/Root src/samer/midi/CVS/Template src/samer/midi/MidiSynth.java src/samer/midi/MidiWithAftertouch.java src/samer/models/CVS/Entries src/samer/models/CVS/Repository src/samer/models/CVS/Root src/samer/models/CVS/Template src/samer/models/notyet/CVS/Entries src/samer/models/notyet/CVS/Repository src/samer/models/notyet/CVS/Root src/samer/models/notyet/CVS/Template src/samer/silk/CVS/Entries src/samer/silk/CVS/Repository src/samer/silk/CVS/Root src/samer/silk/CVS/Template src/samer/tools/CVS/Entries src/samer/tools/CVS/Repository src/samer/tools/CVS/Root src/samer/tools/CVS/Template src/samer/units/CVS/Entries src/samer/units/CVS/Repository src/samer/units/CVS/Root src/samer/units/CVS/Template src/scheme/audio.scm src/scheme/midi.scm src/scheme/readline.scm src/scheme/sockets.scm src/scheme/streams.scm src/scheme/weird.scm |
diffstat | 774 files changed, 4969 insertions(+), 759 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,5 @@ +doc +.*\.class +dist/lib/.*\.jar +.jscheme_history +args.old
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/gui/awt/Light.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,42 @@ +// program to test lightweight components +package test.awt; + +import java.awt.*; +import java.awt.event.*; +import java.applet.*; + + +public class Light extends Applet +{ + public static void run(Container c) + { + c.setLayout(new FlowLayout()); + c.add( new Button("Hello!")); + c.add( new Lightweight(Color.green,"harpo")); + c.add( new Lightweight(Color.blue,"groucho")); + c.add( new Lightweight(Color.red,"zeppo")); + c.validate(); + } + + public static void main(String[] args) + { + Frame fr=new Frame("Lightweight test"); + fr.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + System.exit(0); + } + } ); + fr.setSize(400,100); + fr.show(); + run(fr); + } + + public void init() + { + setBackground( Color.black); + setForeground( Color.yellow); + getParent().setBackground( Color.red); + run(this); + } + +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/gui/awt/LightS.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,43 @@ +// program to test lightweight components (Swing version) +package test.awt; + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; + +// this is a lightweight component + + +public class LightS extends JApplet +{ + public static void run(Container c) + { + JButton b = new JButton("Hello!"); + + c.setLayout(new FlowLayout()); + c.add( b); + c.add( new Lightweight(Color.green,"harpo")); + c.add( new Lightweight(Color.blue,"groucho")); + c.add( new Lightweight(Color.red,"zeppo")); + c.validate(); + } + + public static void main(String[] args) + { + JFrame fr=new JFrame("Lightweight test"); + fr.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + System.exit(0); + } + } ); + fr.setSize(400,100); + fr.show(); + run(fr.getContentPane()); + } + + public void init() + { + getParent().setBackground( Color.red); + run(getContentPane()); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/gui/awt/Lightweight.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,32 @@ +// program to test lightweight components +package test.awt; +import java.awt.*; + +// this is a lightweight component + +public class Lightweight extends Component +{ + Color col; + String text; + + Lightweight(Color color, String label) { + text=label; col=color; + setBackground(Color.getHSBColor(0.3F,0.4F,0.7F)); + } + + public void paint(Graphics g) + { + Dimension d=getSize(); + g.setColor(getBackground()); + g.fillRect(0,0,getWidth(),getHeight()); + g.setColor(getForeground()); + g.drawString(text,10,16); + } + + public boolean isOpaque() { return true; } + public Dimension getPreferredSize() + { + return new Dimension(80,20); + } +} +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/gui/awt/light.html Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,33 @@ +<head> +<title>Test Applet</title> +<link rel=stylesheet type="text/css" href="../styles/base.css"> +</head> +<style> + body { background: #404060; color: #f0f0f0; font-family: "Verdana" } + h1 { font: bold italic; color: #48d } + applet { width: 60%; height: 60%; margin: 2em; + } + +</style> + +<body> +<p> +<title>Lightweight Components</title> +<h1>a test applet</h1> +<p> +This is blah blah +<br> +<center> +<applet code=Light> + <param name=font-size value=18> + <param name=foreground value=#90b0f0> + <param name=background value=#000000> + <param name=pagebg value=#404060> + <param name=borderType value=rounded> + <param name=borderWidth value=2> + <param name=corner value=24> + <param name=border value=#f0f0f0> + <param name=padding value=6> +</applet> +</center> +<body>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/gui/awt/light2.html Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,33 @@ +<head> +<title>Test Applet</title> +<link rel=stylesheet type="text/css" href="../styles/base.css"> +</head> +<style> + body { background: #404060; color: #f0f0f0; font-family: "Verdana" } + h1 { font: bold italic; color: #48d } + applet { width: 60%; height: 60%; margin: 2em; + } + +</style> + +<body> +<p> +<title>Lightweight Components</title> +<h1>a test applet</h1> +<p> +This is blah blah +<br> +<center> +<applet code=LightS> + <param name=font-size value=18> + <param name=foreground value=#90b0f0> + <param name=background value=#000000> + <param name=pagebg value=#404060> + <param name=borderType value=rounded> + <param name=borderWidth value=2> + <param name=corner value=24> + <param name=border value=#f0f0f0> + <param name=padding value=6> +</applet> +</center> +<body>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/gui/awt/tester.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,70 @@ +/* + * AppletBorders.java + * + * Copyright (c) 2000, Samer Abdallah, King's College London. + * All rights reserved. + * + * This software is provided AS iS and WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ +package test; +import samer.core.*; +import samer.core.util.*; +import samer.core.util.heavy.*; +import samer.core.util.heavy.Borders.*; +import samer.core.util.Tools; +import java.awt.*; + +public class tester +{ + public static void main(String args[]) + { + new samer.core.shells.AppShell(); + + final Shell.Window win=Shell.getWindow("tester"); + + win.container().setBackground(Color.white); + // win.container().setForeground(Color.white); + + win.container().setLayout(new StackLayout(0)); + win.container().add(Shell.createLabel("hmmm...")); + win.container().add(createBlock(new Color(200,160,180), "the world")); + win.container().add(createBlock(new Color(200,180,160), "welcome to")); + win.container().add(createBlock(new Color(180,200,160), "i like")); + win.container().add(createBlock(new Color(160,200,180), "of borders")); + win.container().add(createBlock(new Color(160,180,200), "these colours")); + win.container().add(createBlock(new Color(180,160,200), "hello there!")); + win.expose(); + + Agent agent=new Agent() { + public void getCommands(Agent.Registry r) { r.add("repaint"); } + public void execute(String cmd, Environment env) { + if (cmd.equals("repaint")) { + win.container().repaint(); + } + } + }; + Shell.exposeCommands(agent); + Shell.registerAgent(agent); + } + + static Border.Interface border = new CompoundBorder( + new ParentBgBorder(12), + new RoundedBorder(3,26,3) { + protected Color getDefaultColor(Component c) { + return c.getBackground().darker(); // brighter(); + } + } + ); + + static Component createBlock(Color bg, String msg) + { + JPanel p1=new JPanel(border); + p1.setLayout(new FlowLayout()); + p1.setBackground(bg); + p1.setForeground(bg.darker().darker().darker()); + p1.add(Shell.createLabel(msg)); + return p1; + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/gui/swing/BLDComponent.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,101 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; + +/** A rectangle that has a fixed size. */ +class BLDComponent extends JComponent { + private Color normalHue; + private final Dimension preferredSize; + private String name; + private boolean restrictMaximumSize; + private boolean printSize; + + public BLDComponent(float alignmentX, float hue, + int shortSideSize, + boolean restrictSize, + boolean printSize, + String name) { + this.name = name; + this.restrictMaximumSize = restrictSize; + this.printSize = printSize; + setAlignmentX(alignmentX); + normalHue = Color.getHSBColor(hue, 0.4f, 0.85f); + preferredSize = new Dimension(shortSideSize*2, shortSideSize); + + MouseListener l = new MouseAdapter() { + public void mousePressed(MouseEvent e) { + int width = getWidth(); + float alignment = (float)(e.getX()) + / (float)width; + + // Round to the nearest 1/10th. + int tmp = Math.round(alignment * 10.0f); + alignment = (float)tmp / 10.0f; + + setAlignmentX(alignment); + revalidate(); // this GUI needs relayout + repaint(); + } + }; + addMouseListener(l); + } + + /** + * Our BLDComponents are completely opaque, so we override + * this method to return true. This lets the painting + * system know that it doesn't need to paint any covered + * part of the components underneath this component. The + * end result is possibly improved painting performance. + */ + public boolean isOpaque() { + return true; + } + + public void paint(Graphics g) { + int width = getWidth(); + int height = getHeight(); + float alignmentX = getAlignmentX(); + + g.setColor(normalHue); + g.fill3DRect(0, 0, width, height, true); + + /* Draw a vertical white line at the alignment point.*/ + // XXX: This code is probably not the best. + g.setColor(Color.white); + int x = (int)(alignmentX * (float)width) - 1; + g.drawLine(x, 0, x, height - 1); + + /* Say what the alignment point is. */ + g.setColor(Color.black); + g.drawString(Float.toString(alignmentX), 3, height - 3); + + if (printSize) { + System.out.println("BLDComponent " + name + ": size is " + + width + "x" + height + + "; preferred size is " + + getPreferredSize().width + "x" + + getPreferredSize().height); + } + } + + public Dimension getPreferredSize() { + return preferredSize; + } + + public Dimension getMinimumSize() { + return preferredSize; + } + + public Dimension getMaximumSize() { + if (restrictMaximumSize) { + return preferredSize; + } else { + return super.getMaximumSize(); + } + } + + public void setSizeRestriction(boolean restrictSize) { + restrictMaximumSize = restrictSize; + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/gui/swing/BoxLayoutDemo.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,77 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; + +public class BoxLayoutDemo { + protected static int NUM_COMPONENTS = 3; + protected static float[] xAlignment = {Component.LEFT_ALIGNMENT, + Component.CENTER_ALIGNMENT, + Component.RIGHT_ALIGNMENT}; + protected static float[] hue = {0.0f, 0.33f, 0.67f}; + protected static boolean restrictSize = true; + protected static boolean sizeIsRandom = false; + protected static BLDComponent[] bldComponent = + new BLDComponent[NUM_COMPONENTS]; + + public static void main(String[] args) { + final JPanel panel = new JPanel(); + panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); + + //Create the rectangles. + int shortSideSize = 15; + for (int i = 0; i < NUM_COMPONENTS; i++) { + if (sizeIsRandom) { + shortSideSize = (int)(30.0 * Math.random()) + 30; + } else { + shortSideSize += 10; + } + bldComponent[i] = new BLDComponent(xAlignment[i], hue[i], + shortSideSize, + restrictSize, + sizeIsRandom, + String.valueOf(i)); + panel.add(bldComponent[i]); + } + + //Create the instructions. + JLabel label = new JLabel("Click a rectangle to " + + "change its X alignment."); + JCheckBox cb = new JCheckBox("Restrict maximum rectangle size."); + cb.setSelected(restrictSize); + cb.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + restrictSize = true; + } else { + restrictSize = false; + } + notifyBLDComponents(); + } + }); + + JFrame f = new JFrame("BoxLayoutDemo"); + Container contentPane = f.getContentPane(); + contentPane.add(panel, BorderLayout.CENTER); + panel.setBorder(BorderFactory.createLineBorder(Color.red)); + + Box box = Box.createVerticalBox(); + box.add(label); + box.add(cb); + + contentPane.add(box, BorderLayout.SOUTH); + f.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + System.exit(0); + } + }); + f.pack(); + f.setVisible(true); + } + + static public void notifyBLDComponents() { + for (int i = 0; i < NUM_COMPONENTS; i++) { + bldComponent[i].setSizeRestriction(restrictSize); + } + bldComponent[0].revalidate(); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/gui/swing/ConversionPanel.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,117 @@ +/* + * 1.1+Swing version. + */ + +import javax.swing.*; +import javax.swing.event.*; +import java.awt.*; +import java.awt.event.*; +import java.util.*; +import java.text.NumberFormat; + +public class ConversionPanel extends JPanel { + DecimalField textField; + JComboBox unitChooser; + JSlider slider; + ConverterRangeModel sliderModel; + Converter controller; + Unit[] units; + String title; + final static boolean DEBUG = false; + final static boolean COLORS = false; + final static int MAX = 10000; + + ConversionPanel(Converter myController, String myTitle, + Unit[] myUnits, + ConverterRangeModel myModel) { + if (COLORS) { + setBackground(Color.cyan); + } + setBorder(BorderFactory.createCompoundBorder( + BorderFactory.createTitledBorder(myTitle), + BorderFactory.createEmptyBorder(5,5,5,5))); + + //Save arguments in instance variables. + controller = myController; + units = myUnits; + title = myTitle; + sliderModel = myModel; + + //Add the text field. It initially displays "0" and needs + //to be at least 10 columns wide. + NumberFormat numberFormat = NumberFormat.getNumberInstance(); + numberFormat.setMaximumFractionDigits(2); + textField = new DecimalField(0, 10, numberFormat); + textField.setValue(sliderModel.getDoubleValue()); + textField.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + sliderModel.setDoubleValue(textField.getValue()); + } + }); + + //Add the combo box. + unitChooser = new JComboBox(); + for (int i = 0; i < units.length; i++) { //Populate it. + unitChooser.addItem(units[i].description); + } + unitChooser.setSelectedIndex(0); + sliderModel.setMultiplier(units[0].multiplier); + unitChooser.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + //Set new maximums for the sliders. + int i = unitChooser.getSelectedIndex(); + sliderModel.setMultiplier(units[i].multiplier); + controller.resetMaxValues(false); + } + }); + + //Add the slider. + slider = new JSlider(sliderModel); + sliderModel.addChangeListener(new ChangeListener() { + public void stateChanged(ChangeEvent e) { + textField.setValue(sliderModel.getDoubleValue()); + } + }); + + //Make the textfield/slider group a fixed size. + JPanel unitGroup = new JPanel() { + public Dimension getMinimumSize() { + return getPreferredSize(); + } + public Dimension getPreferredSize() { + return new Dimension(150, + super.getPreferredSize().height); + } + public Dimension getMaximumSize() { + return getPreferredSize(); + } + }; + if (COLORS) { + unitGroup.setBackground(Color.blue); + } + unitGroup.setBorder(BorderFactory.createEmptyBorder( + 0,0,0,5)); + unitGroup.setLayout(new BoxLayout(unitGroup, + BoxLayout.Y_AXIS)); + unitGroup.add(textField); + unitGroup.add(slider); + + setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); + add(unitGroup); + add(unitChooser); + unitGroup.setAlignmentY(TOP_ALIGNMENT); + unitChooser.setAlignmentY(TOP_ALIGNMENT); + } + + /** + * Returns the multiplier (units/meter) for the currently + * selected unit of measurement. + */ + public double getMultiplier() { + return sliderModel.getMultiplier(); + } + + public double getValue() { + return sliderModel.getDoubleValue(); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/gui/swing/Converter.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,157 @@ +/* + * 1.1+Swing version. + */ + +import javax.swing.*; +import javax.swing.event.*; +import java.awt.*; +import java.awt.event.*; +import java.util.*; + +public class Converter { + ConversionPanel metricPanel, usaPanel; + Unit[] metricDistances = new Unit[3]; + Unit[] usaDistances = new Unit[4]; + final static boolean COLORS = false; + final static boolean DEBUG = false; + final static String LOOKANDFEEL = null; + ConverterRangeModel dataModel = new ConverterRangeModel(); + JPanel mainPane; + + /** + * Create the ConversionPanels (one for metric, another for U.S.). + * I used "U.S." because although Imperial and U.S. distance + * measurements are the same, this program could be extended to + * include volume measurements, which aren't the same. + * + * Put the ConversionPanels into a frame, and bring up the frame. + */ + public Converter() { + //Create Unit objects for metric distances, and then + //instantiate a ConversionPanel with these Units. + metricDistances[0] = new Unit("Centimeters", 0.01); + metricDistances[1] = new Unit("Meters", 1.0); + metricDistances[2] = new Unit("Kilometers", 1000.0); + metricPanel = new ConversionPanel(this, "Metric System", + metricDistances, + dataModel); + + //Create Unit objects for U.S. distances, and then + //instantiate a ConversionPanel with these Units. + usaDistances[0] = new Unit("Inches", 0.0254); + usaDistances[1] = new Unit("Feet", 0.305); + usaDistances[2] = new Unit("Yards", 0.914); + usaDistances[3] = new Unit("Miles", 1613.0); + usaPanel = new ConversionPanel(this, "U.S. System", + usaDistances, + new FollowerRangeModel(dataModel)); + + //Create a JPanel, and add the ConversionPanels to it. + mainPane = new JPanel(); + if (COLORS) { + mainPane.setBackground(Color.red); + } + mainPane.setLayout(new GridLayout(2,1,5,5)); + mainPane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); + mainPane.add(metricPanel); + mainPane.add(usaPanel); + resetMaxValues(true); + } + + public void resetMaxValues(boolean resetCurrentValues) { + double metricMultiplier = metricPanel.getMultiplier(); + double usaMultiplier = usaPanel.getMultiplier(); + int maximum = ConversionPanel.MAX; + + if (metricMultiplier > usaMultiplier) { + maximum = (int)(ConversionPanel.MAX * + (usaMultiplier/metricMultiplier)); + } + + if (DEBUG) { + System.out.println("in Converter resetMaxValues"); + System.out.println(" metricMultiplier = " + + metricMultiplier + + "; usaMultiplier = " + + usaMultiplier + + "; maximum = " + + maximum); + } + + dataModel.setMaximum(maximum); + + if (resetCurrentValues) { + dataModel.setDoubleValue(maximum); + } + } + + private static void initLookAndFeel() { + String lookAndFeel = null; + + if (LOOKANDFEEL != null) { + if (LOOKANDFEEL.equals("Metal")) { + lookAndFeel = UIManager.getCrossPlatformLookAndFeelClassName(); + } else if (LOOKANDFEEL.equals("System")) { + lookAndFeel = UIManager.getSystemLookAndFeelClassName(); + } else if (LOOKANDFEEL.equals("Mac")) { + lookAndFeel = "com.sun.java.swing.plaf.mac.MacLookAndFeel"; + //PENDING: check! + } else if (LOOKANDFEEL.equals("Windows")) { + lookAndFeel = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"; + } else if (LOOKANDFEEL.equals("Motif")) { + lookAndFeel = "com.sun.java.swing.plaf.motif.MotifLookAndFeel"; + } + + if (DEBUG) { + System.out.println("About to request look and feel: " + + lookAndFeel); + } + + try { + UIManager.setLookAndFeel(lookAndFeel); + } catch (ClassNotFoundException e) { + System.err.println("Couldn't find class for specified look and feel:" + + lookAndFeel); + System.err.println("Did you include the L&F library in the class path?"); + System.err.println("Using the default look and feel."); + } catch (UnsupportedLookAndFeelException e) { + System.err.println("Can't use the specified look and feel (" + + lookAndFeel + + ") on this platform."); + System.err.println("Using the default look and feel."); + } catch (Exception e) { + System.err.println("Couldn't get specified look and feel (" + + lookAndFeel + + "), for some reason."); + System.err.println("Using the default look and feel."); + e.printStackTrace(); + } + } + } + + public static void main(String[] args) { + initLookAndFeel(); + Converter converter = new Converter(); + + //Create a new window. + JFrame f = new JFrame("Converter"); + f.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + System.exit(0); + } + }); + + //Add the JPanel to the window and display the window. + //We can use a JPanel for the content pane because + //JPanel is opaque. + f.setContentPane(converter.mainPane); + if (COLORS) { + //This has no effect, since the JPanel completely + //covers the content pane. + f.getContentPane().setBackground(Color.green); + } + + f.pack(); //Resizes the window to its natural size. + f.setVisible(true); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/gui/swing/MenuDemo.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,164 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.JMenu; +import javax.swing.JMenuItem; +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JRadioButtonMenuItem; +import javax.swing.ButtonGroup; +import javax.swing.JMenuBar; +import javax.swing.KeyStroke; +import javax.swing.ImageIcon; + +import javax.swing.JTextArea; +import javax.swing.JScrollPane; +import javax.swing.JFrame; + +/* + * This class adds event handling to MenuLookDemo. + */ +public class MenuDemo extends JFrame + implements ActionListener, ItemListener { + JTextArea output; + JScrollPane scrollPane; + String newline = "\n"; + + public MenuDemo() { + JMenuBar menuBar; + JMenu menu, submenu; + JMenuItem menuItem; + JRadioButtonMenuItem rbMenuItem; + JCheckBoxMenuItem cbMenuItem; + + addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + System.exit(0); + } + }); + + //Add regular components to the window, using the default BorderLayout. + Container contentPane = getContentPane(); + output = new JTextArea(5, 30); + output.setEditable(false); + scrollPane = new JScrollPane(output); + contentPane.add(scrollPane, BorderLayout.CENTER); + + //Create the menu bar. + menuBar = new JMenuBar(); + setJMenuBar(menuBar); + + //Build the first menu. + menu = new JMenu("A Menu"); + menu.setMnemonic(KeyEvent.VK_A); + menu.getAccessibleContext().setAccessibleDescription( + "The only menu in this program that has menu items"); + menuBar.add(menu); + + //a group of JMenuItems + menuItem = new JMenuItem("A text-only menu item", + KeyEvent.VK_T); + //menuItem.setMnemonic(KeyEvent.VK_T); //used constructor instead + menuItem.setAccelerator(KeyStroke.getKeyStroke( + KeyEvent.VK_1, ActionEvent.ALT_MASK)); + menuItem.getAccessibleContext().setAccessibleDescription( + "This doesn't really do anything"); + menuItem.addActionListener(this); + menu.add(menuItem); + + menuItem = new JMenuItem("Both text and icon", + new ImageIcon("images/middle.gif")); + menuItem.setMnemonic(KeyEvent.VK_B); + menuItem.addActionListener(this); + menu.add(menuItem); + + menuItem = new JMenuItem(new ImageIcon("images/middle.gif")); + menuItem.setMnemonic(KeyEvent.VK_D); + menuItem.addActionListener(this); + menu.add(menuItem); + + //a group of radio button menu items + menu.addSeparator(); + ButtonGroup group = new ButtonGroup(); + rbMenuItem = new JRadioButtonMenuItem("A radio button menu item"); + rbMenuItem.setSelected(true); + rbMenuItem.setMnemonic(KeyEvent.VK_R); + group.add(rbMenuItem); + rbMenuItem.addActionListener(this); + menu.add(rbMenuItem); + rbMenuItem = new JRadioButtonMenuItem("Another one"); + rbMenuItem.setMnemonic(KeyEvent.VK_O); + group.add(rbMenuItem); + rbMenuItem.addActionListener(this); + menu.add(rbMenuItem); + + //a group of check box menu items + menu.addSeparator(); + cbMenuItem = new JCheckBoxMenuItem("A check box menu item"); + cbMenuItem.setMnemonic(KeyEvent.VK_C); + cbMenuItem.addItemListener(this); + menu.add(cbMenuItem); + cbMenuItem = new JCheckBoxMenuItem("Another one"); + cbMenuItem.setMnemonic(KeyEvent.VK_H); + cbMenuItem.addItemListener(this); + menu.add(cbMenuItem); + + //a submenu + menu.addSeparator(); + submenu = new JMenu("A submenu"); + submenu.setMnemonic(KeyEvent.VK_S); + + menuItem = new JMenuItem("An item in the submenu"); + menuItem.setAccelerator(KeyStroke.getKeyStroke( + KeyEvent.VK_2, ActionEvent.ALT_MASK)); + menuItem.addActionListener(this); + submenu.add(menuItem); + + menuItem = new JMenuItem("Another item"); + menuItem.addActionListener(this); + submenu.add(menuItem); + menu.add(submenu); + + //Build second menu in the menu bar. + menu = new JMenu("Another Menu"); + menu.setMnemonic(KeyEvent.VK_N); + menu.getAccessibleContext().setAccessibleDescription( + "This menu does nothing"); + menuBar.add(menu); + } + + public void actionPerformed(ActionEvent e) { + JMenuItem source = (JMenuItem)(e.getSource()); + String s = "Action event detected." + + newline + + " Event source: " + source.getText() + + " (an instance of " + getClassName(source) + ")"; + output.append(s + newline); + } + + public void itemStateChanged(ItemEvent e) { + JMenuItem source = (JMenuItem)(e.getSource()); + String s = "Item event detected." + + newline + + " Event source: " + source.getText() + + " (an instance of " + getClassName(source) + ")" + + newline + + " New state: " + + ((e.getStateChange() == ItemEvent.SELECTED) ? + "selected":"unselected"); + output.append(s + newline); + } + + // Returns just the class name -- no package info. + protected String getClassName(Object o) { + String classString = o.getClass().getName(); + int dotIndex = classString.lastIndexOf("."); + return classString.substring(dotIndex+1); + } + + public static void main(String[] args) { + MenuDemo window = new MenuDemo(); + + window.setTitle("MenuDemo"); + window.setSize(450, 260); + window.setVisible(true); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/gui/swing/MenuLookDemo.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,128 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.JMenu; +import javax.swing.JMenuItem; +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JRadioButtonMenuItem; +import javax.swing.ButtonGroup; +import javax.swing.JMenuBar; +import javax.swing.KeyStroke; +import javax.swing.ImageIcon; + +import javax.swing.JTextArea; +import javax.swing.JScrollPane; +import javax.swing.JFrame; + +/* + * This class exists solely to show you what menus look like. + * It has no menu-related event handling. + */ +public class MenuLookDemo extends JFrame { + JTextArea output; + JScrollPane scrollPane; + + public MenuLookDemo() { + JMenuBar menuBar; + JMenu menu, submenu; + JMenuItem menuItem; + JCheckBoxMenuItem cbMenuItem; + JRadioButtonMenuItem rbMenuItem; + + addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + System.exit(0); + } + }); + + //Add regular components to the window, using the default BorderLayout. + Container contentPane = getContentPane(); + output = new JTextArea(5, 30); + output.setEditable(false); + scrollPane = new JScrollPane(output); + contentPane.add(scrollPane, BorderLayout.CENTER); + + //Create the menu bar. + menuBar = new JMenuBar(); + setJMenuBar(menuBar); + + //Build the first menu. + menu = new JMenu("A Menu"); + menu.setMnemonic(KeyEvent.VK_A); + menu.getAccessibleContext().setAccessibleDescription( + "The only menu in this program that has menu items"); + menuBar.add(menu); + + //a group of JMenuItems + menuItem = new JMenuItem("A text-only menu item", + KeyEvent.VK_T); + //menuItem.setMnemonic(KeyEvent.VK_T); //used constructor instead + menuItem.setAccelerator(KeyStroke.getKeyStroke( + KeyEvent.VK_1, ActionEvent.ALT_MASK)); + menuItem.getAccessibleContext().setAccessibleDescription( + "This doesn't really do anything"); + menu.add(menuItem); + + menuItem = new JMenuItem("Both text and icon", + new ImageIcon("images/middle.gif")); + menuItem.setMnemonic(KeyEvent.VK_B); + menu.add(menuItem); + + menuItem = new JMenuItem(new ImageIcon("images/middle.gif")); + menuItem.setMnemonic(KeyEvent.VK_D); + menu.add(menuItem); + + //a group of radio button menu items + menu.addSeparator(); + ButtonGroup group = new ButtonGroup(); + + rbMenuItem = new JRadioButtonMenuItem("A radio button menu item"); + rbMenuItem.setSelected(true); + rbMenuItem.setMnemonic(KeyEvent.VK_R); + group.add(rbMenuItem); + menu.add(rbMenuItem); + + rbMenuItem = new JRadioButtonMenuItem("Another one"); + rbMenuItem.setMnemonic(KeyEvent.VK_O); + group.add(rbMenuItem); + menu.add(rbMenuItem); + + //a group of check box menu items + menu.addSeparator(); + cbMenuItem = new JCheckBoxMenuItem("A check box menu item"); + cbMenuItem.setMnemonic(KeyEvent.VK_C); + menu.add(cbMenuItem); + + cbMenuItem = new JCheckBoxMenuItem("Another one"); + cbMenuItem.setMnemonic(KeyEvent.VK_H); + menu.add(cbMenuItem); + + //a submenu + menu.addSeparator(); + submenu = new JMenu("A submenu"); + submenu.setMnemonic(KeyEvent.VK_S); + + menuItem = new JMenuItem("An item in the submenu"); + menuItem.setAccelerator(KeyStroke.getKeyStroke( + KeyEvent.VK_2, ActionEvent.ALT_MASK)); + submenu.add(menuItem); + + menuItem = new JMenuItem("Another item"); + submenu.add(menuItem); + menu.add(submenu); + + //Build second menu in the menu bar. + menu = new JMenu("Another Menu"); + menu.setMnemonic(KeyEvent.VK_N); + menu.getAccessibleContext().setAccessibleDescription( + "This menu does nothing"); + menuBar.add(menu); + } + + public static void main(String[] args) { + MenuLookDemo window = new MenuLookDemo(); + + window.setTitle("MenuLookDemo"); + window.setSize(450, 260); + window.setVisible(true); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/gui/swing/PopupMenuDemo.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,196 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.JPopupMenu; +import javax.swing.JMenu; +import javax.swing.JMenuItem; +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JRadioButtonMenuItem; +import javax.swing.ButtonGroup; +import javax.swing.JMenuBar; +import javax.swing.KeyStroke; +import javax.swing.ImageIcon; + +import javax.swing.JTextArea; +import javax.swing.JScrollPane; +import javax.swing.JFrame; + +/* + * This class adds popup menus to MenuDemo. + */ +public class PopupMenuDemo extends JFrame + implements ActionListener, ItemListener { + JTextArea output; + JScrollPane scrollPane; + String newline = "\n"; + JPopupMenu popup; + + public PopupMenuDemo() { + JMenuBar menuBar; + JMenu menu, submenu; + JMenuItem menuItem; + JRadioButtonMenuItem rbMenuItem; + JCheckBoxMenuItem cbMenuItem; + + addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + System.exit(0); + } + }); + + //Add regular components to the window, using the default BorderLayout. + Container contentPane = getContentPane(); + output = new JTextArea(5, 30); + output.setEditable(false); + scrollPane = new JScrollPane(output); + contentPane.add(scrollPane, BorderLayout.CENTER); + + //Create the menu bar. + menuBar = new JMenuBar(); + setJMenuBar(menuBar); + + //Build the first menu. + menu = new JMenu("A Menu"); + menu.setMnemonic(KeyEvent.VK_A); + menu.getAccessibleContext().setAccessibleDescription( + "The only menu in this program that has menu items"); + menuBar.add(menu); + + //a group of JMenuItems + menuItem = new JMenuItem("A text-only menu item", + KeyEvent.VK_T); + //menuItem.setMnemonic(KeyEvent.VK_T); //used constructor instead + menuItem.setAccelerator(KeyStroke.getKeyStroke( + KeyEvent.VK_1, ActionEvent.ALT_MASK)); + menuItem.getAccessibleContext().setAccessibleDescription( + "This doesn't really do anything"); + menuItem.addActionListener(this); + menu.add(menuItem); + menuItem = new JMenuItem("Both text and icon", + new ImageIcon("images/middle.gif")); + menuItem.setMnemonic(KeyEvent.VK_B); + menuItem.addActionListener(this); + menu.add(menuItem); + menuItem = new JMenuItem(new ImageIcon("images/middle.gif")); + menuItem.setMnemonic(KeyEvent.VK_D); + menuItem.addActionListener(this); + menu.add(menuItem); + + //a group of radio button menu items + menu.addSeparator(); + ButtonGroup group = new ButtonGroup(); + rbMenuItem = new JRadioButtonMenuItem("A radio button menu item"); + rbMenuItem.setSelected(true); + rbMenuItem.setMnemonic(KeyEvent.VK_R); + group.add(rbMenuItem); + rbMenuItem.addActionListener(this); + menu.add(rbMenuItem); + rbMenuItem = new JRadioButtonMenuItem("Another one"); + rbMenuItem.setMnemonic(KeyEvent.VK_O); + group.add(rbMenuItem); + rbMenuItem.addActionListener(this); + menu.add(rbMenuItem); + + //a group of check box menu items + menu.addSeparator(); + cbMenuItem = new JCheckBoxMenuItem("A check box menu item"); + cbMenuItem.setMnemonic(KeyEvent.VK_C); + cbMenuItem.addItemListener(this); + menu.add(cbMenuItem); + cbMenuItem = new JCheckBoxMenuItem("Another one"); + cbMenuItem.setMnemonic(KeyEvent.VK_H); + cbMenuItem.addItemListener(this); + menu.add(cbMenuItem); + + //a submenu + menu.addSeparator(); + submenu = new JMenu("A submenu"); + submenu.setMnemonic(KeyEvent.VK_S); + + menuItem = new JMenuItem("An item in the submenu"); + menuItem.setAccelerator(KeyStroke.getKeyStroke( + KeyEvent.VK_2, ActionEvent.ALT_MASK)); + menuItem.addActionListener(this); + submenu.add(menuItem); + + menuItem = new JMenuItem("Another item"); + menuItem.addActionListener(this); + submenu.add(menuItem); + menu.add(submenu); + + //Build second menu in the menu bar. + menu = new JMenu("Another Menu"); + menu.setMnemonic(KeyEvent.VK_N); + menu.getAccessibleContext().setAccessibleDescription( + "This menu does nothing"); + menuBar.add(menu); + + //Create the popup menu. + popup = new JPopupMenu(); + menuItem = new JMenuItem("A popup menu item"); + menuItem.addActionListener(this); + popup.add(menuItem); + menuItem = new JMenuItem("Another popup menu item"); + menuItem.addActionListener(this); + popup.add(menuItem); + + //Add listener to components that can bring up popup menus. + MouseListener popupListener = new PopupListener(); + output.addMouseListener(popupListener); + scrollPane.addMouseListener(popupListener); + menuBar.addMouseListener(popupListener); + } + + public void actionPerformed(ActionEvent e) { + JMenuItem source = (JMenuItem)(e.getSource()); + String s = "Action event detected." + + newline + + " Event source: " + source.getText() + + " (an instance of " + getClassName(source) + ")"; + output.append(s + newline); + } + + public void itemStateChanged(ItemEvent e) { + JMenuItem source = (JMenuItem)(e.getSource()); + String s = "Item event detected." + + newline + + " Event source: " + source.getText() + + " (an instance of " + getClassName(source) + ")" + + newline + + " New state: " + + ((e.getStateChange() == ItemEvent.SELECTED) ? + "selected":"unselected"); + output.append(s + newline); + } + + // Returns just the class name -- no package info. + protected String getClassName(Object o) { + String classString = o.getClass().getName(); + int dotIndex = classString.lastIndexOf("."); + return classString.substring(dotIndex+1); + } + + public static void main(String[] args) { + PopupMenuDemo window = new PopupMenuDemo(); + + window.setTitle("PopupMenuDemo"); + window.setSize(450, 260); + window.setVisible(true); + } + + class PopupListener extends MouseAdapter { + public void mousePressed(MouseEvent e) { + maybeShowPopup(e); + } + + public void mouseReleased(MouseEvent e) { + maybeShowPopup(e); + } + + private void maybeShowPopup(MouseEvent e) { + if (e.isPopupTrigger()) { + popup.show(e.getComponent(), + e.getX(), e.getY()); + } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/java3d/Axis.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,119 @@ +/* + * Axis.java 1.0 98/11/25 + * + * Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved. + * + * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use, + * modify and redistribute this software in source and binary code form, + * provided that i) this copyright notice and license appear on all copies of + * the software; and ii) Licensee does not utilize the software in a manner + * which is disparaging to Sun. + * + * This software is provided "AS IS," without a warranty of any kind. ALL + * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY + * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR + * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE + * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING + * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS + * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, + * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER + * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF + * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGES. + * + * This software is not designed or intended for use in on-line control of + * aircraft, air traffic, aircraft navigation or aircraft communications; or in + * the design, construction, operation or maintenance of any nuclear + * facility. Licensee represents and warrants that it will not use or + * redistribute the Software for such purposes. + */ + +/* + * Getting Started with the Java 3D API + * written in Java 3D + * + * This program demonstrates: + * 1. writing a visual object class + * In this program, Axis class defines a visual object + * This particular class extends Shape3D + * See the text for a discussion. + * 2. Using LineArray to draw 3D lines. + */ + + +import javax.media.j3d.*; +import javax.vecmath.*; + + + public class Axis extends Shape3D{ + + //////////////////////////////////////////// + // + // create axis visual object + // + public Axis() { + + this.setGeometry(createGeometry()); + + } + + private Geometry createGeometry(){ + // create line for X axis + IndexedLineArray axisLines = new IndexedLineArray(18, GeometryArray.COORDINATES, 30); + + axisLines.setCoordinate( 0, new Point3f(-1.0f, 0.0f, 0.0f)); + axisLines.setCoordinate( 1, new Point3f( 1.0f, 0.0f, 0.0f)); + axisLines.setCoordinate( 2, new Point3f( 0.9f, 0.1f, 0.1f)); + axisLines.setCoordinate( 3, new Point3f( 0.9f,-0.1f, 0.1f)); + axisLines.setCoordinate( 4, new Point3f( 0.9f, 0.1f,-0.1f)); + axisLines.setCoordinate( 5, new Point3f( 0.9f,-0.1f,-0.1f)); + axisLines.setCoordinate( 6, new Point3f( 0.0f,-1.0f, 0.0f)); + axisLines.setCoordinate( 7, new Point3f( 0.0f, 1.0f, 0.0f)); + axisLines.setCoordinate( 8, new Point3f( 0.1f, 0.9f, 0.1f)); + axisLines.setCoordinate( 9, new Point3f(-0.1f, 0.9f, 0.1f)); + axisLines.setCoordinate(10, new Point3f( 0.1f, 0.9f,-0.1f)); + axisLines.setCoordinate(11, new Point3f(-0.1f, 0.9f,-0.1f)); + axisLines.setCoordinate(12, new Point3f( 0.0f, 0.0f,-1.0f)); + axisLines.setCoordinate(13, new Point3f( 0.0f, 0.0f, 1.0f)); + axisLines.setCoordinate(14, new Point3f( 0.1f, 0.1f, 0.9f)); + axisLines.setCoordinate(15, new Point3f(-0.1f, 0.1f, 0.9f)); + axisLines.setCoordinate(16, new Point3f( 0.1f,-0.1f, 0.9f)); + axisLines.setCoordinate(17, new Point3f(-0.1f,-0.1f, 0.9f)); + + axisLines.setCoordinateIndex( 0, 0); + axisLines.setCoordinateIndex( 1, 1); + axisLines.setCoordinateIndex( 2, 2); + axisLines.setCoordinateIndex( 3, 1); + axisLines.setCoordinateIndex( 4, 3); + axisLines.setCoordinateIndex( 5, 1); + axisLines.setCoordinateIndex( 6, 4); + axisLines.setCoordinateIndex( 7, 1); + axisLines.setCoordinateIndex( 8, 5); + axisLines.setCoordinateIndex( 9, 1); + axisLines.setCoordinateIndex(10, 6); + axisLines.setCoordinateIndex(11, 7); + axisLines.setCoordinateIndex(12, 8); + axisLines.setCoordinateIndex(13, 7); + axisLines.setCoordinateIndex(14, 9); + axisLines.setCoordinateIndex(15, 7); + axisLines.setCoordinateIndex(16,10); + axisLines.setCoordinateIndex(17, 7); + axisLines.setCoordinateIndex(18,11); + axisLines.setCoordinateIndex(19, 7); + axisLines.setCoordinateIndex(20,12); + axisLines.setCoordinateIndex(21,13); + axisLines.setCoordinateIndex(22,14); + axisLines.setCoordinateIndex(23,13); + axisLines.setCoordinateIndex(24,15); + axisLines.setCoordinateIndex(25,13); + axisLines.setCoordinateIndex(26,16); + axisLines.setCoordinateIndex(27,13); + axisLines.setCoordinateIndex(28,17); + axisLines.setCoordinateIndex(29,13); + + return axisLines; + + } // end of Axis createGeometry() + + + } // end of class Axis
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/java3d/FPS.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,32 @@ +import javax.media.j3d.*; +import javax.vecmath.*; +import java.util.Enumeration; + +final class FPS extends Behavior { + + protected int nFrames; + protected long startTime; + protected final WakeupCondition w; + + public FPS(int nFrames){ + this.nFrames=nFrames; + w=new WakeupOnElapsedFrames(nFrames); + } + + public FPS(){ + this(100); + } + + public void initialize(){ + setSchedulingBounds(new BoundingSphere(new Point3d(),1000)); + startTime=System.currentTimeMillis(); + wakeupOn(w); + } + + public void processStimulus(Enumeration criteria){ + long time=System.currentTimeMillis(); + System.err.println("fps: "+ 1000 * (double) nFrames / (double) (time-startTime)); + startTime=time; + wakeupOn(w); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/java3d/LocalUniverse.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,12 @@ +//import samer.core.*; +import javax.media.j3d.*; + +public class LocalUniverse extends VirtualUniverse +{ + Locale locale; + + public LocalUniverse() { locale=new Locale(this); } + public BranchGroup addGroup(BranchGroup bg) { + locale.addBranchGraph(bg); return bg; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/java3d/MatrixPointArray.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,73 @@ +import samer.core.types.*; +import samer.maths.*; +import java.util.*; +import javax.media.j3d.*; +import javax.vecmath.*; + + +public class MatrixPointArray extends PointArray implements Observer +{ + int N; // number of points + Matrix P; // 3d positions of points + VVector A; // scalar activations + VDouble K; // slaing factor for activations + float carray[]; // array for holding colours + + + public MatrixPointArray(Matrix points, VVector activities) + { + super(points.getRowDimension(), COORDINATES | COLOR_3); + + N=points.getRowDimension(); + P=points; + A=activities; + carray=new float[3*N]; + K=new VDouble("scale",1); + + // set capabilities for subsequent updates + setCapability(ALLOW_COORDINATE_WRITE); + setCapability(ALLOW_COLOR_WRITE); + + { + double [] a=A.array(); + for (int i=0; i<N; i++) a[i]=1; + } + + updatePoints(); + updateActivities(); + + A.addObserver(this); + } + + + public void update(Observable o, Object a) + { + updateActivities(); + } + + public void updatePoints() + { + // load points into point array + double [][] PA=P.getArray(); + double [] row; + for (int i=0; i<N; i++) { + row=PA[i]; + setCoordinate(i,row); + } + } + + public void updateActivities() + { + // load colours + double [] a=A.array(); + double k=K.value; + + for (int i=0, j=0; i<N; i++,j+=3) { + float ai=(float)(a[i]*k); + carray[j]=ai; + carray[j+1]=0.8f*ai; + carray[j+2]=0.4f*ai; + } + setColors(0,carray); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/java3d/Viewer.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,97 @@ +/* + Viewer.java + + A View branch group containing a ViewPlatform + and associated View, Canvas etc. Creates a + window for itself. Can be added dynamically + to a live universe. + */ + +import samer.core.*; +import java.awt.event.*; +import java.awt.*; +import javax.media.j3d.*; +import javax.vecmath.*; +import com.sun.j3d.utils.behaviors.keyboard.*; + +import samer.core.Node; + +public class Viewer extends BranchGroup implements Agent +{ + Node node; + Canvas3D canvas; + TransformGroup VT=new TransformGroup(); + View V=new View(); + Shell.Window win; + + public void lookFrom(Point3d eye, Vector3d up) + { + // view platform placement + Transform3D t=new Transform3D(); + t.lookAt(eye, new Point3d(0,0,0), up); + t.invert(); + VT.setTransform(t); + } + + public Viewer(String name) + { + node=new Node(name); + Shell.push(node); + + // create view bits + canvas=new Canvas3D(util.getGraphicsConfiguration()); + + // view platform placement + ViewPlatform VP=new ViewPlatform(); + + lookFrom(new Point3d(0,1,6), new Vector3d(0,1,0)); + + if (Shell.getBoolean("keynav",false)) { + // !!! all key navigators seem to be slaved! + util.addKeyNavigator(VT,util.readwrite(VT)); + } + + VT.addChild(VP); + addChild(VT); + + // view itself + V.addCanvas3D(canvas); + V.setPhysicalBody(new PhysicalBody()); + V.setPhysicalEnvironment(new PhysicalEnvironment()); + V.attachViewPlatform(VP); + V.setWindowEyepointPolicy(View.RELATIVE_TO_WINDOW); + V.setWindowResizePolicy(View.VIRTUAL_WORLD); + //V.setLocalEyeLightingEnable(true); + //v.setWindowMovementPolicy(View.VIRTUAL_WORLD); + + setCapability(ALLOW_DETACH); + setCapability(ALLOW_CHILDREN_WRITE); + compile(); + Shell.pop(); + + win=Shell.getWindow(name); + win.container().setLayout(new BorderLayout()); + win.container().add(canvas); + win.expose(); + win.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { dispose(); } + }); + + Shell.registerAgent(this); + } + + public void dispose() + { + Shell.deregisterAgent(this); + win.dispose(); + detach(); + } + + protected void finalize() { Shell.trace("finalizing view "+this); } + + public void getCommands(Agent.Registry r) { r.add("start").add("stop"); } + public void execute(String cmd, Environment env) { + if (cmd.equals("start")) { V.startView(); } // canvas.startRenderer(); } + else if (cmd.equals("stop")) { V.stopView(); } // canvas.stopRenderer(); } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/java3d/abs3d.txt Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,512 @@ + -1.2249771e+000 1.3287783e-001 3.6316273e-001 + 5.6866893e-001 2.4706921e-001 6.4439769e-001 + 3.7504430e-001 -3.2513718e-001 5.9658877e-001 + 3.6754884e-001 -7.5919150e-001 4.8736897e-001 + 5.6507900e-001 6.9792618e-001 9.1616350e-001 + -2.2569936e-001 -9.2953282e-001 -6.2678996e-001 + 3.0538520e-001 8.3016525e-001 9.1519661e-001 + 1.5430264e-001 -1.1119975e+000 -2.3117656e-001 + 6.9066856e-001 -2.5418210e-001 3.5664763e-001 + 6.9980796e-001 1.8278967e-001 6.1979824e-001 + -1.1532882e+000 -2.1568410e-001 1.7991022e-001 + 4.9968607e-002 9.2220134e-001 8.4540061e-001 + 2.2979367e-001 -1.0804708e+000 5.0259224e-002 + 5.5535796e-001 -6.1675250e-001 3.1565146e-001 + 6.8919935e-001 -1.8286010e-002 5.2443082e-001 + -1.2134268e+000 7.7497023e-002 9.1196066e-001 + 8.5398150e-001 4.9583183e-001 7.0902568e-001 + 6.2656864e-001 -4.1922581e-001 3.5900705e-001 + 9.8326552e-003 -7.7545176e-001 -9.4175922e-001 + 1.2017954e-001 9.2910589e-001 8.3884032e-001 + 2.1741841e-001 -8.2069682e-001 5.1579118e-001 + 6.9905584e-001 6.5243045e-001 8.8225038e-001 + -1.7091855e-001 -7.1160931e-001 -8.5837244e-001 + 8.1250132e-001 -1.2429555e-001 3.0436832e-001 + 3.5123679e-001 -7.1482772e-001 6.3406451e-001 + 4.6352566e-001 9.4847444e-001 7.2021656e-001 + -9.3508282e-001 -6.2001412e-001 2.9622398e-002 + 7.8751885e-001 -3.3900961e-001 4.3343373e-002 + 9.0757769e-001 4.1352953e-001 6.1108867e-001 + 2.7476116e-001 -9.3862412e-001 2.7063779e-001 + -1.0823106e+000 -2.5150467e-001 5.1247473e-001 + 3.9190065e-001 8.2985792e-001 8.7181711e-001 + 4.9714022e-001 -6.9929774e-001 3.7424518e-001 + 8.1561239e-001 1.6302169e-001 5.1661747e-001 + 1.1465140e-001 -1.0615828e+000 -5.0112390e-001 + 1.5539607e-001 9.0224675e-001 8.2988439e-001 + -3.1937433e-002 -7.4063752e-001 -9.8092589e-001 + 6.5540766e-001 -5.0295084e-001 1.5185016e-001 + 9.7304307e-001 3.9605438e-001 4.6399442e-001 + -1.0812221e+000 -2.4151822e-001 8.8746909e-001 + 6.7140210e-002 9.4623073e-001 7.8591784e-001 + 2.1728344e-001 -6.5289624e-001 7.5095008e-001 + 8.3519575e-001 -2.0627195e-001 1.1188658e-001 + 6.3577235e-001 -3.6579770e-001 2.7261375e-001 + -1.1055404e-001 -6.0979877e-001 -1.0368371e+000 + 5.0754602e-001 7.3448889e-001 8.7889694e-001 + 1.3385426e-001 -7.0279596e-001 7.0034147e-001 + 7.6087621e-001 1.5698254e-001 5.1523853e-001 + -8.8694668e-001 -7.5131757e-001 -2.5762013e-001 + 6.2819589e-001 1.0800498e+000 2.2863456e-001 + 1.0127869e-001 -1.1974721e+000 -5.1549747e-002 + 8.2948572e-001 -2.2409245e-001 -8.4095355e-003 + 5.3459408e-001 -6.2603215e-001 1.7343899e-001 + 3.6573419e-001 8.4830593e-001 8.3739313e-001 + -1.3093233e+000 3.9897853e-001 -1.7128925e-001 + 3.8686755e-001 -6.8555202e-001 5.6823565e-001 + 6.2573073e-001 6.7931687e-001 8.4812873e-001 + 5.0393749e-002 -9.1493998e-001 -7.7663234e-001 + 9.2273564e-001 4.0021463e-001 5.1273496e-001 + 6.8954626e-001 -3.5960846e-001 1.4855770e-001 + -5.9891952e-001 -7.9539432e-001 -5.0616146e-001 + 5.4556721e-001 1.0560608e+000 4.6247210e-001 + 1.9629614e-001 -9.6097245e-001 2.4711353e-001 + 7.3863657e-001 3.3852595e-002 4.2130957e-001 + -1.0512002e+000 -4.4753412e-001 1.6460376e-001 + 5.8570233e-001 1.0613288e+000 3.3990103e-001 + 2.8163094e-001 -6.1491208e-001 7.0486415e-001 + 8.1808429e-001 -1.0213366e-001 1.3572510e-001 + -1.9930934e-001 -9.6068260e-001 -5.5587344e-001 + 8.1832715e-001 5.7697870e-001 7.1715628e-001 + 5.1485401e-001 -3.0756617e-001 4.1655093e-001 + -2.2060380e-001 -5.7890485e-001 -1.0435674e+000 + 9.1226627e-002 9.6960308e-001 7.2570494e-001 + 1.8689874e-001 -5.7272258e-001 7.6604976e-001 + 8.6207050e-001 2.5821471e-001 4.2289523e-001 + -1.3700722e+000 8.8210756e-001 6.9983889e-001 + 3.3486025e-001 9.6155189e-001 7.2184876e-001 + 7.1280355e-002 -8.2407128e-001 5.3396201e-001 + 7.5949613e-001 -2.7489481e-001 -1.0815193e-001 + -2.3580031e-002 -8.3838282e-001 -8.5778907e-001 + 5.4257275e-001 7.6711812e-001 8.0138971e-001 + 3.4754382e-001 -6.6814643e-001 5.3726078e-001 + 7.7113188e-001 -5.1983999e-002 2.2221381e-001 + -1.1840847e+000 -2.0778654e-001 -6.0768541e-002 + 5.2934073e-001 1.0891914e+000 3.2458749e-001 + 5.7830066e-001 -4.9911982e-001 8.7000202e-002 + 9.3157543e-002 -1.1864719e+000 -2.7499631e-001 + 6.8707440e-001 7.1363458e-001 8.1053419e-001 + -7.2183656e-001 -7.9208265e-001 -4.1487663e-001 + 8.8225736e-001 2.5297298e-001 3.5178588e-001 + 2.6147723e-001 -9.8614882e-001 8.0460520e-002 + -5.9098894e-002 1.0070108e+000 6.6484117e-001 + 4.8605959e-001 -4.5720983e-001 2.5448300e-001 + -9.5556366e-001 -6.6724251e-001 -8.9202327e-002 + 8.9484947e-001 4.6361716e-001 4.7239268e-001 + 7.9490314e-001 -1.6873919e-001 -7.9306814e-002 + -1.3966315e+000 3.3010444e-001 5.8738258e-001 + 4.2136404e-001 8.9840463e-001 7.3971859e-001 + 4.0407557e-001 -6.0457484e-001 4.0796147e-001 + 4.0948126e-002 -7.0111590e-001 6.5529835e-001 + 5.5228355e-002 1.0381621e+000 6.7152293e-001 + -1.5849147e-001 -6.4336697e-001 -1.0032187e+000 + 6.2788361e-001 -3.4921731e-001 3.7455595e-002 + 6.3731084e-001 1.5417729e-001 4.7060311e-001 + -1.0880196e-001 -8.7159906e-001 -7.7723818e-001 + 3.7836833e-001 9.0780235e-001 7.4098932e-001 + -1.2188357e+000 -1.6442510e-001 2.7041398e-001 + 7.6506513e-001 3.1585779e-001 4.5005367e-001 + 1.2476092e-001 -5.6361138e-001 7.7557163e-001 + 7.5010060e-001 -2.1338922e-001 -1.9156494e-001 + 4.9253610e-002 -1.1793000e+000 5.0330366e-002 + -7.1279277e-002 1.0265424e+000 6.1648108e-001 + -9.1241424e-001 -6.1737544e-001 -3.3209043e-001 + 7.3208732e-001 6.9955014e-001 7.5402225e-001 + 4.2556392e-001 -6.2350471e-001 2.3223260e-001 + 8.1008003e-001 -2.9769134e-002 3.5797584e-002 + -1.0327523e-001 -7.7969756e-001 -9.0787692e-001 + 4.1097887e-001 1.0834755e+000 4.4787267e-001 + -5.3737586e-001 -6.0285101e-002 1.9546735e+000 + 8.9496878e-001 4.9599086e-001 3.9449007e-001 + 2.7002616e-001 -6.0763894e-001 6.0519093e-001 + 6.4495602e-001 -3.1576605e-001 -9.4174932e-002 + 1.0107655e-001 -8.6677020e-001 3.6961323e-001 + 2.3887092e-001 9.8173916e-001 6.5824715e-001 + -5.4630348e-001 -7.0285280e-001 -7.1265412e-001 + 7.4645518e-001 6.9097953e-001 6.7143879e-001 + 5.2124295e-001 -4.7592272e-001 -5.5617212e-002 + -1.1310064e+000 -1.0429394e-001 6.7709394e-001 + 4.2464342e-001 1.1064266e+000 3.3032894e-001 + 8.6879134e-002 -5.9103812e-001 7.1171869e-001 + 7.8169632e-001 1.1734155e-001 1.8351068e-001 + 4.5532611e-002 -1.0917938e+000 -5.0985961e-001 + 9.2325967e-001 5.0421754e-001 3.3112549e-001 + 2.0650422e-001 -6.2137634e-001 6.0314296e-001 + 5.1712427e-001 1.1173658e+000 1.0166882e-001 + -1.0001317e+000 -4.5600181e-001 -4.6048366e-001 + 7.3241432e-001 -1.6310948e-001 -2.5058806e-001 + 6.2948625e-001 -2.7732132e-001 -2.1700280e-001 + -2.5273946e-001 -5.3349072e-001 -1.0683890e+000 + 5.0560239e-001 9.9320744e-001 5.0793579e-001 + 1.1490455e-001 -1.0574898e+000 4.9163969e-002 + 9.0899625e-001 3.6443720e-001 2.0695835e-001 + -1.3616957e+000 4.8590074e-001 3.0367272e-001 + 4.7672397e-001 1.1121789e+000 1.9655260e-001 + -5.7302768e-003 -9.0324802e-001 3.3870898e-001 + 7.8145906e-001 -1.8971463e-002 -9.8727345e-002 + 4.4404797e-001 -5.5875403e-001 3.1666778e-002 + -1.3238705e+000 1.8717826e-001 1.4405312e-001 + 5.9440942e-001 8.6114843e-001 6.1920139e-001 + 7.2772056e-001 2.2477647e-001 2.5551678e-001 + 3.2709538e-001 -6.4739239e-001 3.3139849e-001 + -4.6555541e-002 -8.8420170e-001 -7.9718659e-001 + 3.5615095e-001 1.0220340e+000 5.1776906e-001 + 4.1182594e-002 -5.2434221e-001 7.5509343e-001 + 4.5669467e-001 1.1254087e+000 1.0148420e-001 + -6.3968979e-001 -7.0762812e-001 -6.2959085e-001 + 5.6164086e-001 -3.2221842e-001 -1.5463110e-001 + 7.8152220e-001 6.5901925e-001 5.6120577e-001 + -8.0527564e-001 -8.2498829e-001 -3.6185404e-001 + 7.3952408e-001 -5.3875837e-002 -1.9200948e-001 + -1.9342424e-002 -6.7191563e-001 5.8122858e-001 + 3.5816230e-001 1.0781945e+000 4.1852781e-001 + -1.3678694e+000 2.8700284e-001 -4.8563330e-002 + 7.6612594e-001 2.7881860e-001 1.7446681e-001 + 3.7026859e-001 -2.2304394e-001 2.7353784e-001 + -9.6424922e-004 -1.2063720e+000 -1.5901865e-001 + 3.9222699e-001 1.1201105e+000 2.2657724e-001 + 3.0723661e-003 -1.1616660e+000 -4.0710693e-001 + 3.3705136e-001 -5.6376300e-001 1.9489861e-001 + 9.0634916e-001 5.5462261e-001 2.7754448e-001 + -1.1982513e+000 9.3633771e-003 -2.6230927e-001 + 5.7631860e-001 8.2815210e-001 6.6732267e-001 + 8.1648343e-002 -4.9610837e-001 7.2805646e-001 + 4.4017227e-001 1.1286154e+000 2.2280829e-002 + -3.2383411e-001 -5.2712910e-001 -1.0264484e+000 + 6.9014664e-001 -8.5311329e-002 -2.8658910e-001 + 5.8222972e-001 -2.1143997e-001 -2.8613498e-001 + -2.4721190e-001 -6.6281314e-001 -9.7874551e-001 + 6.9399516e-001 8.1243125e-001 6.3989488e-001 + 7.2015346e-001 5.8421867e-002 -9.5733957e-002 + -1.3048222e+000 2.0568368e-001 8.5197114e-001 + 3.7905333e-001 1.1460350e+000 1.4625813e-001 + -6.2486065e-003 -5.1362466e-001 7.1224207e-001 + 3.2633193e-002 -1.0001509e+000 6.0016524e-002 + 9.0108648e-001 4.5952505e-001 1.4127277e-001 + 2.3305100e-001 -4.9153793e-001 3.9236335e-001 + 2.8437576e-001 1.1437149e+000 3.0704445e-001 + -1.1515127e+000 6.9300211e-002 6.3851073e-001 + 4.2395228e-001 -2.9290344e-001 -1.1322241e-001 + 7.5390907e-001 2.1514763e-001 1.0024542e-002 + -7.5326270e-002 -9.0721901e-001 -7.4509414e-001 + 2.8202888e-001 1.0120079e+000 5.6023161e-001 + -7.3320474e-001 -2.3611072e-001 -9.7109642e-001 + 7.8856744e-001 7.1223017e-001 4.7109226e-001 + -8.3189939e-002 -7.5305926e-001 4.5661183e-001 + 1.5115992e-001 -2.5229684e-001 4.0773939e-001 + -1.4088235e-001 1.0822877e+000 4.2002850e-001 + -1.2168407e+000 1.4683669e-001 5.3543807e-001 + 4.3826915e-001 -1.3211062e-001 -5.8804152e-002 + 8.3849701e-001 3.7367379e-001 7.0144442e-002 + -1.2184403e-001 -1.1845649e+000 3.2405390e-002 + 2.8364724e-001 1.0639143e+000 4.4959293e-001 + -4.8279148e-001 -5.9718834e-001 -8.6901904e-001 + 2.6746909e-001 -2.3833694e-001 1.0728498e-001 + 6.5784268e-001 3.8078739e-003 -3.0640973e-001 + 1.8937780e-001 1.1588412e+000 2.5935472e-001 + -8.4381118e-001 -2.1167876e-001 -8.7709571e-001 + -8.1468226e-003 -4.3215820e-001 7.4013703e-001 + 6.9000346e-001 8.8275822e-001 5.1219175e-001 + -7.8676826e-001 7.6325059e-002 1.9234762e+000 + 2.5136852e-001 -4.8944314e-001 7.4236459e-002 + 8.8126387e-001 5.9532016e-001 1.9526384e-001 + -1.4750864e-001 -6.7178954e-001 4.9693915e-001 + 3.7728271e-001 1.1452593e+000 -4.7776930e-002 + -7.0140839e-002 -1.0576812e+000 -5.5804412e-001 + 4.7148136e-001 -2.1173203e-001 -3.0017496e-001 + 7.1340045e-001 1.0026224e-001 -2.2631751e-001 + -3.6282251e-001 -4.7969307e-001 -1.0506527e+000 + 1.9683852e-001 1.0439782e+000 5.2635804e-001 + -7.7577178e-001 5.1880809e-001 1.7382744e+000 + 6.5818950e-001 3.0916527e-001 2.1768020e-002 + -6.4902756e-001 -6.2635564e-001 -6.8793684e-001 + 2.9391592e-001 1.1557068e+000 2.0494968e-001 + -9.3503446e-002 -1.1849156e+000 -2.2523147e-001 + 8.6220861e-001 6.1896179e-001 1.4540051e-001 + 1.6114430e-001 -5.3542537e-001 2.5213770e-001 + 5.4345685e-001 -1.2299442e-001 -3.9655218e-001 + -5.8189578e-002 -4.1180570e-001 7.4746653e-001 + -1.3765656e-001 1.1190232e+000 3.1912046e-001 + -6.9493704e-002 -9.2961915e-001 2.0417468e-001 + 7.8502109e-001 7.3483217e-001 3.2863366e-001 + 1.8906179e-001 -2.4102354e-001 -1.4441241e-002 + -1.0560447e+000 -5.7596895e-001 4.9081641e-002 + 2.2365845e-001 1.0985624e+000 4.3267234e-001 + -2.9582890e-001 -7.6134237e-001 -8.8191716e-001 + 6.6587626e-001 1.1405872e-001 -3.0243906e-001 + -8.7438305e-002 -4.4978708e-001 7.1472837e-001 + 2.8625812e-001 1.1676452e+000 1.3208489e-002 + -1.3393759e+000 2.4093261e-001 1.9000618e-001 + 8.0650020e-001 4.0313616e-001 -3.8015218e-002 + 4.6292246e-002 -4.6900403e-001 4.0939556e-001 + 5.6172586e-001 -3.5907072e-002 -4.1982187e-001 + -1.0610687e+000 -5.4421020e-001 -1.7846486e-001 + 5.4976153e-001 9.6876605e-001 4.1984781e-001 + -1.7386445e-001 -7.7315850e-001 3.1917049e-001 + 2.6135671e-001 1.1907266e+000 5.7633707e-002 + -1.0801336e-001 -9.9552822e-001 -6.4879486e-001 + 3.5102898e-001 -1.5843753e-001 -2.8958657e-001 + 8.2009201e-001 7.0045706e-001 1.8434131e-001 + -1.3086183e+000 5.0744401e-001 -3.8520235e-001 + 2.0258478e-001 1.1197004e+000 3.5791173e-001 + -1.5141047e-001 -5.6605040e-001 5.9482352e-001 + 2.0239655e-001 -3.0961846e-001 -1.5663472e-001 + 6.5217650e-001 2.0697701e-001 -2.4378567e-001 + -5.1334022e-001 -5.4964478e-001 -9.2134882e-001 + -1.8282223e-001 1.1362597e+000 2.0985741e-001 + -1.6354575e-001 -1.0278726e+000 9.8484115e-002 + 7.9031836e-001 4.6299468e-001 -5.6587631e-002 + -8.5119393e-001 -7.7094399e-001 -4.5329773e-001 + 6.2164651e-001 9.1908480e-001 5.0126003e-001 + 1.4087727e-002 -4.3010763e-001 2.8560182e-001 + 4.0105266e-001 -1.0485817e-001 -4.0284272e-001 + -6.2011850e-001 1.8883123e-001 1.9265212e+000 + 1.4196252e-001 1.1863025e+000 2.0766888e-001 + -1.1587699e-001 -4.5556811e-001 6.6012535e-001 + 5.9931061e-001 1.3247384e-001 -3.7713391e-001 + -2.7139480e-001 -7.4053140e-001 -9.2469062e-001 + 2.1631569e-001 1.1780510e+000 1.2084433e-001 + -1.1168847e+000 -4.4397841e-001 3.2812367e-002 + 7.8084534e-001 7.8151142e-001 2.0321158e-001 + -1.5944397e-001 -4.3135578e-001 6.6899049e-001 + 7.4620546e-001 4.0677549e-001 -1.5840230e-001 + -2.1687984e-001 -7.8900318e-001 2.1675727e-001 + -1.8961840e-001 1.1436452e+000 1.3674443e-001 + -1.2432090e+000 5.4237284e-002 -1.1068035e-001 + 4.9992491e-001 -1.9584176e-002 -4.7518866e-001 + 2.4916099e-001 -5.9178455e-002 -3.3844048e-001 + -1.6302071e-001 -1.1344681e+000 -3.7906919e-001 + 1.4448871e-001 1.0862796e+000 3.5873693e-001 + -3.1759887e-001 -5.9326826e-001 -1.0204091e+000 + 8.5887869e-001 5.9805720e-001 -2.7900995e-002 + -9.8889085e-002 -3.4315011e-001 3.0963364e-001 + 7.0593790e-002 1.1726295e+000 2.5979942e-001 + -5.9730872e-001 -5.7984866e-001 -7.9806097e-001 + 7.7447155e-002 -1.1465846e-001 -1.7792238e-001 + 5.7780401e-001 3.5449163e-001 -2.2802751e-001 + -1.2811559e+000 2.6342614e-001 3.4882487e-001 + 2.1041625e-001 1.1863021e+000 -7.9888804e-002 + -1.6087050e-001 -4.0019313e-001 5.2009479e-001 + -2.6595911e-001 -5.8631644e-001 5.0251479e-001 + 7.2019664e-001 8.6080199e-001 4.3666269e-001 + -6.9144471e-001 -6.8320339e-001 -5.6488231e-001 + 1.2510536e-001 1.0761321e+000 4.3269506e-001 + -2.1133872e-001 -1.1400719e+000 -1.1452255e-001 + 5.7867640e-001 1.8941985e-001 -4.4137033e-001 + 4.5520759e-001 4.4285638e-003 -5.1948213e-001 + -1.2141647e+000 -2.0071929e-001 4.0998977e-001 + 2.3727438e-001 1.1607165e+000 -1.7679477e-001 + -7.2950656e-002 -2.8732844e-001 6.2612645e-002 + -3.0591753e-001 -9.6805540e-001 1.2332995e-001 + 7.8798016e-001 7.6778559e-001 5.4077494e-002 + -1.8179612e-001 -3.7962550e-001 7.1975813e-001 + 1.0120376e-001 1.2096586e+000 1.0039261e-001 + -9.2926885e-001 -2.1992339e-001 -7.7596446e-001 + 2.2986298e-001 1.9058737e-002 -4.3341642e-001 + 7.3156907e-001 5.4254338e-001 -1.4611946e-001 + -2.7652130e-001 -8.6669383e-001 -7.6770965e-001 + 3.8502939e-002 1.1368495e+000 3.3237013e-001 + -4.2684635e-001 -4.7886002e-001 -1.0453755e+000 + 5.9082066e-001 3.1499190e-001 -3.6830832e-001 + -4.2231660e-002 -1.6875995e-002 -1.4846978e-001 + -1.9703586e-001 -3.3255390e-001 7.1306251e-001 + -7.8080617e-002 1.1827778e+000 2.1261274e-002 + -1.1493660e+000 8.5719216e-001 1.1502028e+000 + 4.5965367e-001 9.5776704e-001 5.2464857e-001 + -3.2215140e-001 -6.7205453e-001 3.5562428e-001 + 5.2387642e-001 1.5832015e-001 -5.0365205e-001 + -1.0310241e+000 -3.2834044e-001 -5.2174911e-001 + -1.7336409e-004 1.1911539e+000 2.3083624e-001 + -2.3305849e-001 -1.1358959e+000 -2.0241623e-001 + 7.9667579e-001 5.6942842e-001 -1.7279990e-001 + -1.6948103e-001 -1.8129260e-001 9.9553301e-002 + -1.4073692e-002 1.1895977e+000 -9.1735753e-002 + -1.1307638e+000 -9.2619799e-002 9.2507534e-001 + -2.7149639e-001 -3.0088729e-001 4.2420112e-001 + 4.0404965e-001 7.1542900e-002 -5.5325563e-001 + 7.5058167e-001 8.9590575e-001 2.2075439e-001 + -4.4514720e-001 -5.6574458e-001 -1.0201613e+000 + -2.7859663e-001 -4.3969850e-001 6.1727044e-001 + 1.1630343e-001 1.2234962e+000 3.8521919e-002 + -6.6937627e-001 -5.6555070e-001 -7.6429270e-001 + 6.0798796e-001 4.9039672e-001 -3.0093760e-001 + 8.4856600e-002 7.4486724e-002 -3.9535055e-001 + -2.9554570e-001 -1.9298139e-001 2.2019578e-001 + 9.5836419e-002 1.0481319e+000 4.8689889e-001 + -1.1192201e+000 8.4697454e-002 -4.7790342e-001 + 1.1195394e-001 1.1855003e+000 -1.9041363e-001 + -3.3344491e-001 -1.0944242e+000 -5.0544499e-001 + 4.4531826e-001 1.6878602e-001 -5.3704005e-001 + -3.5975713e-001 -7.5527900e-001 2.2030268e-001 + 8.0465497e-001 7.4405889e-001 -7.7412972e-002 + -1.3782487e+000 5.4366072e-001 -1.7627133e-001 + 2.6958701e-002 1.2126071e+000 -3.1567885e-002 + -2.6016036e-001 -3.2301756e-001 6.8756322e-001 + -1.1399458e-001 5.4588222e-002 -2.4898374e-001 + 5.0085013e-001 3.9718362e-001 -4.3756788e-001 + -7.6670361e-001 -6.6807834e-001 -5.6977937e-001 + 8.6034464e-003 1.2020616e+000 1.4488796e-001 + -3.8013518e-001 -7.9953182e-001 -8.2263242e-001 + 3.4198118e-001 9.7840464e-001 6.0038965e-001 + -3.2526724e-002 1.4382287e-001 -3.7675614e-001 + -1.1968159e+000 -1.7303508e-001 5.0577041e-001 + 6.8994786e-001 6.0632584e-001 -2.4949565e-001 + -3.7223857e-001 -5.4156150e-001 4.4090330e-001 + -1.2528995e-001 1.2008174e+000 -2.5139263e-002 + -2.9725836e-001 -1.1142741e+000 -1.3643044e-001 + 3.9469020e-001 1.7852873e-001 -5.7832272e-001 + -2.9466120e-001 -2.9708833e-001 6.3859137e-001 + 2.4827955e-002 1.0878739e+000 4.1610480e-001 + -8.7324135e-001 2.7004915e-001 1.8612975e+000 + -2.8139373e-001 -1.0902836e-001 7.6627497e-002 + -2.1345423e-001 1.1866150e+000 -4.1327428e-002 + -4.7588993e-001 -4.6362715e-001 -1.0631595e+000 + 3.1193383e-001 1.3951191e-001 -6.0410510e-001 + 7.3250007e-001 8.6431277e-001 -5.2717564e-002 + -8.3568165e-001 -2.7571350e-001 -8.8177519e-001 + -2.4799379e-001 -9.5178676e-003 -1.2454931e-001 + -1.3198748e-001 1.2221217e+000 3.8831625e-002 + -3.7375929e-001 -1.0402427e+000 -2.9599582e-003 + -3.5211144e-001 -4.1092360e-001 5.6168276e-001 + 6.3222151e-001 6.2213666e-001 -3.0848813e-001 + 4.3623311e-001 3.3025901e-001 -5.4173344e-001 + -1.2150115e+000 1.8654503e-002 5.0647027e-001 + 2.1967893e-001 1.2162910e+000 -1.2218730e-001 + -3.7712358e-001 -2.4186813e-001 5.3943967e-001 + -4.1103569e-001 -6.6133219e-001 -9.4987796e-001 + -3.2245556e-002 1.1142778e+000 3.8610226e-001 + 7.6463137e-002 1.7026322e-001 -5.4880425e-001 + -7.8916075e-001 -6.0287518e-001 -6.3608561e-001 + -2.2790411e-001 1.1813259e+000 -1.2428902e-001 + -3.6302162e-001 -7.7091446e-001 1.1694951e-001 + 5.4836108e-001 6.0505263e-001 -3.7182337e-001 + -2.3319664e-001 1.3749414e-001 -2.2803409e-001 + -1.1367547e+000 -2.4431661e-001 -2.3398633e-001 + 3.5031622e-001 8.8278449e-001 6.7047300e-001 + -3.9333732e-001 -3.5758616e-001 5.4970775e-001 + 5.6035290e-002 1.2330164e+000 -1.6312599e-001 + -1.0740026e+000 -1.2770392e-001 9.1795899e-001 + 2.9070257e-001 2.2304275e-001 -6.1703207e-001 + -2.6902341e-001 2.4846243e-002 -2.0656343e-002 + -3.8078027e-001 -1.1508586e+000 -4.0054906e-001 + -9.0923270e-002 1.2197547e+000 1.4678556e-001 + 4.4115612e-001 5.9770955e-001 -4.0801420e-001 + -6.0289433e-001 -4.9636872e-001 -9.3371426e-001 + 5.5510918e-001 8.0269701e-001 5.3377786e-001 + -3.5022137e-001 -1.0817819e-001 3.7271752e-001 + -4.1921399e-001 -8.5179790e-001 -7.7232806e-001 + -1.7180637e-001 1.1881525e+000 -1.7580706e-001 + -3.7956970e-001 -3.9835862e-002 1.7274883e-001 + 3.2721250e-001 3.7346330e-001 -5.8865596e-001 + -1.2532149e+000 4.5102250e-001 -4.7572043e-001 + -1.5811719e-002 1.2443101e+000 5.1459375e-002 + -4.1887962e-001 -6.1888053e-001 2.3195046e-001 + -9.1129479e-002 2.1434075e-001 -4.8197552e-001 + 7.7330617e-001 8.0226842e-001 -2.1385469e-001 + -9.5695620e-001 -2.1642266e-001 -6.9172429e-001 + -1.5078946e-001 1.2133680e+000 -1.3104913e-001 + -4.4019926e-001 -8.1487875e-001 1.0637801e-001 + 2.1343683e-001 1.9569288e-001 -6.5617650e-001 + -6.1910931e-001 -4.4509555e-001 -9.5729741e-001 + -2.3871491e-002 1.2252579e+000 -1.9399555e-001 + -3.2859526e-001 -2.5898814e-001 6.8419264e-001 + 4.0055170e-001 5.5164032e-001 -4.9620234e-001 + -9.2722096e-001 -3.0623172e-001 -6.2785960e-001 + 3.6054216e-002 1.0617767e+000 5.5844792e-001 + -3.5985821e-001 4.8991664e-002 5.1161908e-003 + -1.3586240e+000 5.6215036e-001 6.7291527e-001 + 3.5090654e-001 1.1821025e+000 -2.3217549e-001 + -4.3184613e-001 -8.7559111e-002 3.2464999e-001 + 7.8367310e-001 6.9106108e-001 -3.1825962e-001 + -3.8076594e-001 -1.1140133e+000 -1.0666570e-001 + -3.9522001e-001 5.5924291e-002 -1.1194310e-001 + -1.1303749e-001 1.2032355e+000 -2.9499259e-001 + -5.6601081e-001 -4.3979011e-001 -1.0537373e+000 + 3.8458513e-001 3.1310541e-001 -6.6357512e-001 + -3.5050396e-002 2.6400012e-001 -5.8698622e-001 + -1.1390185e+000 1.3647806e-001 -3.9626939e-001 + -5.6974198e-002 1.2538710e+000 -1.3996955e-001 + -4.5690387e-001 -3.8005739e-001 5.3599682e-001 + 6.3393539e-001 6.9416228e-001 -4.1749785e-001 + -4.6883859e-001 -9.9269975e-001 -5.7786518e-001 + 9.6849785e-002 1.2147764e+000 -2.4476938e-001 + -4.9612923e-001 -5.9779880e-001 2.9956775e-001 + 1.8661345e-001 3.3395002e-001 -6.6437478e-001 + -1.2933383e+000 3.7917505e-001 -3.1790341e-001 + 1.6575339e-001 9.5084109e-001 7.0494519e-001 + -4.5112609e-001 -1.5189905e-001 4.6321963e-001 + 2.1820118e-001 1.2132975e+000 -2.8217860e-001 + -7.0362894e-001 -5.0008242e-001 -8.3806686e-001 + -2.1226568e-001 2.3963812e-001 -4.6190595e-001 + 8.3504218e-001 7.6082026e-001 -2.9475120e-001 + -8.7880318e-001 -5.4262571e-001 -6.3645138e-001 + -1.7742923e-001 1.2087311e+000 -2.6795650e-001 + -5.0064453e-001 -1.7627253e-001 3.9825142e-001 + -1.2166539e+000 1.3896224e-002 -8.8350407e-003 + 2.8850940e-001 5.4814491e-001 -5.6815875e-001 + -3.9522298e-001 -3.3247735e-001 6.9057175e-001 + -1.6070786e-001 1.2030013e+000 2.1441994e-001 + -4.3928509e-001 -1.0725212e+000 -6.6749947e-002 + 1.7762922e-001 2.7632828e-001 -7.0548312e-001 + -1.4411774e-001 1.2350542e+000 -2.4236651e-001 + -4.5109520e-001 -7.3831670e-001 -9.1822814e-001 + -2.8829615e-001 2.3695250e-001 -4.2925396e-001 + 5.0935515e-001 6.7072118e-001 -5.1330693e-001 + -1.2131904e+000 2.0253542e-001 7.1091275e-001 + 2.1058620e-001 1.2266833e+000 -3.2577926e-001 + -5.1487940e-001 -4.2175186e-001 4.3783460e-001 + -4.9349133e-001 3.5429338e-002 -1.4243760e-002 + 3.1483466e-001 7.5575391e-001 8.3691780e-001 + -5.8776101e-001 -3.9175424e-001 -1.0609998e+000 + 5.0413142e-002 1.2338134e+000 -3.1563436e-001 + -4.8555814e-001 -7.9037922e-001 6.6946400e-002 + 1.0892596e-002 3.0021788e-001 -6.9076222e-001 + 2.1244313e-001 5.4785394e-001 -6.0863592e-001 + -1.0744123e+000 -3.6529080e-001 -3.2351415e-001 + -1.9582556e-001 1.1829979e+000 2.7992522e-001 + -4.9762485e-001 -1.7494976e-001 5.0255680e-001 + -5.1752823e-001 -4.0602511e-001 -1.1175002e+000 + -3.8522727e-002 1.2034012e+000 -4.0891875e-001 + -2.4050271e-001 2.9327796e-001 -5.3488438e-001 + -3.2488223e-001 -4.7219173e-001 1.9736740e+000 + 7.9805877e-001 7.7565154e-001 -3.7304139e-001 + -4.5265789e-001 -2.3938154e-001 6.4073517e-001 + -4.4896481e-001 -1.1211742e+000 -3.3897294e-001 + 4.1669997e-002 1.2226542e+000 -3.9366884e-001 + 1.4207189e-001 4.6045705e-001 -6.8706793e-001 + -8.7397418e-001 -3.7287878e-001 -6.8039672e-001 + 2.5141516e-001 8.0654769e-001 8.6382150e-001 + 8.5357015e-002 3.5678728e-001 -7.3217895e-001 + -5.4119319e-001 -5.3839304e-001 2.1930350e-001 + 1.3404309e-001 1.2339755e+000 -3.9100858e-001 + -1.3196195e+000 3.9930563e-001 1.3338226e-001 + -4.2257422e-001 1.5476092e-001 -3.1449080e-001 + -2.2591179e-001 1.2432255e+000 4.3451729e-002 + -4.4261603e-001 -9.3805868e-001 -7.4039959e-001 + -1.4182169e-001 3.3858725e-001 -6.3838559e-001 + 5.9733258e-001 7.4290027e-001 -5.0752549e-001 + -7.0113065e-001 -4.4056646e-001 -8.8866064e-001 + -1.5397831e-001 1.2209871e+000 -3.9785060e-001 + -4.1710516e-001 -2.3318858e-001 6.8660574e-001 + 3.8928848e-001 6.5494098e-001 -6.0537231e-001 + -4.5711540e-001 -7.7312419e-001 -6.3465731e-002 + -1.0390557e+000 -8.9859097e-002 -4.2325308e-001 + 2.0239311e-001 1.2267998e+000 -4.0798274e-001 + -5.1942198e-001 2.4592313e-002 1.0446148e-001 + -4.0139371e-001 1.9545499e-001 -3.7059365e-001 + -1.1924401e-001 1.1376253e+000 5.0636424e-001 + -7.5692918e-001 -4.4494997e-001 -8.4090876e-001 + 2.2263683e-001 4.1413267e-001 -7.3507235e-001 + 3.9328292e-001 -6.5696555e-001 -2.2034191e-001 + -9.0739563e-002 1.2266721e+000 -4.2942919e-001 + -1.2775463e+000 3.2821133e-001 1.5120101e-003 + 7.5684357e-001 8.2811158e-001 -4.0343426e-001 + -9.5366060e-002 3.9063476e-001 -6.4408196e-001 + 9.8102240e-002 -8.5369910e-001 -5.8605852e-001 + 7.7001006e-003 1.2590547e+000 -3.7205339e-001 + -6.2135844e-001 -8.4668224e-001 -7.1632454e-001 + 2.0570628e-001 6.3154036e-001 -5.9176780e-001 + -5.3057509e-001 -2.1271144e-001 6.1483543e-002 + -1.4531741e-001 1.1827021e+000 3.8514280e-001 + -3.3104688e-001 3.2362072e-001 -3.3888035e-001 + -1.1402332e+000 1.4875702e-001 -1.6589129e-001
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/java3d/args Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,38 @@ +#properties +#Tue Mar 26 17:20:08 GMT 2019 +mouse.y.trace.map.minimum=-0.0 +ft.power.plotter.window.bounds=(323,142,512,118) +mouse.x.trace.map.symmetric=false +x.editor.plotter.window.bounds=(490,234,231,110) +scaler.scale.meter.map.maximum=6370.513 +exposed.bounds=(48,23,286,653) +mouse.exposed.bounds=(448,59,223,119) +ft.power.trace.map.minimum=0.001 +mouse.y.trace.map.maximum=400.0 +waveform.plotter.window.bounds=(4,22,1020,118) +mouse.y.trace.window.bounds=(694,148,264,86) +waveform.scaler.laplace.e.plotter.window.bounds=(4,22,1024,118) +playlist.files='("/Users/samer/Music/Artists/Tunng/comments on the inner chorus/01-Hanged.mp3" "/Users/samer/Music/Artists/Tunng/comments on the inner chorus/02-Woodcat.mp3" "/Users/samer/Music/Artists/Tunng/comments on the inner chorus/03-The Wind Up Bird.mp3" "/Users/samer/Music/Artists/Tunng/comments on the inner chorus/04-Red And Green.mp3" "/Users/samer/Music/Artists/Tunng/comments on the inner chorus/05-Stories.mp3" "/Users/samer/Music/Artists/Tunng/comments on the inner chorus/06-Jenny Again.mp3" "/Users/samer/Music/Artists/Tunng/comments on the inner chorus/07-Man In The Box.mp3" "/Users/samer/Music/Artists/Tunng/comments on the inner chorus/08-Jay Down.mp3" "/Users/samer/Music/Artists/Tunng/comments on the inner chorus/09-It's just because we've got hair.mp3" "/Users/samer/Music/Artists/Tunng/comments on the inner chorus/10-Sweet William.mp3" "/Users/samer/Music/Artists/Tunng/comments on the inner chorus/11-Engine Room.mp3") +scaler.scale.trace.window.bounds=(336,430,256,86) +trace.bounds=(493,106,264,86) +scaler.E=2895.934 +ft.power.trace.map.maximum=60.0 +ft.power.trace.window.bounds=(405,22,256,534) +mouse.x.trace.map.minimum=0.0 +waveform.scaler.scale=0.023 +scaler.output.plotter.window.bounds=(12,589,1020,118) +mouse.x.trace.map.maximum=400.0 +mouse.y.trace.map.symmetric=false +playlist.current=/Users/samer/Music/Onset_paper/UPFsamples/audio/RadioTarifa3.wav +mouse.x.trace.window.bounds=(693,61,264,86) +ft.power.image.window.bounds=(4,22,513,37) +x1.plotter.window.bounds=(440,22,231,118) +x1.editor.plotter.window.bounds=(419,160,289,121) +ft.mag.plotter.window.bounds=(502,338,256,118) +waveform.scaler.scaleRate=0.01 +scaler.scale.meter.map.symmetric=false +scaler.E.trace.window.bounds=(304,24,338,111) +mouse.canvas.bounds=(4,23,430,397) +scaler.scaleRate=0.004 +x1.image.window.bounds=(290,279,197,71) +scaler.scale=2974.602
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/java3d/hello1.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,38 @@ +import samer.core.*; +import javax.media.j3d.*; +import javax.vecmath.*; +import com.sun.j3d.utils.universe.*; +import com.sun.j3d.utils.geometry.ColorCube; +import java.awt.*; + +public class hello1 +{ + public static void main(String[] args) + { + new samer.core.shells.SwingShell(); + + BranchGroup root=new BranchGroup(); + Transform3D x1=new Transform3D(); + Transform3D x2=new Transform3D(); + x1.rotZ(Math.PI/8); + x2.set(new Vector3d(0.4,0,0)); + x2.mul(x1); + + Group tg = new TransformGroup(x2); + tg.addChild(new ColorCube(0.5)); + root.addChild(tg); + root.compile(); + + Canvas3D canvas=new Canvas3D(null); + SimpleUniverse U = new SimpleUniverse(canvas); + U.getViewingPlatform().setNominalViewingTransform(); + U.addBranchGraph(root); + + Shell.Window win; + win=Shell.getWindow("hello"); + win.addWindowListener(Shell.exitListener()); + win.container().setLayout(new BorderLayout()); + win.container().add(canvas); + win.expose(); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/java3d/hello10.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,85 @@ +/* + hello10.java + + Construct universe without using SimpleUniverse + utility class - this puts together the view + group explicitly. + + Now has dynamically creatable views. + Have to construct views on BranchGroups so they + can be added while universe is live? + + picking + */ + +import samer.core.*; +import java.awt.event.*; +import javax.media.j3d.*; +import javax.vecmath.*; + +public class hello10 extends util implements Agent +{ + // create universe + LocalUniverse U=new LocalUniverse(); + BranchGroup root=new BranchGroup(); + + public static void main(String[] arse) { init(); new hello10(); } + + public hello10() + { + Viewer v=new Viewer("view"); + + // v.lookFrom(new Point3d(0,0,8),new Vector3d(0,1,0)); + + // create scene + root.addChild(createSceneGraph()); + root.addChild(v); + root.setCapability(Group.ALLOW_CHILDREN_EXTEND); + root.setCapability(Group.ALLOW_CHILDREN_WRITE); + +/* + tg.setCapability(TransformGroup.ENABLE_PICK_REPORTING); + PickRotateBehavior pr=new PickRotateBehavior(objroot, canvas, bounds); + objroot.addChild(pickRotate); + */ + + root.compile(); + + U.addGroup(root); + + Shell.registerAgent(this); + Shell.exposeCommands(this); + } + + public void getCommands(Agent.Registry r) { + r.add("view"); + r.setTarget(null); r.add("start").add("stop"); + } + + public void execute(String cmd, Environment env) throws Exception + { + if (cmd.equals("view")) { + root.addChild(new Viewer(X.string(env.datum("name"),"view"))); + } + } + + private static TransformGroup createSceneGraph() + { + Transform3D r=new Transform3D(); + //r.rotX(Math.PI/2); + r.setScale(0.5); + TransformGroup t2=new TransformGroup(r); + t2.addChild( yoyoGroup( + yoyoGeometryInfo(12).getGeometryArray(), + wireframe2(), + pointy())); + + TransformGroup tg = new TransformGroup(); + // addRotator(tg); + mouseRotate(tg); + mouseTranslate(tg); + mouseZoom(tg); + tg.addChild(t2); + return tg; + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/java3d/hello11.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,105 @@ +/* + hello6.java + + Construct universe without using SimpleUniverse + utility class - this puts together the view + group explicitly. + + Now has dynamically creatable views. + Have to construct views on BranchGroups so they + can be added while universe is live? + + immediate mode + */ + +import samer.core.*; +import samer.core.types.*; +import samer.tools.*; + +import java.awt.event.*; +import javax.media.j3d.*; +import javax.vecmath.*; + +public class hello11 extends util implements Agent +{ + // create universe + LocalUniverse U=new LocalUniverse(); + BranchGroup root=new BranchGroup(); + TaskThread tasks=new TaskThread(); + Geometry geom; + Appearance app; + + public static void main(String[] arse) { + init(); new hello11(); + Shell.interpret("expose"); + } + + public hello11() + { + // create scene + geom = yoyoGeometryInfo(128).getGeometryArray(); + app = pointy2(); + + root.addChild(new TransformGroup()); + root.addChild(new view("view")); + root.setCapability(Group.ALLOW_CHILDREN_EXTEND); + root.setCapability(Group.ALLOW_CHILDREN_WRITE); + root.compile(); + + U.addGroup(root); + + Shell.registerAgent(this); + Shell.exposeCommands(this); + } + + public void getCommands(Agent.Registry r) { r.add("view"); } + + public void execute(String cmd, Environment env) throws Exception + { + if (cmd.equals("view")) { + root.addChild(new view(X.string(env.datum("name"),"view"))); + } + } + + + private class view extends Viewer implements Task + { + GraphicsContext3D gc; + float angle=0; + Transform3D mt=new Transform3D(); + VDouble speed; + + public view(String name) + { + super( name); // great mate + // lookFrom(new Point3d(0,0,8),new Vector3d(0,1,0)); + canvas.stopRenderer(); + tasks.addTask(this); + + Shell.push(node); + speed=new VDouble("speed",0.1); + Shell.pop(); + } + + public void run() + { + mt.rotY(angle+=speed.value); + gc.clear(); + gc.setModelTransform(mt); + gc.draw(geom); + canvas.swap(); + } + + public void dispose() { + tasks.removeTask(this); + super.dispose(); + } + + public void stopping() { Shell.print("view stopping"); } + public void starting() { + Shell.print("view starting"); + if (gc==null) gc = canvas.getGraphicsContext3D(); + gc.setAppearance(app); + } + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/java3d/hello12.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,90 @@ +/* + hello6.java + + Construct universe without using SimpleUniverse + utility class - this puts together the view + group explicitly. + + Now has dynamically creatable views. + Have to construct views on BranchGroups so they + can be added while universe is live? + */ + +import samer.core.*; +import samer.maths.*; +import java.io.*; +import java.awt.event.*; +import javax.media.j3d.*; +import javax.vecmath.*; + +public class hello12 extends util implements Agent +{ + // create universe + LocalUniverse U=new LocalUniverse(); + BranchGroup root=new BranchGroup(); + Viewer V; + + public static void main(String[] arse) throws Exception + { + init(); + + Matrix P=new Matrix("points",512,3); + VVector A=new VVector("s",512); + + P.assign( + Jama.Matrix.read( + new BufferedReader( + new FileReader(Shell.getString("filename","")) + ) + ) + ); + + new hello12(P,A); + Shell.interpret("expose"); + } + + public hello12(String vec) throws Exception + { + this( + (Matrix)Shell.get("PointsMatrix"), + (VVector)Shell.get(vec) + ); + } + + public hello12(Matrix P, VVector A) throws Exception + { + Shell.print("creating hello12"); + + // create scene + addBackground(root,new Background(new Color3f(0.26f,0.23f,0.35f))); + root.addChild( mouseRotaterGroup( + new Shape3D(new MatrixPointArray(P,A), pointy3()) + )); + + root.addChild(new Viewer("particles")); + root.addChild(new FPS(200)); + root.setCapability(Group.ALLOW_CHILDREN_EXTEND); + root.setCapability(Group.ALLOW_CHILDREN_WRITE); + root.compile(); + + U.addGroup(root); + + Shell.registerAgent(this); + Shell.exposeCommands(this); + } + + public void getCommands(Agent.Registry r) { } + public void execute(String cmd, Environment env) throws Exception {} + + private static Group mouseRotaterGroup(javax.media.j3d.Node n) + { + TransformGroup tg = new TransformGroup(); + mouseRotate(tg); + mouseTranslate(tg); + mouseZoom(tg); + tg.addChild(n); + return tg; + } + + +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/java3d/hello2.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,49 @@ +import samer.core.*; +import javax.media.j3d.*; +import javax.vecmath.*; +import com.sun.j3d.utils.universe.*; +import com.sun.j3d.utils.geometry.ColorCube; + +public class hello2 +{ + public static void main(String[] args) + { + new samer.core.shells.SwingShell(); + run(); + } + + + public static void run() + { + BranchGroup root=new BranchGroup(); + Transform3D xform=new Transform3D(); + Transform3D axis=new Transform3D(); + + axis.set(new Vector3d(0.5,0,0)); + + TransformGroup tg = new TransformGroup(xform); + + Alpha alpha = new Alpha(-1, 4000); + Behavior rotator = new RotationInterpolator(alpha, tg, axis, 0f, (float)(2*Math.PI)); + + rotator.setSchedulingBounds(new BoundingSphere()); + tg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); + tg.addChild(rotator); + tg.addChild(new ColorCube(0.5)); + + root.addChild(tg); + root.compile(); + + Canvas3D canvas=new Canvas3D(null); + SimpleUniverse U = new SimpleUniverse(canvas); + U.getViewingPlatform().setNominalViewingTransform(); + U.addBranchGraph(root); + + Shell.Window win; + win=Shell.getWindow("hello"); + win.addWindowListener(Shell.exitListener()); + win.container().setLayout(new java.awt.BorderLayout()); + win.container().add(canvas); + win.expose(); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/java3d/hello3.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,64 @@ +import samer.core.*; +import javax.media.j3d.*; +import javax.vecmath.*; +import com.sun.j3d.utils.universe.*; +import com.sun.j3d.utils.behaviors.keyboard.*; + +public class hello3 extends util +{ + BranchGroup root=new BranchGroup(); + Bounds bounds=new BoundingSphere(); + Canvas3D canvas=new Canvas3D(null); + + public static void main(String[] args) + { + new samer.core.shells.AppShell(args); + hello3 app=new hello3(); + + Shell.Window win; + win=Shell.getWindow("hello"); + win.addWindowListener(Shell.exitListener()); + win.container().setLayout(new java.awt.BorderLayout()); + win.container().add(app.canvas); + win.expose(); + } + + public hello3() + { + SimpleUniverse U = new SimpleUniverse(canvas); + TransformGroup tg = new TransformGroup(); + + addRotator(tg); + addBackground(root,new Background(0.1f,0.2f,0.15f)); + tg.addChild(createObject()); + root.addChild(tg); + + KeyNavigatorBehavior keyNavBeh = new KeyNavigatorBehavior( + U.getViewingPlatform().getViewPlatformTransform()); + keyNavBeh.setSchedulingBounds(bounds); + root.addChild(keyNavBeh); + root.compile(); + + U.getViewingPlatform().setNominalViewingTransform(); + U.addBranchGraph(root); + } + + public static Group createObject() + { + Shape3D faces=new Shape3D(); + Shape3D edges=new Shape3D(); + Geometry geom=yoyoGeometryInfo(20).getGeometryArray(); + + faces.setGeometry(geom); + edges.setGeometry(geom); + + faces.setAppearance(translucent()); + edges.setAppearance(pointy()); + + BranchGroup bg = new BranchGroup(); + bg.addChild(faces); + bg.addChild(edges); + + return bg; + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/java3d/hello4.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,57 @@ +import samer.core.*; +import javax.media.j3d.*; +import javax.vecmath.*; +import com.sun.j3d.utils.universe.*; +import com.sun.j3d.utils.behaviors.keyboard.*; + +public class hello4 extends util implements Agent +{ + BranchGroup root=new BranchGroup(); + Canvas3D canvas=new Canvas3D(null); + + public static void main(String[] args) + { + init(); + expose((new hello4()).canvas,"hello"); + } + + public hello4() + { + canvas=new Canvas3D(getGraphicsConfiguration()); + + Shell.print("stereo? "+ canvas.getStereoAvailable()); + Shell.print("antialiasing? "+ canvas.getSceneAntialiasingAvailable()); + // canvas.stopRenderer(); + + SimpleUniverse U = new SimpleUniverse(canvas); + TransformGroup tg = new TransformGroup(); + + addRotator(tg); + addKeyNavigator(tg,U.getViewingPlatform().getViewPlatformTransform()); + addBackground(root,new Background(0.1f,0.2f,0.15f)); + + Transform3D shrink=new Transform3D(); + shrink.setScale(0.6); + TransformGroup sg=new TransformGroup(shrink); + tg.addChild(sg); + sg.addChild(yoyoGroup()); + root.addChild(tg); + + root.compile(); + + U.getViewingPlatform().setNominalViewingTransform(); + U.addBranchGraph(root); + + Shell.registerAgent(this); + Shell.exposeCommands(this); + + //setViewPolicy(canvas.getView()); + } + + public void getCommands(Agent.Registry r) { r.add("start").add("stop"); } + public void execute(String cmd, Environment env) { + if (cmd.equals("start")) { canvas.startRenderer(); } + else if (cmd.equals("stop")) { canvas.stopRenderer(); } + } + +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/java3d/hello5.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,81 @@ +/* + hello5.java + + Construct universe without using SimpleUniverse + utility class - this puts together the view + group explicitly. + + */ + +import samer.core.*; +import javax.media.j3d.*; +import javax.vecmath.*; + +public class hello5 extends util implements Agent +{ + Canvas3D canvas; + + public static void main(String[] args) { init(); new hello5(); } + + public hello5() + { + // create universe + LocalUniverse U=new LocalUniverse(); + BranchGroup root=new BranchGroup(); + + // create scene + root.addChild(createSceneGraph()); + // addBackground(root,new Background(0.1f,0.2f,0.15f)); + // addLights(root); + + // create view bits + canvas=new Canvas3D(getGraphicsConfiguration()); + + TransformGroup VT=new TransformGroup(); + ViewPlatform VP=new ViewPlatform(); + View V=new View(); + + { + Transform3D t=new Transform3D(); + t.set(new Vector3d(0.0,0.0,8.0)); + VT.setTransform(t); + } + + addKeyNavigator(VT,readwrite(VT)); + VT.addChild(VP); + V.addCanvas3D(canvas); + V.attachViewPlatform(VP); + V.setPhysicalBody(new PhysicalBody()); + V.setPhysicalEnvironment(new PhysicalEnvironment()); + + root.addChild(VT); + root.compile(); + + Shell.registerAgent(this); + Shell.exposeCommands(this); + + // setViewPolicy(canvas.getView()); + expose(canvas,"hello"); + U.addGroup(root); + } + + private static TransformGroup createSceneGraph() + { + Transform3D r=new Transform3D(); + r.rotX(Math.PI/2); + TransformGroup t2=new TransformGroup(r); + t2.addChild(yoyoGroup()); + + TransformGroup tg = new TransformGroup(); + addRotator(tg); + tg.addChild(t2); + return tg; + } + + public void getCommands(Agent.Registry r) { r.add("start").add("stop"); } + public void execute(String cmd, Environment env) { + if (cmd.equals("start")) { canvas.startRenderer(); } + else if (cmd.equals("stop")) { canvas.stopRenderer(); } + } + +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/java3d/hello6.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,69 @@ +/* + hello6.java + + Construct universe without using SimpleUniverse + utility class - this puts together the view + group explicitly. + + Now has dynamically creatable views. + Have to construct views on BranchGroups so they + can be added while universe is live? + */ + +import samer.core.*; +import java.awt.event.*; +import javax.media.j3d.*; +import javax.vecmath.*; + +public class hello6 extends util implements Agent +{ + // create universe + LocalUniverse U=new LocalUniverse(); + BranchGroup root=new BranchGroup(); + + public static void main(String[] arse) { init(); new hello6(); } + + public hello6() + { + // create scene + root.addChild(createSceneGraph()); + // addBackground(root,new Background(0.1f,0.2f,0.15f)); + // addLights(root); + root.addChild(new FPS(200)); + + root.addChild(new Viewer("view")); + root.setCapability(Group.ALLOW_CHILDREN_EXTEND); + root.setCapability(Group.ALLOW_CHILDREN_WRITE); + root.compile(); + + U.addGroup(root); + + Shell.registerAgent(this); + Shell.exposeCommands(this); + } + + public void getCommands(Agent.Registry r) { + r.add("view"); + r.setTarget(null); r.add("start").add("stop"); + } + + public void execute(String cmd, Environment env) throws Exception + { + if (cmd.equals("view")) { + root.addChild(new Viewer(X.string(env.datum("name"),"view"))); + } + } + + private static TransformGroup createSceneGraph() + { + Transform3D r=new Transform3D(); + r.rotX(Math.PI/2); + TransformGroup t2=new TransformGroup(r); + t2.addChild(yoyoGroup()); + + TransformGroup tg = new TransformGroup(); + addRotator(tg); + tg.addChild(t2); + return tg; + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/java3d/hello7.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,148 @@ +/* + hello7.java + + Construct universe without using SimpleUniverse + utility class - this puts together the view + group explicitly. + + Now has dynamically creatable views all on the same + view platform. Left and right eye views available! + */ + +import samer.core.*; +import java.awt.event.*; +import javax.media.j3d.*; +import javax.vecmath.*; + +import samer.core.Node; + +public class hello7 extends util implements Agent +{ + // create universe + LocalUniverse U=new LocalUniverse(); + BranchGroup root=new BranchGroup(); + ViewPlatform VP=new ViewPlatform(); + + public static void main(String[] arse) { init(); new hello7(); } + + public hello7() + { + // create scene + root.addChild(createSceneGraph()); + // addBackground(root,new Background(0.1f,0.2f,0.15f)); + // addLights(root); + + { // view platform placement + TransformGroup VT=new TransformGroup(); + Transform3D t=new Transform3D(); + + t.lookAt(new Point3d(0,16,20), new Point3d(0,0,0),new Vector3d(0,1,0)); + t.invert(); + VT.setTransform(t); + + // !!! all key navigators seem to be slaved! + addKeyNavigator(VT,readwrite(VT)); + VT.addChild(VP); + root.addChild(VT); + } + // setCapability(ALLOW_DETACH); + // setCapability(ALLOW_CHILDREN_WRITE); + // compile(); + + + // add two Views on same platform + new view("left",VP); + new view("right",VP); + + // root.setCapability(Group.ALLOW_CHILDREN_EXTEND); + // root.setCapability(Group.ALLOW_CHILDREN_WRITE); + root.compile(); + + U.addGroup(root); + + Shell.registerAgent(this); + Shell.exposeCommands(this); + } + + public void getCommands(Agent.Registry r) { + r.add("view"); + r.setTarget(null); r.add("start").add("stop"); + } + + public void execute(String cmd, Environment env) throws Exception + { + if (cmd.equals("view")) { + new view(X.string(env.datum("name"),"view"),VP); + } + } + + private static TransformGroup createSceneGraph() + { + Transform3D r=new Transform3D(); + // r.rotX(Math.PI/2); + TransformGroup t2=new TransformGroup(r); + t2.addChild(yoyoGroup()); + + TransformGroup tg = new TransformGroup(); + addRotator(tg); + tg.addChild(t2); + return tg; + } + + public class view extends View implements Agent + { + Node node; + Canvas3D canvas; + Shell.Window win; + + public view(String name, ViewPlatform VP) + { + node = new Node(name); + Shell.push(node); + + // create view bits + canvas=new Canvas3D(getGraphicsConfiguration()); + //if (name.equals("left")) canvas.setMonoscopicViewPolicy(Canvas3D.LEFT_EYE); + //else if (name.equals("right")) canvas.setMonoscopicViewPolicy(Canvas3D.RIGHT_EYE); + + addCanvas3D(canvas); + setPhysicalBody(new PhysicalBody()); + setPhysicalEnvironment(new PhysicalEnvironment()); + setWindowEyepointPolicy(View.RELATIVE_TO_WINDOW); + //setWindowResizePolicy(View.VIRTUAL_WORLD); + setFrontClipDistance(Shell.getDouble("front",1)); + setBackClipDistance(Shell.getDouble("back",10)); + + if (name.equals("left")) setMonoscopicViewPolicy(LEFT_EYE_VIEW); + else if (name.equals("right")) setMonoscopicViewPolicy(RIGHT_EYE_VIEW); + + attachViewPlatform(VP); + + Shell.pop(); + + win=Shell.getWindow(name); + win.container().add(canvas); + win.expose(); + win.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { dispose(); } + }); + + Shell.registerAgent(this); + } + + public void dispose() + { + // stopView(); + Shell.deregisterAgent(this); + win.dispose(); + } + + protected void finalize() { Shell.trace("finalizing view "+this); } + + public void getCommands(Agent.Registry r) { r.add("start").add("stop"); } + public void execute(String cmd, Environment env) { + if (cmd.equals("start")) { startView(); } + else if (cmd.equals("stop")) { stopView(); } + } + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/java3d/hello8.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,149 @@ +/* + hello8.java + + Construct universe without using SimpleUniverse + utility class - this puts together the view + group explicitly. + + Stereo pairs using 2 views in one window + */ + +import samer.core.*; +import java.awt.event.*; +import java.awt.*; +import javax.media.j3d.*; +import javax.vecmath.*; + +public class hello8 extends util implements Agent +{ + // create universe + LocalUniverse U=new LocalUniverse(); + BranchGroup root=new BranchGroup(); + ViewPlatform VP=new ViewPlatform(); + + public static void main(String[] arse) { init(); new hello8(); } + + public hello8() + { + // create scene + root.addChild(createSceneGraph()); + // addBackground(root,new Background(0.1f,0.2f,0.15f)); + // addLights(root); + + { // view platform placement + TransformGroup VT=new TransformGroup(); + Transform3D t=new Transform3D(); + + t.lookAt(new Point3d(0,16,20), new Point3d(0,0,0),new Vector3d(0,1,0)); + t.invert(); + VT.setTransform(t); + + // !!! all key navigators seem to be slaved! + addKeyNavigator(VT,readwrite(VT)); + VT.addChild(VP); + root.addChild(VT); + } + // setCapability(ALLOW_DETACH); + // setCapability(ALLOW_CHILDREN_WRITE); + // compile(); + + + // add two Views on same platform + new stereoview(VP); + + // root.setCapability(Group.ALLOW_CHILDREN_EXTEND); + // root.setCapability(Group.ALLOW_CHILDREN_WRITE); + root.compile(); + + U.addGroup(root); + + Shell.registerAgent(this); + Shell.exposeCommands(this); + } + + public void getCommands(Agent.Registry r) { + r.add("view"); + r.setTarget(null); r.add("start").add("stop"); + } + + public void execute(String cmd, Environment env) throws Exception + { + if (cmd.equals("view")) new stereoview(VP); + } + + private static TransformGroup createSceneGraph() + { + Transform3D r=new Transform3D(); + // r.rotX(Math.PI/2); + // r.setScale(0.5); + TransformGroup t2=new TransformGroup(r); + t2.addChild(yoyoGroup()); + + TransformGroup tg = new TransformGroup(); + addRotator(tg); + tg.addChild(t2); + return tg; + } + + class stereoview implements Agent + { + eyeview left,right; + Shell.Window win; + + + public stereoview(ViewPlatform VP) + { + left=new eyeview(VP); + right=new eyeview(VP); + + left.setMonoscopicViewPolicy(View.LEFT_EYE_VIEW); + right.setMonoscopicViewPolicy(View.RIGHT_EYE_VIEW); + + win=Shell.getWindow("stereo"); + win.container().setLayout(new GridLayout(1,2)); + win.container().add(right.canvas); + win.container().add(left.canvas); + win.expose(); + win.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { dispose(); } + }); + + Shell.registerAgent(this); + } + + public void dispose() + { + Shell.deregisterAgent(this); + win.dispose(); + } + + protected void finalize() { Shell.trace("finalizing view "+this); } + + public void getCommands(Agent.Registry r) { r.add("start").add("stop"); } + public void execute(String cmd, Environment env) { + if (cmd.equals("start")) { left.startView(); right.startView(); } + else if (cmd.equals("stop")) { left.stopView(); right.stopView(); } + } + } + + public class eyeview extends View + { + Canvas3D canvas; + + public eyeview(ViewPlatform VP) + { + // create view bits + canvas=new Canvas3D(getGraphicsConfiguration()); + + addCanvas3D(canvas); + setPhysicalBody(new PhysicalBody()); + setPhysicalEnvironment(new PhysicalEnvironment()); + setWindowEyepointPolicy(View.RELATIVE_TO_WINDOW); + // setWindowResizePolicy(View.VIRTUAL_WORLD); + // setWindowMovementPolicy(View.VIRTUAL_WORLD); + setFrontClipDistance(0.1); + setBackClipDistance(20); + attachViewPlatform(VP); + } + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/java3d/hello9.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,97 @@ +/* + hello9.java + + Construct universe without using SimpleUniverse + utility class - this puts together the view + group explicitly. + + Shading + */ + +import samer.core.*; +import java.awt.event.*; +import java.awt.*; +import javax.media.j3d.*; +import javax.vecmath.*; +import com.sun.j3d.utils.geometry.*; + +public class hello9 extends util implements Agent +{ + // create universe + LocalUniverse U=new LocalUniverse(); + BranchGroup root=new BranchGroup(); + + public static void main(String[] arse) { init(); new hello9(); } + + public hello9() + { + // create scene + // root.addChild(pointLight(2,2,2,new Color3f(1f,1f,1f))); + root.addChild(color(pointLight(0,1,0),new Color3f(.2f,.1f,0.1f))); + root.addChild(directionalLight(6,-1,4)); + root.addChild(ambientLight()); + + root.addChild(createSceneGraph()); + root.addChild(new Viewer("view")); + root.setCapability(Group.ALLOW_CHILDREN_EXTEND); + root.setCapability(Group.ALLOW_CHILDREN_WRITE); + root.compile(); + + U.addGroup(root); + + Shell.registerAgent(this); + Shell.exposeCommands(this); + } + + private static Group createSceneGraph() + { + Transform3D r=new Transform3D(); + r.rotX(1.1); + r.setScale(0.5); + + TransformGroup t2=new TransformGroup(r); + GeometryInfo gi=yoyoGeometryInfo(32); + new NormalGenerator().generateNormals(gi); + + Geometry g=gi.getGeometryArray(); + Shape3D faces=new Shape3D(); + Shape3D edges=new Shape3D(); + faces.setGeometry(g); faces.setAppearance(material1()); + edges.setGeometry(g); edges.setAppearance(shadedwireframe()); + + TransformGroup tg = new TransformGroup(); + addRotator(tg); + t2.addChild(faces); + t2.addChild(edges); + tg.addChild(t2); + + return tg; + } + + public void getCommands(Agent.Registry r) { + r.add("view").add("axis"); + r.setTarget(null); + r.add("start").add("stop"); + } + + public void execute(String cmd, Environment env) throws Exception + { + if (cmd.equals("view")) { + root.addChild(new Viewer(X.string(env.datum("name"),"view"))); + } else if (cmd.equals("axis")) { + Transform3D t3d=new Transform3D(); + t3d.set(0.5); + + TransformGroup tg=new TransformGroup(t3d); + BranchGroup bg=new BranchGroup(); + Axis axis=new Axis(); + + axis.setAppearance(wireframe1()); + tg.addChild(axis); + bg.addChild(tg); + bg.compile(); + root.addChild(bg); + } + + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/java3d/util.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,387 @@ +import samer.core.*; +import java.awt.*; +import javax.media.j3d.*; +import javax.vecmath.*; +//import com.sun.j3d.utils.universe.*; +import com.sun.j3d.utils.behaviors.keyboard.*; +import com.sun.j3d.utils.behaviors.mouse.*; +import com.sun.j3d.utils.geometry.*; + +public class util +{ + private static Bounds bounds=new BoundingSphere(new Point3d(0,0,0),1000); + + public static void init() { new samer.core.shells.AppShell(); } + public static void expose(java.awt.Component c,String title) { + Shell.Window win; + win=Shell.getWindow(title); + win.addWindowListener(Shell.exitListener()); + win.container().setLayout(new BorderLayout()); + win.container().add(c); + win.expose(); + } + + public static void setBounds(Bounds b) { bounds=b; } + + public static TransformGroup mouseRotate(TransformGroup tg) + { + MouseRotate m = new MouseRotate(readwrite(tg)); + // mr.setTransformGroup(tg); + m.setSchedulingBounds(bounds); + tg.addChild(m); + return tg; + } + + public static TransformGroup mouseTranslate(TransformGroup tg) + { + MouseTranslate m = new MouseTranslate(readwrite(tg)); + // mr.setTransformGroup(tg); + m.setSchedulingBounds(bounds); + tg.addChild(m); + return tg; + } + + public static TransformGroup mouseZoom(TransformGroup tg) + { + MouseZoom m = new MouseZoom(readwrite(tg)); + // mr.setTransformGroup(tg); + m.setSchedulingBounds(bounds); + tg.addChild(m); + return tg; + } + + public static void addKeyNavigator(Group g, TransformGroup tg) + { + // readwrite(tg); + KeyNavigatorBehavior keynav = new KeyNavigatorBehavior(tg); + keynav.setSchedulingBounds(bounds); + g.addChild(keynav); + } + + public static void addKeyNavigator(Component c, Group g, TransformGroup tg) + { + // readwrite(tg); + KeyNavigatorBehavior keynav = new KeyNavigatorBehavior(c,tg); + keynav.setSchedulingBounds(bounds); + g.addChild(keynav); + } + + public static GeometryInfo yoyoGeometryInfo(int N) + { + GeometryInfo gi=new GeometryInfo(GeometryInfo.TRIANGLE_FAN_ARRAY); + + int totalN = 4*(N+1); + Point3f coords[] = new Point3f[totalN]; + int stripCounts[] = {N+1, N+1, N+1, N+1}; + float r = 0.5f; + float w = 0.5f; + int n; + double a; + float x, y; + + // set the central points for four triangle fan strips + coords[0*(N+1)] = new Point3f(0.0f, 0.0f, w); + coords[1*(N+1)] = new Point3f(0.0f, 0.0f, 0.0f); + coords[2*(N+1)] = new Point3f(0.0f, 0.0f, 0.0f); + coords[3*(N+1)] = new Point3f(0.0f, 0.0f, -w); + + for(a = 0,n = 0; n < N; a = 2.0*Math.PI/(N-1) * ++n){ + x = (float) (r * Math.cos(a)); + y = (float) (r * Math.sin(a)); + coords[0*(N+1)+n+1] = new Point3f(x, y, w); + coords[1*(N+1)+N-n] = new Point3f(x, y, w); + coords[2*(N+1)+n+1] = new Point3f(x, y, -w); + coords[3*(N+1)+N-n] = new Point3f(x, y, -w); + } + + gi.setCoordinates(coords); + gi.setStripCounts(stripCounts); + + return gi; + + } + + public static void addRotator(TransformGroup tg) + { + Alpha alpha = new Alpha(-1, 24000); + Behavior rotator = new RotationInterpolator(alpha, writable(tg)); + rotator.setSchedulingBounds(bounds); + tg.addChild(rotator); + } + + public static Light color(Light l, Color3f c) { l.setColor(c); return l; } + public static Light directionalLight(double x, double y, double z) + { + DirectionalLight l = new DirectionalLight(); + l.setDirection(-(float)x,-(float)y,-(float)z); + l.setInfluencingBounds(bounds); + return l; + } + + public static Light ambientLight() + { + AmbientLight a = new AmbientLight(); + a.setInfluencingBounds(bounds); + return a; + } + + public static Light pointLight(double x, double y, double z) + { + PointLight l = new PointLight(); + l.setInfluencingBounds(bounds); + l.setPosition((float)x,(float)y,(float)z); + l.setAttenuation(0,0,1); + return l; + } + + public static void addBackground(Group g, Background bg) + { // background + bg.setApplicationBounds(bounds); + g.addChild(bg); + } + + public static View setViewPolicy(View v) + { + v.setWindowEyepointPolicy(View.RELATIVE_TO_WINDOW); + //v.setWindowMovementPolicy(View.VIRTUAL_WORLD); + v.setWindowResizePolicy(View.VIRTUAL_WORLD); + //v.repaint(); + return v; + } + + public static ViewPlatform writable(ViewPlatform vp) { + vp.setCapability(ViewPlatform.ALLOW_POLICY_WRITE); return vp; + } + public static TransformGroup writable(TransformGroup tg) { + tg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); return tg; + } + public static TransformGroup readwrite(TransformGroup tg) { + tg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); + tg.setCapability(TransformGroup.ALLOW_TRANSFORM_READ); + return tg; + } + + public static Group yoyoGroup() { + return yoyoGroup(yoyoGeometryInfo(17).getGeometryArray()); + } + public static Group yoyoGroup(Geometry geom) { + return yoyoGroup(geom,wireframe2(),translucent()); + } + + public static Group yoyoGroup(Geometry geom, Appearance a1, Appearance a2) + { + Shape3D faces=new Shape3D(); + Shape3D edges=new Shape3D(); + + faces.setGeometry(geom); + faces.setAppearance(a1); + edges.setGeometry(geom); + edges.setAppearance(a2); + + BranchGroup bg = new BranchGroup(); + bg.addChild(faces); + bg.addChild(edges); + + return bg; + } + + public static GraphicsConfiguration getGraphicsConfiguration() + { +/* + return GraphicsEnvironment.getLocalGraphicsEnvironment(). + getDefaultScreenDevice().getDefaultConfiguration(); + +*/ + // Canvas default seems to be better than above + return null; + + } + + static Appearance material1() + { + Appearance a = new Appearance(); + PolygonAttributes polyAttrib = new PolygonAttributes(); + polyAttrib.setPolygonOffset(2f); + a.setPolygonAttributes(polyAttrib); + + Material material = new Material(); + material.setDiffuseColor(new Color3f(.6f, 0.5f, 0.7f)); + material.setSpecularColor(new Color3f(.6f, 0.5f, 0.7f)); + material.setShininess(48); + a.setMaterial(material); + return a; + } + + + static Appearance shadedwireframe() + { + Appearance a = new Appearance(); + PolygonAttributes polyAttrib = new PolygonAttributes(); + polyAttrib.setPolygonMode(PolygonAttributes.POLYGON_LINE); + a.setPolygonAttributes(polyAttrib); + a.setLineAttributes(new LineAttributes(2f,LineAttributes.PATTERN_SOLID,false)); + + Material material = new Material(); + material.setDiffuseColor(new Color3f(.7f, 0.6f, 0.9f)); + material.setShininess(128); + a.setMaterial(material); + return a; + } + + + static Appearance translucent() + { + Appearance a = new Appearance(); + PolygonAttributes polyAttrib = new PolygonAttributes(); + ColoringAttributes colorAttrib=new ColoringAttributes(); + a.setPolygonAttributes(polyAttrib); + + { + boolean ft=Shell.getBoolean("yoyo.facetransparency",true); + if (ft) { + a.setTransparencyAttributes( + new TransparencyAttributes(TransparencyAttributes.BLENDED,0.2f) + ); + colorAttrib.setColor(0.45f,0.4f,.5f); + } else { + polyAttrib.setPolygonOffset(2f); + colorAttrib.setColor(0.5f,0.4f,.5f); + } + } + a.setColoringAttributes(colorAttrib); + return a; + } + + static Appearance wireframe1() + { + + Appearance a = new Appearance(); + PolygonAttributes polyAttrib = new PolygonAttributes(); + polyAttrib.setPolygonMode(PolygonAttributes.POLYGON_LINE); + if (!Shell.getBoolean("yoyo.bfacecull",false)) { + polyAttrib.setCullFace(PolygonAttributes.CULL_NONE); + } + a.setLineAttributes( + new LineAttributes((float)Shell.getDouble("yoyo.linewidth",1), + LineAttributes.PATTERN_SOLID,true)); + a.setPolygonAttributes(polyAttrib); + ColoringAttributes redColoring = new ColoringAttributes(); + redColoring.setColor(.6f, 0.4f, 0.5f); + a.setColoringAttributes(redColoring); + a.setTransparencyAttributes( + new TransparencyAttributes(TransparencyAttributes.BLENDED,0.4f)); + + return a; + } + + static Appearance wireframe2() + { + Appearance appearance1 = new Appearance(); + PolygonAttributes polyAttrib = new PolygonAttributes(); + polyAttrib.setPolygonMode( + Shell.getBoolean("yoyo.points",true) ? + PolygonAttributes.POLYGON_POINT : + PolygonAttributes.POLYGON_LINE + + ); + if (!Shell.getBoolean("yoyo.bfacecull",false)) { + polyAttrib.setCullFace(PolygonAttributes.CULL_NONE); + } + + appearance1.setPolygonAttributes(polyAttrib); + appearance1.setPointAttributes( + new PointAttributes((float)Shell.getDouble("yoyo.pointsize",2), false)); + appearance1.setLineAttributes( + new LineAttributes((float)Shell.getDouble("yoyo.linewidth",1), + LineAttributes.PATTERN_SOLID,true)); + appearance1.setTransparencyAttributes( + new TransparencyAttributes(TransparencyAttributes.BLENDED,0.7f)); + ColoringAttributes colorAttrib=new ColoringAttributes(); + colorAttrib.setColor(0.8f,0.6f,1f); + appearance1.setColoringAttributes(colorAttrib); + return appearance1; + } + + static Appearance wireframe3() + { + Appearance appearance1 = new Appearance(); + PolygonAttributes polyAttrib = new PolygonAttributes(); + polyAttrib.setPolygonMode( + Shell.getBoolean("yoyo.points",true) ? + PolygonAttributes.POLYGON_POINT : + PolygonAttributes.POLYGON_LINE + + ); + if (!Shell.getBoolean("yoyo.bfacecull",false)) { + polyAttrib.setCullFace(PolygonAttributes.CULL_NONE); + } + + appearance1.setPolygonAttributes(polyAttrib); + appearance1.setPointAttributes( + new PointAttributes((float)Shell.getDouble("yoyo.pointsize",2), false)); + appearance1.setLineAttributes( + new LineAttributes((float)Shell.getDouble("yoyo.linewidth",1), + LineAttributes.PATTERN_SOLID,true)); + appearance1.setTransparencyAttributes( + new TransparencyAttributes(TransparencyAttributes.BLENDED,0.7f)); + + Material material = new Material(); + material.setDiffuseColor(new Color3f(.8f, 0.6f, 1f)); + appearance1.setMaterial(material); + return appearance1; + } + + public static Appearance pointy() + { + Appearance a = new Appearance(); + PolygonAttributes pa = new PolygonAttributes(); + pa.setPolygonMode(PolygonAttributes.POLYGON_POINT); + pa.setCullFace(PolygonAttributes.CULL_NONE); + a.setPolygonAttributes(pa); + a.setPointAttributes(new PointAttributes(5,false)); + a.setTransparencyAttributes( + new TransparencyAttributes(TransparencyAttributes.BLENDED,0.8f)); +/* + new TransparencyAttributes( + TransparencyAttributes.BLENDED,0.9f, + TransparencyAttributes.BLEND_SRC_ALPHA, + TransparencyAttributes.BLEND_ONE)); +*/ + ColoringAttributes colorAttrib=new ColoringAttributes(); + colorAttrib.setColor(0.8f,0.6f,1f); + a.setColoringAttributes(colorAttrib); + return a; + } + + public static Appearance pointy2() + { + Appearance a = new Appearance(); + PolygonAttributes pa = new PolygonAttributes(); + pa.setPolygonMode(PolygonAttributes.POLYGON_POINT); + pa.setCullFace(PolygonAttributes.CULL_NONE); + a.setPolygonAttributes(pa); + a.setPointAttributes(new PointAttributes(3,false)); + a.setTransparencyAttributes( + new TransparencyAttributes(TransparencyAttributes.BLENDED,0.7f)); + + ColoringAttributes colorAttrib=new ColoringAttributes(); + colorAttrib.setColor(0.8f,0.6f,1f); + a.setColoringAttributes(colorAttrib); + return a; + } + + public static Appearance pointy3() + { + Appearance a = new Appearance(); + PolygonAttributes pa = new PolygonAttributes(); + pa.setPolygonMode(PolygonAttributes.POLYGON_POINT); + pa.setCullFace(PolygonAttributes.CULL_NONE); + a.setPolygonAttributes(pa); + a.setPointAttributes(new PointAttributes(3,false)); + + ColoringAttributes colorAttrib=new ColoringAttributes(); + colorAttrib.setColor(0.8f,0.6f,1f); + a.setColoringAttributes(colorAttrib); + return a; + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/maths/GaussianForm.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,29 @@ +package eg.maths; +import samer.core.*; +import samer.maths.*; + +public class GaussianForm extends QuadraticForm +{ + public GaussianForm() { super(); } + public GaussianForm(int n) { super(n); } + + public double apply(double [] x) { + return -Math.exp(super.apply(x)); + } + + public VectorFunctionOfVector derivative() + { + return new VectorFunctionOfVector() { + public void apply(double [] x) { + double z=GaussianForm.this.apply(x); + Mathx.copy(y,x); + Mathx.mul(x,-z); + } + public void apply(double [] x, double [] v) { + double z=GaussianForm.this.apply(x); + Mathx.copy(y,v); + Mathx.mul(v,-z); + } + }; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/maths/Inf.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,9 @@ +import samer.core.*; + +public class Inf { + public static void test() { + double x=Math.log(0); + int n=(int)x; + Shell.print("x="+x+", n="+n); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/maths/Optimizer.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,68 @@ +package eg.maths; +import samer.core.*; +import samer.core.types.*; +import samer.maths.*; +import samer.maths.opt.*; +import samer.nn.nonlin.*; + +public class Optimizer implements Agent +{ + Node node=Node.push(new Node("optimizer")); + Function fn; + VDouble a = new VDouble("a",-1); + VDouble b = new VDouble("b",0); + VDouble c = new VDouble("c",1); + + MinimumBracket br = new MinimumBracket(); + BrentMinimiser min = new BrentMinimiser(); + + public Optimizer() + { + Object obj = (Function)Space.get("function"); + if (obj==null) { + fn = new CompoundFunction( new Square(), new Quadratic(1,0,-1)); + } else { + if (obj instanceof Function) fn=(Function)obj; + else if (obj instanceof FunctionOfVector) { + FunctionOfVector vfn=(FunctionOfVector)obj; + VVector x = (VVector)Space.get("vector"); + VVector d = new VVector("d",x.size()); + LineFunction linefn = new LineFunction(vfn,x.size()); + linefn.setBase(x.array()); + linefn.setDirection(d.array()); + fn=linefn; + } + } + + br.setFunction(fn); + min.setFunction(fn); + min.setFractionalTolerance(0.0001); + min.setAbsoluteTolerance(0.0001); + min.setBracket(br); + + Shell.showViewer(new FunctionPlotter( node, fn), "Function"); + Shell.showViewer(new FunctionPlotter( node, fn.derivative()), "Derivative"); + Shell.exposeCommands(this); + Shell.exposeViewables(); + } + + public void getCommands(Agent.Registry r) { + r.add("bracket").add("minimise"); + } + + public void execute(String cmd, Environment env) + { + if (cmd.equals("bracket")) { + br.setInitialPoints(a.value,b.value); + br.run(); + a.value = br.ax; a.changed(); + b.value = br.bx; b.changed(); + c.value = br.cx; c.changed(); + } else if (cmd.equals("minimise")) { + min.run(); + Shell.print("minimum at x="+min.getArgument()); + Shell.print("function value f(x)="+min.getValue()); + Shell.print("took "+min.getIterations()+" iterations"); + } + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/maths/QuadraticForm.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,47 @@ +package eg.maths; +import samer.core.*; +import samer.maths.*; +import samer.maths.ops.*; + +public class QuadraticForm extends FunctionOfVector +{ + VVector x, yy; + Matrix A; + MatrixTimesVector Ax; + double [] y; + + public QuadraticForm() { this(Shell.getInt("dimensions",2)); } + public QuadraticForm(int n) + { + x = new VVector("x",n); + yy = new VVector("y",n); + A = new Matrix("A",n,n); + Ax = new MatrixTimesVector(yy.array(),A); + y = yy.array(); + + Shell.put("functionOfVector",this); + Shell.put("vector",x); + } + + public double apply(double [] x) + { + Ax.run(x); + return -0.5*Mathx.dot(x,y); + } + + public VectorFunctionOfVector derivative() + { + return new VectorFunctionOfVector() { + + public void apply(double [] x) { + Ax.run(x); + Mathx.copy(y,x); + } + + public void apply(double [] x, double [] v) { + Ax.run(x); + Mathx.copy(y,v); + } + }; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/mds/args Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,41 @@ +#properties +#Sun Jul 17 19:37:00 BST 2011 +oz.ymap.maximum=1.0 +D.rowcolumn.editor.plotter.window.bounds=(155,507,156,142) +block.spring=100.0 +Py.editor.plotter.window.bounds=(584,320,235,104) +exposed.bounds=(4,24,286,510) +mds.stress.trace.window.bounds=(477,170,410,128) +d.plotter.window.bounds=(493,497,440,116) +P.image.window.bounds=(375,26,76,165) +mds.rate=1.0E-4 +Px.editor.plotter.window.bounds=(592,221,228,95) +hybrid.derivative.plotter.window.bounds=(0,22,240,142) +s.plotter.window.bounds=(0,22,189,93) +y-map.bounds=(468,238,235,131) +s.editor.image.window.bounds=(635,240,220,78) +oz.background=(0 0 0) +regulator.target=170.0 +block.damping=20.0 +oz.xmap.maximum=1.0 +console.frame.bounds=(393,74,254,71) +P.editor.window.bounds=(459,186,53,176) +ball.damping=10.0 +mds.stress.trace.map.symmetric=false +D.image.window.bounds=(302,25,138,161) +mds.stress.trace.map.minimum=-0.0 +D.image.map.maximum=3.754 +D.editor.window.bounds=(363,46,166,192) +oz.ymap.symmetric=true +mds.stress.trace.map.maximum=10.0 +x-map.bounds=(476,378,235,131) +Tasks.bounds=(460,70,158,167) +P.rowcolumn.editor.plotter.window.bounds=(587,339,221,104) +alpha=0.7 +ball.spring=100.0 +D.file=D1 +hybrid.plotter.window.bounds=(502,223,450,329) +ball.gravity=40.0 +regulated=true +Oz.bounds=(289,203,216,212) +oz.xmap.symmetric=true
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/mds/mds.scm Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,37 @@ +(import "samer.mds.*") + +(put "colormap" (redgreen)) +(put "oz.background" (Color. 0 0 0)) + +(define N 16) +(define D (Matrix. "D" N N)) +(define P (Matrix. "P" N 4)) +(define s (VVector. "s" N)) +(Mathx.set (.array s) (Constant. 0.5)) + +;(MatrixBall.setBallSize 16 16) +(define mds (MDS. P)) +(addtasks + (CovarianceTask. mds D) + mds +) +(.setDimensionality mds 2) +(expose) + +(define gauss (samer.maths.random.NormalisedGaussian.)) +(define uniform (samer.maths.random.Uniform.)) +(define raleigh (samer.maths.random.Raleigh.)) +(define (rndP) (.set P gauss) (.changed P)) +(define (rndD) (.set D uniform) (.changed D)) + +;(matexec D "load") +(matexec D "image") +;(.setColumn (RowColumn. (Node. "Px") P) 0) +;(.setColumn (RowColumn. (Node. "Py") P) 1) +(rndD) +(rndP) + +(define oz (node "oz" (MatrixPointViewer2. P s))) +(expose oz "Oz") + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/mds/mds2.scm Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,37 @@ +(import "samer.mds.*") + +(tasks) +(put "colormap" (redgreen)) +(put "oz.background" Color.black$) +(define R (Matrix. "R" 512 512)) +(define P (Matrix. "P" 512 6)) +(define mds (MDS2. R P)) +(.setDimensionality mds 2) +(.linkAll mds) +(addtask mds) + +;(matexec P "load") +;(matexec R "load") +(.timesEquals R 0.5) + +(define (make-vwr) + (define vwr (node "oz" (MatrixPointViewer. P))) + (Shell.expose vwr "Oz") + vwr) + +(define (make-vwr2 x) + (define vwr (node "oz" (MatrixPointViewer2. P x))) + (Shell.expose vwr "Oz") + vwr) + +(make-vwr) +;(MatrixBall.setBallSize 6 6) +;(MatrixBall.drawMarker (MatrixBall.getImage) Color.white$ 0.4f) + + +(define gauss (samer.maths.random.NormalisedGaussian.)) +(define (rnd) (.set P gauss) (.changed P)) + +(expose) + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/misc/args Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,38 @@ +#properties +#Tue Mar 26 17:20:08 GMT 2019 +mouse.y.trace.map.minimum=-0.0 +ft.power.plotter.window.bounds=(323,142,512,118) +mouse.x.trace.map.symmetric=false +x.editor.plotter.window.bounds=(490,234,231,110) +scaler.scale.meter.map.maximum=6370.513 +exposed.bounds=(48,23,286,653) +mouse.exposed.bounds=(448,59,223,119) +ft.power.trace.map.minimum=0.001 +mouse.y.trace.map.maximum=400.0 +waveform.plotter.window.bounds=(4,22,1020,118) +mouse.y.trace.window.bounds=(694,148,264,86) +waveform.scaler.laplace.e.plotter.window.bounds=(4,22,1024,118) +playlist.files='("/Users/samer/Music/Artists/Tunng/comments on the inner chorus/01-Hanged.mp3" "/Users/samer/Music/Artists/Tunng/comments on the inner chorus/02-Woodcat.mp3" "/Users/samer/Music/Artists/Tunng/comments on the inner chorus/03-The Wind Up Bird.mp3" "/Users/samer/Music/Artists/Tunng/comments on the inner chorus/04-Red And Green.mp3" "/Users/samer/Music/Artists/Tunng/comments on the inner chorus/05-Stories.mp3" "/Users/samer/Music/Artists/Tunng/comments on the inner chorus/06-Jenny Again.mp3" "/Users/samer/Music/Artists/Tunng/comments on the inner chorus/07-Man In The Box.mp3" "/Users/samer/Music/Artists/Tunng/comments on the inner chorus/08-Jay Down.mp3" "/Users/samer/Music/Artists/Tunng/comments on the inner chorus/09-It's just because we've got hair.mp3" "/Users/samer/Music/Artists/Tunng/comments on the inner chorus/10-Sweet William.mp3" "/Users/samer/Music/Artists/Tunng/comments on the inner chorus/11-Engine Room.mp3") +scaler.scale.trace.window.bounds=(336,430,256,86) +trace.bounds=(493,106,264,86) +scaler.E=2895.934 +ft.power.trace.map.maximum=60.0 +ft.power.trace.window.bounds=(405,22,256,534) +mouse.x.trace.map.minimum=0.0 +waveform.scaler.scale=0.023 +scaler.output.plotter.window.bounds=(12,589,1020,118) +mouse.x.trace.map.maximum=400.0 +mouse.y.trace.map.symmetric=false +playlist.current=/Users/samer/Music/Onset_paper/UPFsamples/audio/RadioTarifa3.wav +mouse.x.trace.window.bounds=(693,61,264,86) +ft.power.image.window.bounds=(4,22,513,37) +x1.plotter.window.bounds=(440,22,231,118) +x1.editor.plotter.window.bounds=(419,160,289,121) +ft.mag.plotter.window.bounds=(502,338,256,118) +waveform.scaler.scaleRate=0.01 +scaler.scale.meter.map.symmetric=false +scaler.E.trace.window.bounds=(304,24,338,111) +mouse.canvas.bounds=(4,23,430,397) +scaler.scaleRate=0.004 +x1.image.window.bounds=(290,279,197,71) +scaler.scale=2974.602
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/misc/meters.scm Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,20 @@ +(load "filelist.scm") +(load "lineout.scm") +(load "audio.scm") +(load "models.scm") +(load "functions.scm") + +(put "scale.meter" #t) +(put "E.meter" #t) +(put "regulated" #f) +(put "lineout.meter" #f) + +(tasks) +(define f (linein (filesource) 1024 512)) +(define x (norm f)) +(define y (ft-power (ft-vec x))) + +;(set-playlist (ls "/Users/samer/Music/Classical/Bach/The Well Tempered Clavier/Book I/Gould/11kmono")) +(lineout (linesnk (mono 11025)) (get "LineIn")) +(expose) +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/misc/mouse.scm Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,8 @@ +(import "samer.core.util.swing.*") +(import "samer.units.*") + +(define canvas (VCanvas.)) +(define mouse (MousePosition. canvas)) +(expose canvas "canvas") +(expose) +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/misc/scope.props Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,13 @@ +#properties +#Sat Mar 09 02:11:17 GMT 2002 +y.trace.map.maximum=1.0 +trace.scroll=true +x.trace.window.bounds=(221,397,372,99) +canvas.bounds=(0,0,481,371) +x.trace.map.maximum=1.0 +y.trace.map.symmetric=true +scroll=true +trace.color=\#ffff00 +x.trace.map.symmetric=true +exposed.bounds=(639,0,263,293) +y.trace.window.bounds=(225,500,368,101)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/misc/scope.scm Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,40 @@ +(load "props.scm") + +(import "samer.core.types.*") + +(push-properties "scope.props") +(put "canvas.background" Color.black$) +(put "canvas.foreground" (Color. 60 220 120)) +(put "trace.background" Color.black$) + +(define C (node "canvas" (Plotter.))) +(expose C "canvas") +(.exposeMaps C) + +(define (oscillator nm freq) + (define o (Oscillator. freq)) + (VParameter. nm (.getFrequencyModel o)) +; (Product. (Constant. 256.0) o) + o +) + +(tasks) + +(define x (VDouble. "x")) +(define y (VDouble. "y")) + +(addtasks + (GenerateDouble. x (oscillator "fx" 0.1)) + (GenerateDouble. y (oscillator "fy" 0.1)) + (SilkTask. + (let ((P (.getPen C))) + (.moveto P 0 0) + (lambda () + (.activate P) + (.line (.abs P (.value$ x) (.value$ y))) + (.move P) + ) + )) +) + +(expose)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/misc/vtrace.scm Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,32 @@ +(load "props.scm") + +(push-properties "scope.props") +(put "trace.background" Color.black$) +(put "trace.foreground" (Color. 60 220 150)) +(put "regulated" "true") + +(define (oscillator name f) + (define o (Oscillator. f)) + (VParameter. name (.getFrequencyModel o)) + o) + +(define (gradient-map c1 c2 n) + (define cramp (ColorRamp. n)) + (.gradient cramp 0 c1 (- n 1) c2) + (.getColorModel cramp)) + +(put "renderer" Renderer.LINE$) +(put "colormap" (colormap 13 + Color.red$ 2 Color.yellow$ 4 Color.green$ + 6 Color.cyan$ 8 Color.blue$ 10 Color.magenta$ + 12 Color.red$)) +; _________________________________________ + +(expose) + +(define x (VVector. "x" 8)) +(define pl (node "trace" (VectorTrace. x))) +(addtask pl) +(addtask (Ops.update x)) +(expose pl "trace") +(exec x "plotter editor")
--- a/examples/sockets/ostream.scm Tue Jan 17 17:50:20 2012 +0000 +++ b/examples/sockets/ostream.scm Fri Apr 05 16:26:00 2019 +0100 @@ -1,12 +1,12 @@ (load "sockets.scm") ;;; get a random vector -(define v (VVector. "v" 8)) +(define v (samer.maths.VVector. "v" 8)) (.next (samer.maths.random.NormalisedGaussian.) (.array v)) ;;; write object to a file (define o (oostream (ofstream "obj"))) -(.writeObject o v) +(.writeObject o (.getVec v)) (.close o) ;;; read object back
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/sockets/recv.scm Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,15 @@ +(load "sockets.scm") +(load "filelist.scm") +(load "models.scm") +(load "audio.scm") + +(define S (make-server)) +(define x (norm (linein (filesource) 512 256))) +(define s (VVector. "s" 512)) +(expose) +(define sk (accept S)) +(addtask (send-vec sk x)) + +(define th2 (RThread.)) +(.addTask th2 (recv-vec sk s)) +
--- a/examples/sockets/recv.silk Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -(load "sockets.scm") -(load "sources.scm") - -(define S (make-server)) -(define x (norm (linein (filesource)))) -(define s (VVector. "s" 512)) -(expose) -(define sk (accept S)) -(addtask (send-vec sk x)) - -(define th2 (RThread.)) -(.addTask th2 (recv-vec sk s)) -
--- a/examples/sound/midi/args Tue Jan 17 17:50:20 2012 +0000 +++ b/examples/sound/midi/args Fri Apr 05 16:26:00 2019 +0100 @@ -1,5 +1,5 @@ #properties -#Thu Jul 14 14:56:13 BST 2011 +#Tue Mar 26 13:47:55 GMT 2019 p.slider.map.maximum=0.001 decay.slider.map.maximum=0.700 Tasks.bounds=(290,499,225,145) @@ -9,7 +9,7 @@ midisynth.file=midisynth matrix.rowcolumn.trace.window.bounds=(557,374,256,86) regulated=true -matrix.rowcolumn.plotter.window.bounds=(264,345,242,115) +matrix.rowcolumn.plotter.window.bounds=(267,585,242,115) out.plotter.window.bounds=(4,22,128,118) MidiSynthEditor.bounds=(281,201,308,231) matrix.rowcolumn.image.window.bounds=(514,242,229,78) @@ -17,14 +17,14 @@ plotter.type=2 midisynth.offset=32 matrix.rowcolumn.editor.image.window.bounds=(377,604,505,69) -midisynth.bounds=(281,22,232,176) +midisynth.bounds=(281,23,232,176) +regulator.target=35.0 out.image.window.bounds=(396,586,390,88) -regulator.target=35.0 +matrix.editor.window.bounds=(607,23,551,549) midisynth.offset.bounds=(283,23,204,57) -matrix.editor.window.bounds=(603,22,551,549) p.slider.map.minimum=2.357E-7 +exposed.bounds=(4,23,261,516) decay.slider.map.minimum=0.001 -exposed.bounds=(3,22,276,590) matrix.image.window.bounds=(255,51,161,202) decay=0.01 midisynth.factor=80.0
--- a/examples/sound/midi/args.old Tue Jan 17 17:50:20 2012 +0000 +++ b/examples/sound/midi/args.old Fri Apr 05 16:26:00 2019 +0100 @@ -1,5 +1,5 @@ #properties -#Thu Jul 14 14:56:12 BST 2011 +#Tue Mar 26 13:42:33 GMT 2019 p.slider.map.maximum=0.001 decay.slider.map.maximum=0.700 Tasks.bounds=(290,499,225,145) @@ -9,7 +9,7 @@ midisynth.file=midisynth matrix.rowcolumn.trace.window.bounds=(557,374,256,86) regulated=true -matrix.rowcolumn.plotter.window.bounds=(264,345,242,115) +matrix.rowcolumn.plotter.window.bounds=(267,585,242,115) out.plotter.window.bounds=(4,22,128,118) MidiSynthEditor.bounds=(281,201,308,231) matrix.rowcolumn.image.window.bounds=(514,242,229,78) @@ -17,14 +17,14 @@ plotter.type=2 midisynth.offset=32 matrix.rowcolumn.editor.image.window.bounds=(377,604,505,69) -midisynth.bounds=(281,22,232,176) +midisynth.bounds=(281,23,232,176) out.image.window.bounds=(396,586,390,88) regulator.target=35.0 midisynth.offset.bounds=(283,23,204,57) -matrix.editor.window.bounds=(603,22,551,549) +matrix.editor.window.bounds=(607,23,551,549) p.slider.map.minimum=2.357E-7 decay.slider.map.minimum=0.001 -exposed.bounds=(3,22,276,590) +exposed.bounds=(4,23,261,516) matrix.image.window.bounds=(255,51,161,202) decay=0.01 midisynth.factor=80.0
--- a/examples/sound/midi/plinky.scm Tue Jan 17 17:50:20 2012 +0000 +++ b/examples/sound/midi/plinky.scm Fri Apr 05 16:26:00 2019 +0100 @@ -1,4 +1,5 @@ (load "midi.scm") +(load "streams.scm") (import "samer.maths.random.*") (put "regulated" #t) @@ -42,11 +43,12 @@ ) (define (load-file fn) - (let ((f (istream fn))) + (let ((f (ifstream fn))) (.load matrix f) (.close f))) (define (f1) (load-file "walking_zither2")) (define (f2) (load-file "walking_zither3")) (define (f3) (load-file "walking_zither4")) - +(expose) +(expose synth)
--- a/examples/sound/midi/plinky.silk Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -(import "samer.maths.random.*") -(load "color.silk") - -(put "regulated" #t) -(put "colormap" (redgreen)) -(put "symmetric" #t) - -(tasks) - -(define N 64) -(define M 64) - -(define matrix (Matrix. "matrix" M N)) -(define out (VVector. "out" N)) -(define vgen (VGenerator. "gen")) -(define rowcol (RowColumn. matrix)) -(define decay (VDouble. "decay" 0.998)) - -(.setGenerator vgen (Binary.)) - - -; program 46 is cool! -; so are 10, 12, 111 -(define midiin (VVector. "midiin" 64)) -(define synth (MidiSynth. midiin)) -(define m 0) - -(addtasks - (sub 4 (task - (.timesEquals matrix (.value$ decay)) - (.add matrix vgen) - (.changed matrix) - )) - - (Ops.transfer rowcol midiin) - (Ops.update midiin) - synth - (task - (.setRow rowcol m) - (set! m (if (< m (- M 1)) (+ m 1) 0)) - ) -) - - -(define (load-file fn) - (let ((f (istream fn))) - (.load matrix f) - (.close f))) - -(define (f1) (load-file "walking_zither2")) -(define (f2) (load-file "walking_zither3")) -(define (f3) (load-file "walking_zither4")) - - - -
--- a/examples/sound/sampled/args Tue Jan 17 17:50:20 2012 +0000 +++ b/examples/sound/sampled/args Fri Apr 05 16:26:00 2019 +0100 @@ -1,5 +1,5 @@ #properties -#Thu Jul 14 14:15:19 BST 2011 +#Tue Mar 26 14:09:07 GMT 2019 function.derivative.plotter.window.bounds=(375,357,426,239) sqrt.plotter.window.bounds=(0,0,208,122) waveform.image.cell.size=1 @@ -193,6 +193,7 @@ mog.state.image.window.bounds=(470,885,419,91) signal.map.maximum=1.0 spectrum.editor.image.window.bounds=(126,215,823,135) +filessink.scale.bounds=(280,23,201,57) ica.learn.G.image.window.bounds=(916,91,264,278) scaler.scaleRate=-0.010 subrate.factor=1 @@ -248,7 +249,7 @@ logprior.strength=0.0 audio.exposed.bounds=(980,190,229,372) ica.s.plotter.window.bounds=(151,296,264,118) -exposed.bounds=(1,22,296,778) +exposed.bounds=(4,23,238,64) noise=(Gaussian.) audio.offset=-507.6 step=384 @@ -287,45 +288,45 @@ waveform.plotter.map.maximum=36000.0 russian.vodka.jelly=snoozy spectrum.trace.map.minimum=3.2E-5 +mat.image.window.bounds=(0,0,264,278) +coder.learn.rate=0.16 scaleNormaliser.scale.editor.plotter.window.bounds=(282,629,264,118) -coder.learn.rate=0.16 -mat.image.window.bounds=(0,0,264,278) e.trace.window.bounds=(0,89,264,278) normaliser.mean=-444.473 vector.editor.button1=0.1 +scaler.E.trace.window.bounds=(360,376,264,86) test.file=test3.silk -scaler.E.trace.window.bounds=(360,376,264,86) p=1.0E-5 ica.C.image.window.bounds=(516,524,264,278) scaler.output.plotter.window.bounds=(627,566,264,75) +wavewriter.scale.bounds=(305,57,199,57) v1.B.editor.window.bounds=(0,0,187,201) -wavewriter.scale.bounds=(305,57,199,57) midisynth.factor=120.0 +factor=58 v1.B.image.window.bounds=(0,0,146,54) -factor=58 ft.mag.diffScaler.output.stacker.output.reshaped.image.window.bounds=(303,249,264,49) image.height=16 ica.learn.G.rowcolumn.plotter.window.bounds=(166,816,937,118) matrix.plotter.rowcolumn.plotter.window.bounds=(5,159,212,136) histogram.likelihood.plotter.window.bounds=(891,383,264,100) +matrix.rowcolumn.plotter.window.bounds=(0,0,212,136) VState.Optimiser.bounds=(0,0,287,592) -matrix.rowcolumn.plotter.window.bounds=(0,0,212,136) scaler.NlogK.trace.window.bounds=(0,551,264,86) +w1.scale=0.01 joint.histogram.bins.image.window.bounds=(701,314,163,193) -w1.scale=0.01 ft.mag.diffScaler.output.stacker.output.reshaped.image.map.minimum=1.0 spectrum.trace.window.bounds=(284,206,256,294) +jelly=wobbly normaliser.rate=0.004 -jelly=wobbly vector.reshaped.image.window.bounds=(0,0,146,294) +mog.-log\ p(s).plotter.window.bounds=(469,627,427,129) mog.weights.editor.plotter.window.bounds=(300,492,225,127) -mog.-log\ p(s).plotter.window.bounds=(469,627,427,129) generator=(oscillator "osc1" 0.1) stacker.output.reshaped.image.map.symmetric=false waveform.plotter.window.bounds=(364,356,512,118) +scaler.offsetRate=3.200E-6 +mog.sigmas.editor.plotter.window.bounds=(300,196,224,117) scaler.scale=4715.263 -mog.sigmas.editor.plotter.window.bounds=(300,196,224,117) -scaler.offsetRate=3.200E-6 filter.mean.plotter.window.bounds=(637,652,214,138) regulator.target=46.733 source=line @@ -340,20 +341,20 @@ infile=/mnt/sauce/music/projwav/beethoven/piano/fm-1.wav ica.e(x).trace.window.bounds=(876,54,264,278) histogram.bins.image.window.bounds=(162,599,86,278) +vector.image.window.bounds=(113,544,404,72) function.plotter.x.map.maximum=4.0 -vector.image.window.bounds=(113,544,404,72) +x.image.window.bounds=(373,381,265,83) ica.log\ |W|=-580.779 -x.image.window.bounds=(373,381,265,83) ica.W.rowcolumn.image.window.bounds=(248,190,264,49) spectrum.plotter.window.bounds=(76,580,813,116) ica.G.image.window.bounds=(283,0,264,278) vector.editor.image.window.bounds=(371,114,292,102) +spectrum.histogram.bins.image.window.bounds=(451,284,104,534) histogram.sumL.trace.window.bounds=(891,156,264,86) -spectrum.histogram.bins.image.window.bounds=(451,284,104,534) +out.trace.window.bounds=(13,401,1036,292) test.color=\#465f90 -out.trace.window.bounds=(13,401,1036,292) mog.sigmas.rowcolumn.editor.plotter.window.bounds=(623,452,236,138) +ica.e(x).plotter.window.bounds=(333,471,264,118) w1.color=\#817a9b -ica.e(x).plotter.window.bounds=(333,471,264,118) spectrum.histogram.sumL.trace.window.bounds=(297,845,272,83) histogram.bins=96
--- a/examples/sound/sampled/args.old Tue Jan 17 17:50:20 2012 +0000 +++ b/examples/sound/sampled/args.old Fri Apr 05 16:26:00 2019 +0100 @@ -1,5 +1,5 @@ #properties -#Thu Jul 14 12:56:51 BST 2011 +#Tue Mar 26 14:08:20 GMT 2019 function.derivative.plotter.window.bounds=(375,357,426,239) sqrt.plotter.window.bounds=(0,0,208,122) waveform.image.cell.size=1 @@ -24,6 +24,7 @@ ETA=0.75 spectrum.stats.covariance.image.window.bounds=(523,366,256,278) basis.subrate.factor=10 +ft.power.diffScaler.output.image.window.bounds=(200,141,1078,105) x.editor.image.window.bounds=(0,0,230,59) filter.ft.mag.trace.window.bounds=(334,0,264,280) phi.plotter.window.bounds=(0,0,520,118) @@ -61,13 +62,14 @@ mog.weights.editor.image.window.bounds=(25,172,333,118) normaliser.level.trace.map.minimum=15.999 MidiSynthEditor.bounds=(-8,226,391,230) -waveform.scaler.batch=8 +waveform.scaler.batch=4 B.image.window.bounds=(0,0,146,54) joint.histogram.likelihood.trace.window.bounds=(84,573,293,96) matrix.editor.window.bounds=(660,438,186,213) XEPS=1.0E-6 spoons=true mog.sigmas.editor.image.window.bounds=(238,1,270,125) +ft.power.trace.window.bounds=(297,22,272,778) z.trace.window.bounds=(5,696,1036,292) function.plotter.y.map.maximum=1.099 signal.trace.window.bounds=(21,69,290,147) @@ -85,7 +87,9 @@ spectrum.stats.cov.image.window.bounds=(9,449,256,278) filter.mean.image.window.bounds=(765,605,146,59) scaleNormaliser.output.plotter.window.bounds=(0,0,264,118) +ft.power.diffScaler.mu.plotter.window.bounds=(297,165,1025,118) loudness.plotter.window.bounds=(387,18,146,150) +ft.power.diffScaler.w.plotter.window.bounds=(204,22,548,207) ftol=1.0E-6 waveform.scaler.offset=1.554E-4 image.width=256 @@ -128,6 +132,7 @@ cell.size=1 scaler.output.trace.window.bounds=(0,461,264,278) function.plotter.window.bounds=(375,90,416,263) +ft.power.image.window.bounds=(256,22,1025,37) sqrt.trace.window.bounds=(0,0,264,534) z.image.window.bounds=(479,637,268,40) vector.plotter.window.bounds=(498,531,302,121) @@ -171,6 +176,7 @@ matrix.rowcolumn.image.window.bounds=(417,470,266,55) GEPS=0.001 x.histogram.bins.image.window.bounds=(693,378,146,115) +ft.power.diffScaler.output.plotter.window.bounds=(320,440,520,120) sqrt.image.window.bounds=(250,621,520,49) ica.W.image.window.bounds=(780,524,264,278) writer.enable=false @@ -187,6 +193,7 @@ mog.state.image.window.bounds=(470,885,419,91) signal.map.maximum=1.0 spectrum.editor.image.window.bounds=(126,215,823,135) +filessink.scale.bounds=(280,23,201,57) ica.learn.G.image.window.bounds=(916,91,264,278) scaler.scaleRate=-0.010 subrate.factor=1 @@ -242,7 +249,7 @@ logprior.strength=0.0 audio.exposed.bounds=(980,190,229,372) ica.s.plotter.window.bounds=(151,296,264,118) -exposed.bounds=(4,22,302,778) +exposed.bounds=(4,23,287,559) noise=(Gaussian.) audio.offset=-507.6 step=384 @@ -287,43 +294,44 @@ e.trace.window.bounds=(0,89,264,278) normaliser.mean=-444.473 vector.editor.button1=0.1 +test.file=test3.silk scaler.E.trace.window.bounds=(360,376,264,86) -test.file=test3.silk p=1.0E-5 ica.C.image.window.bounds=(516,524,264,278) scaler.output.plotter.window.bounds=(627,566,264,75) +v1.B.editor.window.bounds=(0,0,187,201) wavewriter.scale.bounds=(305,57,199,57) -v1.B.editor.window.bounds=(0,0,187,201) midisynth.factor=120.0 +v1.B.image.window.bounds=(0,0,146,54) factor=58 -v1.B.image.window.bounds=(0,0,146,54) ft.mag.diffScaler.output.stacker.output.reshaped.image.window.bounds=(303,249,264,49) image.height=16 ica.learn.G.rowcolumn.plotter.window.bounds=(166,816,937,118) matrix.plotter.rowcolumn.plotter.window.bounds=(5,159,212,136) histogram.likelihood.plotter.window.bounds=(891,383,264,100) +VState.Optimiser.bounds=(0,0,287,592) matrix.rowcolumn.plotter.window.bounds=(0,0,212,136) -VState.Optimiser.bounds=(0,0,287,592) scaler.NlogK.trace.window.bounds=(0,551,264,86) +joint.histogram.bins.image.window.bounds=(701,314,163,193) w1.scale=0.01 -joint.histogram.bins.image.window.bounds=(701,314,163,193) ft.mag.diffScaler.output.stacker.output.reshaped.image.map.minimum=1.0 spectrum.trace.window.bounds=(284,206,256,294) +normaliser.rate=0.004 jelly=wobbly -normaliser.rate=0.004 vector.reshaped.image.window.bounds=(0,0,146,294) +mog.weights.editor.plotter.window.bounds=(300,492,225,127) mog.-log\ p(s).plotter.window.bounds=(469,627,427,129) -mog.weights.editor.plotter.window.bounds=(300,492,225,127) generator=(oscillator "osc1" 0.1) stacker.output.reshaped.image.map.symmetric=false waveform.plotter.window.bounds=(364,356,512,118) +scaler.scale=4715.263 +mog.sigmas.editor.plotter.window.bounds=(300,196,224,117) scaler.offsetRate=3.200E-6 -mog.sigmas.editor.plotter.window.bounds=(300,196,224,117) -scaler.scale=4715.263 filter.mean.plotter.window.bounds=(637,652,214,138) regulator.target=46.733 source=line matrix.rowcolumn.editor.plotter.window.bounds=(613,573,367,148) +ft.power.diffScaler.output.trace.window.bounds=(301,22,272,778) coder.sigma=0.001 trace.map.symmetric=false coeffs.editor.plotter.window.bounds=(283,22,584,177) @@ -333,20 +341,20 @@ infile=/mnt/sauce/music/projwav/beethoven/piano/fm-1.wav ica.e(x).trace.window.bounds=(876,54,264,278) histogram.bins.image.window.bounds=(162,599,86,278) +function.plotter.x.map.maximum=4.0 vector.image.window.bounds=(113,544,404,72) -function.plotter.x.map.maximum=4.0 +ica.log\ |W|=-580.779 x.image.window.bounds=(373,381,265,83) -ica.log\ |W|=-580.779 ica.W.rowcolumn.image.window.bounds=(248,190,264,49) spectrum.plotter.window.bounds=(76,580,813,116) ica.G.image.window.bounds=(283,0,264,278) vector.editor.image.window.bounds=(371,114,292,102) +histogram.sumL.trace.window.bounds=(891,156,264,86) spectrum.histogram.bins.image.window.bounds=(451,284,104,534) -histogram.sumL.trace.window.bounds=(891,156,264,86) +test.color=\#465f90 out.trace.window.bounds=(13,401,1036,292) -test.color=\#465f90 mog.sigmas.rowcolumn.editor.plotter.window.bounds=(623,452,236,138) +w1.color=\#817a9b ica.e(x).plotter.window.bounds=(333,471,264,118) -w1.color=\#817a9b spectrum.histogram.sumL.trace.window.bounds=(297,845,272,83) histogram.bins=96
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/sound/sampled/linein.scm Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,8 @@ +(load "audio.scm") +; (load "lineout.scm") + +; audio input with a frame size of 1024 and a hop size of 512 +; is routed directly to audio output, which must also be informed +; that hop size is 512. +(linein (linesrc) 1024 512) +(expose)
--- a/local/schemerc.scm Tue Jan 17 17:50:20 2012 +0000 +++ b/local/schemerc.scm Fri Apr 05 16:26:00 2019 +0100 @@ -1,5 +1,3 @@ -;#! java jscheme.Shebang - (define eval-string jscheme.JS.eval) (define lib "/Users/samer/lib") (define load-roots (list @@ -7,5 +5,5 @@ (string-append lib "/jslab/local") )) (load "elf/load.scm") -(load "readline.scm") +; (load "readline.scm")
--- a/local/silk Tue Jan 17 17:50:20 2012 +0000 +++ b/local/silk Fri Apr 05 16:26:00 2019 +0100 @@ -1,8 +1,10 @@ #!/bin/sh jlib=~/lib/java silkrc=~/lib/jslab/local/schemerc.scm -base=$jlib/jscheme.jar:$jlib/libreadline-java.jar:$jlib/jama.jar -JAVA_HOME=/opt/local/share/java/openjdk6 -#JAVA_HOME="/Library/Java/JavaVirtualMachines/JDK 1.7.0 Developer Preview.jdk/Contents/Home" -export CLASSPATH=$jlib:$base:$CLASSPATH -exec "$JAVA_HOME/bin/java" -Dawt.useSystemAAFontSettings=lcd -Dswing.aatext=true -Xdock:name="JSLab" jscheme.REPL $silkrc "$@" +base=$jlib/jscheme.jar:$jlib/jama.jar +# base=$jlib/jscheme.jar:$jlib/libreadline-java.jar:$jlib/jama.jar +# JAVA_HOME="/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home" +# JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home" +JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home" +export CLASSPATH=$base:$CLASSPATH:$jlib +exec rlwrap "$JAVA_HOME/bin/java" -Dawt.useSystemAAFontSettings=lcd -Dswing.aatext=true -Xdock:name="JSLab" jscheme.REPL $silkrc "$@"
--- a/local/swingrc.scm Tue Jan 17 17:50:20 2012 +0000 +++ b/local/swingrc.scm Fri Apr 05 16:26:00 2019 +0100 @@ -11,16 +11,8 @@ ;(sp "apple.awt.interpolation" "bicubic"); nearestneighbor bilinear bicubic ;(sp "apple.awt.graphics.UseQuartz" "false") ;(sp "apple.awt.showGrowBox" "true") +) - ;;; older options, not working as of Java 6 - ;(sp "com.apple.mrj.application.apple.menu.about.name" "JSLab") - ;(sp "com.apple.mrj.application.growbox.intrudes" "false") - ;(sp "com.apple.mrj.application.live-resize" "false") - ;(sp "com.apple.macosx.AntialiasedGraphicsOn" "false") - ;(sp "com.apple.macos.useScreenMenuBar" "true") - ;(sp "com.apple.hwaccel" "true") -) - (samer.core.shells.SwingShell. (string-append lib "/jslab/local/user.props")) ;; This is a theme for people using the Metal look and feel. @@ -57,5 +49,3 @@ (samer.core.util.Tools.setAntialias #t) (osxtheme) ; I'm using a Mac - -
--- a/src/samer/applet/CVS/Entries Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -/ButtonsApplet.java/1.1.1.1/Fri Dec 10 03:29:24 2004// -/ConsoleApplet.java/1.1.1.1/Fri Dec 10 03:29:24 2004// -/JApplet.java/1.1.1.1/Fri Dec 10 03:29:24 2004// -/JAppletShell.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/Sierpinski.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/WindowApplet.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -D
--- a/src/samer/applet/CVS/Repository Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -/cvsroot/jslab/src/samer/applet
--- a/src/samer/applet/CVS/Root Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -:ext:samer@dspmac1.elec.qmul.ac.uk:/cvsroot
--- a/src/samer/audio/AudioSource.java Tue Jan 17 17:50:20 2012 +0000 +++ b/src/samer/audio/AudioSource.java Fri Apr 05 16:26:00 2019 +0100 @@ -32,6 +32,9 @@ Task reader(double buf[], int off, int len); Task reader(float buf[], int off, int len); + int getChannels(); + float getRate(); + public static class Util { /* NB. These copying functions allow NEGATIVE offset (off<0). The semantics * of this is are that n values are copied from source to destination, writing @@ -51,6 +54,12 @@ } } + public static void mediumToDouble(byte [] src, double [] dst, int off, int n) { + int i, j; + if (off<0) { i= 3*(-off); j=0; } else { i=0; j=off; } + while (j<n+off) dst[j++] = (1.0/8388608.0)*((src[i++]&0xff) | src[i++]<<8 | src[i++]<<16); + } + public static void shortToDouble(byte [] src, double [] dst, int off, int n) { int i, j; if (off<0) { i= 2*(-off); j=0; } else { i=0; j=off; }
--- a/src/samer/audio/CVS/Entries Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,9 +0,0 @@ -/AudioSink.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/AudioSource.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/FileSource.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/LineSource.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/StreamSource.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/VLine.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/LineSink.java/1.2/Mon Oct 9 21:16:16 2006// -/FileSink.java/1.2/Wed Oct 11 13:02:09 2006// -D
--- a/src/samer/audio/CVS/Repository Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -/cvsroot/jslab/src/samer/audio
--- a/src/samer/audio/CVS/Root Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -:ext:samer@dspmac1.elec.qmul.ac.uk:/cvsroot
--- a/src/samer/audio/FileSource.java Tue Jan 17 17:50:20 2012 +0000 +++ b/src/samer/audio/FileSource.java Fri Apr 05 16:26:00 2019 +0100 @@ -19,6 +19,7 @@ import javax.swing.*; import java.io.*; import java.util.*; +import java.nio.ByteBuffer; /** An AudioSource that read from multiple audio files. Can read any @@ -45,13 +46,13 @@ { List<File> list=null; ListIterator<File> it=null; - boolean loop; + boolean loop, buffered=true; int channelsToMix; VFile curFile; InputStream in=null; - AudioFormat format=null; + AudioFormat format=null, inFormat=null; byte[] byte_buf=null; - int chunk=0; + int chunk=0, bytesPerSample=0; /** * Construct a FileSource initialised with current file and loop initialised @@ -72,15 +73,26 @@ Shell.registerViewable(this); } + // AudioSource interface methods public void dispose() { close(); Shell.deregisterViewable(this); curFile.dispose(); } + public int getChannels() { return format.getChannels(); } + public float getRate() { return format.getFrameRate(); } + /** Returns current file */ public File getFile() { return curFile.getFile(); } - public void setTargetFormat(AudioFormat f) { format=f; } + public void setBuffering(boolean b) { buffered=b; } + + /** The actual format of the stream in. May not be same as target format. **/ + public AudioFormat getStreamFormat() { return inFormat; } + + /** The requested audio format. **/ + public AudioFormat getTargetFormat() { return format; } + public void setTargetFormat(AudioFormat f) { format=f; } /** If true then loop playlist, otherwise, an Exception will be thrown * when the end of the playlist is reached. If there is no playlist, then @@ -153,39 +165,47 @@ private synchronized void openCurrent() throws Exception { File file=curFile.getFile(); - Shell.trace("\nOpening audio file: "+file); + Shell.trace("\nFileSource:Opening audio file "+file); AudioInputStream s=AudioSystem.getAudioInputStream(file); - AudioFormat af=s.getFormat(); - long frames=file.length()/af.getFrameSize(); + AudioFormat fmt1, af=s.getFormat(); Shell.trace(" format: "+af); - Shell.trace(" duration: "+(long)(frames/af.getFrameRate())+" s"); // convert to target format if required if (format!=null) { if (!format.equals(af)) { Shell.trace(" converting to "+format); if (af.getChannels()>format.getChannels()) { + int frameSize = af.getChannels()*format.getSampleSizeInBits()/8; Shell.trace(" channels mix down required."); - AudioFormat fmt1 = new AudioFormat( format.getEncoding(), format.getSampleRate(), + fmt1 = new AudioFormat( format.getEncoding(), format.getSampleRate(), format.getSampleSizeInBits(), - af.getChannels(), format.getFrameSize(), format.getFrameRate(), format.isBigEndian()); + af.getChannels(), frameSize, format.getFrameRate(), format.isBigEndian()); channelsToMix = af.getChannels(); - s=convertFormat(s,af,fmt1); } else { channelsToMix = 0; - s=convertFormat(s,af,format); + fmt1=format; } + Shell.trace(" converting via "+fmt1); + s=convertFormat(s,af,fmt1); + inFormat = fmt1; + } else { + Shell.trace(" no formation conversion required"); + channelsToMix = 0; + inFormat = af; } + } else { + Shell.trace(" using stream native format"); + channelsToMix = 0; + inFormat = af; } + in=s; + if (buffered) in = new BufferedInputStream(in,64*1024); // If we have a reader task, then update the byte buffer if (chunk>0) setByteBuffer(); - - // Shell.trace("stream format: "+s.getFormat()); - in = new BufferedInputStream(s,16*1024); } /** Returns number of bytes available in current file */ @@ -194,33 +214,44 @@ /** Reopen current file, so that next read will be from head of file. */ public synchronized void reopen() throws Exception { close(); openCurrent(); } - private void setChunkSize(int s) { chunk=s; } + private void setBlockSize(int s) { chunk=s; } private void setByteBuffer() { - byte_buf = new byte[2*chunk*(channelsToMix>0 ? channelsToMix : 1)]; + bytesPerSample = 2*(channelsToMix>0 ? channelsToMix : 1); + byte_buf = new byte[chunk*bytesPerSample]; + } + + public int readInto(ByteBuffer buf, int offset, int len) throws IOException { + return in.read(buf.array(), offset, len); } /** Returns a Task which copies samples as doubles into the given * buffer between the given positions. */ public Task reader(final double [] dbuf, final int off, final int len) { - setChunkSize(len); + setBlockSize(len); if (in!=null) setByteBuffer(); return new AnonymousTask() { public void run() throws Exception { - int n = 0; + synchronized (FileSource.this) { + // loop until len samples copied into dbuf + int rem=len, pos=off; + while (rem>0) { + int bytesRead = in.read(byte_buf, 0, rem*bytesPerSample); + if (bytesRead > 0) { // append this chunk to output + int count=bytesRead/bytesPerSample; + if (channelsToMix>0) { + Util.shortToDoubleMixDown(byte_buf,dbuf,pos,count,channelsToMix); + } else { + Util.shortToDouble(byte_buf,dbuf,pos,count); + } + pos+=count; rem-=count; + } else if (it!=null) next(); // next file if there is one + else if (!loop) throw new EOFException(); // not looping and no more files + else reopen(); // back to first file - synchronized (FileSource.this) { - int blen = byte_buf.length; - while (n < blen) { - int count = in.read(byte_buf, n, blen - n); - if (count > 0) n+=count; - else if (it!=null) next(); - else if (!loop) throw new EOFException(); - else reopen(); + // if (rem>0) Shell.trace("Read "+bytesRead+" bytes, need "+rem+" more samples."); } } - if (channelsToMix>0) Util.shortToDoubleMixDown(byte_buf,dbuf,off,len,channelsToMix); - else Util.shortToDouble(byte_buf,dbuf,off,len); } }; } @@ -228,25 +259,29 @@ /** Returns a Task which copies samples as floats into the given * buffer between the given positions. */ public Task reader(final float [] dbuf, final int off, final int len) { - setChunkSize(len); + setBlockSize(len); if (in!=null) setByteBuffer(); return new AnonymousTask() { public synchronized void run() throws Exception { - int n = 0; - synchronized (FileSource.this) { - int blen = byte_buf.length; - while (n < blen) { - int count = in.read(byte_buf, n, blen - n); - if (count > 0) n+=count; - else if (it!=null) next(); + // loop until len samples copied into dbuf + int rem=len, pos=off; + while (rem>0) { + int bytesRead = in.read(byte_buf, 0, rem*bytesPerSample); + if (bytesRead > 0) { + int count=bytesRead/bytesPerSample; + if (channelsToMix>0) { + Util.shortToFloatMixDown(byte_buf,dbuf,pos,count,channelsToMix); + } else { + Util.shortToFloat(byte_buf,dbuf,pos,count); + } + pos+=count; rem-=count; + } else if (it!=null) next(); else if (!loop) throw new EOFException(); else reopen(); } } - if (channelsToMix>0) Util.shortToFloatMixDown(byte_buf,dbuf,off,len,channelsToMix); - else Util.shortToFloat(byte_buf,dbuf,off,len); } }; } @@ -318,26 +353,33 @@ private static AudioInputStream convertFormat(AudioInputStream sin, AudioFormat fin, AudioFormat fout) throws Exception { - if (fin==fout) return sin; + Shell.trace("\nconvertFormat:"); + Shell.trace(" | source: "+fin.toString()); + Shell.trace(" | target: "+fout.toString()); + + if (fin.equals(fout)) return sin; else if (fin.getEncoding()==AudioFormat.Encoding.PCM_SIGNED) { - try { return AudioSystem.getAudioInputStream(fout,sin); } + try { + Shell.trace(" | Trying direct (PCM) from "+fin.getEncoding().toString()); + return AudioSystem.getAudioInputStream(fout,sin); + } catch (IllegalArgumentException ex) { Shell.trace("Direct conversion failed"); } AudioFormat fint = new AudioFormat( // PCM fout.getSampleRate(), fout.getSampleSizeInBits(), fin.getChannels(), true, fout.isBigEndian()); - Shell.trace("Trying PCM conversion via "+fint.toString()); + Shell.trace(" | Trying PCM conversion via "+fint.toString()); return AudioSystem.getAudioInputStream(fout,AudioSystem.getAudioInputStream(fint,sin)); } else { // First, check for MP3 - if so, cannot convert number of channels if (fin.getChannels()==fout.getChannels() && fin.getSampleRate()==fout.getSampleRate()) { - Shell.trace("Trying direct decoding from "+fin.getEncoding().toString()); + Shell.trace(" | Trying decoding from "+fin.getEncoding().toString()); return AudioSystem.getAudioInputStream(fout,sin); } else { AudioFormat fint = new AudioFormat( fin.getSampleRate(), fout.getSampleSizeInBits(), fin.getChannels(), true, fout.isBigEndian()); - Shell.trace("Trying conversion via "+fint.toString()); + Shell.trace(" | Trying recursive via "+fint.toString()); return convertFormat(AudioSystem.getAudioInputStream(fint,sin),fint,fout); } }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/samer/audio/FileSource2.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,287 @@ +/* + * FileSource2.java + * + * Copyright (c) 2000, Samer Abdallah, King's College London. + * All rights reserved. + * + * This software is provided AS iS and WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ + +package samer.audio; + +import samer.core.*; +import samer.core.types.*; +import samer.core.util.*; +import samer.tools.*; +import javax.sound.sampled.*; +import javax.swing.*; +import java.io.*; +import java.util.*; +import java.nio.ByteBuffer; + +/** + An AudioSource that read from multiple audio files. Can read any + format for which the appropriate JavaSound plug-in is installed on + your system, eg WAV, AU, MP3, OGG. The implementation of + AudioSource.reader() returns a Task which gets samples from the audio + files, going through the play list one by one. + An EOFException is thrown if an attempt is made + to read beyond the end of the last file. + + FileSource2 is a Viewable called "playlist", and an Agent with commands + next, view. + +*/ + +public class FileSource2 extends Viewable implements AudioSource, Agent +{ + List<File> list=null; + ListIterator<File> it=null; + int channelsToMix; + File curFile=null; + InputStream in=null; + AudioFormat targetFormat=null; + byte[] byte_buf=null; + int chunk=0, bytesPerSample=0; + + /** + * Construct a FileSource2. + */ + public FileSource2(AudioFormat targetFormat, List<File> files) + { + super("playlist"); + + setAgent(this); + Shell.registerViewable(this); + this.targetFormat=targetFormat; + this.list=files; + it=list.listIterator(); + } + + // AudioSource interface methods + public void dispose() { + close(); + Shell.deregisterViewable(this); + } + + public int getChannels() { return targetFormat.getChannels(); } + public float getRate() { return targetFormat.getFrameRate(); } + + /** Returns current file */ + public File getFile() { return curFile; } + + /** The requested audio format. **/ + public AudioFormat getTargetFormat() { return targetFormat; } + + /** Set playlist to all WAV files in given directory */ + public static List<File> directory(File dir, String ext) { + return Arrays.asList(dir.listFiles(getFileFilter(ext))); + } + + public synchronized List<File> getPlaylist() { return list; } + + /** Move to head of next file in playlist */ + public synchronized void next() throws Exception + { + boolean wasOpen=isOpen(); + + if (wasOpen) close(); + if (!it.hasNext()) throw new EOFException(); + curFile=it.next(); + if (wasOpen) openCurrent(); + } + + public boolean isOpen() { return in!=null; } + + /** Closes current input stream */ + public synchronized void close() { + try { + if (in!=null) { + Shell.trace("Closing audio stream..."); + in.close(); in=null; byte_buf=null; + } + } + catch (IOException ex) {} + } + + /** Opens the playlist starting with the first file. */ + public synchronized void open() throws Exception { + it=list.listIterator(); next(); + if (!isOpen()) openCurrent(); + } + + /** Opens the current file. Next read will returns samples + * from head of given file. If setFormat() was called previously, then + * we will attempt to do format conversion. */ + private synchronized void openCurrent() throws Exception + { + File file=curFile; + Shell.trace("\nFileSource:Opening audio file "+file); + + AudioInputStream ain=AudioSystem.getAudioInputStream(file); + + // convert to target format if required + if (targetFormat==null) { + AudioFormat fin=ain.getFormat(); + ain=convertFormat(new AudioFormat( fin.getSampleRate(), 16, fin.getChannels(), true, false), ain); + } else { + ain=convertFormat(targetFormat, ain); + } + bytesPerSample=ain.getFormat().getSampleSizeInBits()/8; + if (bytesPerSample!=2) throw new Exception("Must be 16 bits per sample"); + + in = new BufferedInputStream(ain,64*1024); + + // If we have a reader task, then update the byte buffer + if (chunk>0) setByteBuffer(); + } + + /** Returns number of bytes available in current file */ + public int available() throws Exception { return in.available(); } + + private void setBlockSize(int s) { chunk=s; } + private void setByteBuffer() { + byte_buf = new byte[chunk*bytesPerSample]; + } + + public int readInto(ByteBuffer buf, int offset, int len) throws IOException { + return in.read(buf.array(), offset, len); + } + + /** Returns a Task which copies samples as doubles into the given + * buffer between the given positions. */ + public Task reader(final double [] dbuf, final int off, final int len) { + setBlockSize(len); + if (in!=null) setByteBuffer(); + + return new AnonymousTask() { + public void run() throws Exception { + synchronized (FileSource2.this) { + // loop until len samples copied into dbuf + int rem=len, pos=off; + while (rem>0) { + int bytesRead = in.read(byte_buf, 0, rem*bytesPerSample); + if (bytesRead > 0) { // append this chunk to output + int count=bytesRead/bytesPerSample; + Util.shortToDouble(byte_buf,dbuf,pos,count); + pos+=count; rem-=count; + } else if (it!=null) next(); // next file if there is one + else throw new EOFException(); // not looping and no more files + } + } + } + }; + } + + /** Returns a Task which copies samples as floats into the given + * buffer between the given positions. */ + public Task reader(final float [] dbuf, final int off, final int len) { + setBlockSize(len); + if (in!=null) setByteBuffer(); + + return new AnonymousTask() { + public synchronized void run() throws Exception { + synchronized (FileSource2.this) { + // loop until len samples copied into dbuf + int rem=len, pos=off; + while (rem>0) { + int bytesRead = in.read(byte_buf, 0, rem*bytesPerSample); + if (bytesRead > 0) { + int count=bytesRead/bytesPerSample; + Util.shortToFloat(byte_buf,dbuf,pos,count); + pos+=count; rem-=count; + } else if (it!=null) next(); + else throw new EOFException(); + } + } + } + }; + } + + // Agent + public void getCommands(Agent.Registry r) { + r.add("next").add("view"); + } + + public void execute(String cmd, Environment env) throws Exception { + if (cmd.equals("next")) next(); + else if (cmd.equals("view")) { + if (list!=null) { + Shell.expose( + new JScrollPane(new JList(list.toArray())), + "playlist"); + } + } + } + + // Viewable + public Viewer getViewer() { return new FileSourceViewer(); } + class FileSourceViewer extends DefaultViewer implements Agent { + public FileSourceViewer() { + super(FileSource2.this); + //add(curFile); + add(Shell.createButtonsFor(this)); + } + + public void getCommands(Agent.Registry r) { + r.add("next").add("view"); + } + public void execute(String cmd, Environment env) throws Exception { + FileSource2.this.execute(cmd,env); + } + }; + + private static java.io.FileFilter getFileFilter(final String ext) { + return new java.io.FileFilter() { + public boolean accept(File file) { + return file.getName().toLowerCase().endsWith(ext); + } + }; + } + + private static AudioInputStream convertVia(AudioFormat fout, AudioInputStream sin, AudioFormat fint) throws Exception + { + Shell.trace(" | Trying recursive via "+fint.toString()); + AudioInputStream sint=AudioSystem.getAudioInputStream(fint,sin); + Shell.trace(" | Obtained "+sint.getFormat().toString()); + return convertFormat(fout, sint); + } + + private static AudioInputStream convertFormat(AudioFormat fout, AudioInputStream sin) throws Exception + { + AudioFormat fin=sin.getFormat(); + + if (fin.equals(fout)) return sin; + + Shell.trace("\nconvertFormat:"); + Shell.trace(" | source: "+fin.toString()); + Shell.trace(" | target: "+fout.toString()); + + if (fin.getEncoding()!=AudioFormat.Encoding.PCM_SIGNED) { + // first get into PCM encoding, then try recursive + try { + return convertVia( fout, sin, new AudioFormat( + fin.getSampleRate(), fout.getSampleSizeInBits(), + fin.getChannels(), true, fout.isBigEndian())); + } catch (IllegalArgumentException ex) { + Shell.trace("Direct conversion failed"); + } + return convertVia( fout, sin, new AudioFormat( + fin.getSampleRate(), fin.getSampleSizeInBits(), + fin.getChannels(), true, fout.isBigEndian())); + } + + if (fin.getChannels()!=fout.getChannels() || fin.getSampleSizeInBits()!=fout.getSampleSizeInBits()) { + // convert these before doing any sample rate conversion + return convertVia(fout, sin, new AudioFormat( + fin.getSampleRate(), fout.getSampleSizeInBits(), + fout.getChannels(), true, fout.isBigEndian())); + } + + // the only thing left is sample rate + return AudioSystem.getAudioInputStream(fout,sin); + } +} +
--- a/src/samer/audio/LineSource.java Tue Jan 17 17:50:20 2012 +0000 +++ b/src/samer/audio/LineSource.java Fri Apr 05 16:26:00 2019 +0100 @@ -38,6 +38,9 @@ super("linein"); line=l; fmt=f; } + public int getChannels() { return fmt.getChannels(); } + public float getRate() { return fmt.getFrameRate(); } + public AudioFormat getFormat() { return fmt; } public void setBufferSize(int b) { bufsize=b; } public DataLine getLine() { return line; }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/samer/audio/MultiFileAudioStream.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,226 @@ +/* + * FileSource.java + * + * Copyright (c) 2000, Samer Abdallah, King's College London. + * All rights reserved. + * + * This software is provided AS iS and WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ + +package samer.audio; + +import samer.core.*; +import samer.core.types.*; +import samer.core.util.*; +import samer.tools.*; +import javax.sound.sampled.*; +import javax.swing.*; +import java.io.*; +import java.util.*; +import java.nio.ByteBuffer; + +/** +*/ + + +public abstract class MultiFileAudioStream extends InputStream +{ + List<File> list=null; + ListIterator<File> it=null; + int channelsToMix; + File curFile=null; + InputStream in=null; + AudioFormat format=null, inFormat=null; + boolean loop=false; + + /** + * Construct a FileSource initialised with current file and loop initialised + * from the current Environment. No exception is thrown if the current file + * cannot be opened, however, you must be sure to set it to a valid file + * (or to set a playlist) before trying to read any samples. + */ + public MultiFileAudioStream(AudioFormat target, List<File> files) + { + list=files; + format=target; + } + + public AudioFormat getFormat() { return format; } + + /** Set playlist to all WAV files in given directory */ + public List<File> directory(File dir, String ext) { + return Arrays.asList(dir.listFiles(getFileFilter(ext))); + } + + private static java.io.FileFilter getFileFilter(final String ext) { + return new java.io.FileFilter() { + public boolean accept(File file) { + return file.getName().toLowerCase().endsWith(ext); + } + }; + } + + public synchronized List<File> getPlaylist() { return list; } + + /** Go back to start of playlist. Next block of samples will be from head + * of first file in playlist. Will throw an exception if there is no playlist */ + public synchronized void rewind() throws IOException { + it=list.listIterator(); next(); + } + + /** Move to head of next file in playlist */ + public synchronized void next() throws IOException + { + boolean wasOpen=isOpen(); + + if (wasOpen) close(); + if (!it.hasNext()) { + if (!loop) throw new EOFException(); + it=list.listIterator(); + if (!it.hasNext()) throw new IOException("no files in playlist"); + } + curFile=it.next(); + if (wasOpen) openCurrent(); + } + + /** Move to head of previous file in playlist */ + public synchronized void prev() throws Exception + { + boolean wasOpen=isOpen(); + if (wasOpen) close(); + if (!it.hasPrevious()) { + if (!loop) throw new EOFException(); + it=list.listIterator(list.size()); + if (!it.hasPrevious()) throw new Exception("no files in playlist"); + } + curFile=it.previous(); + if (wasOpen) openCurrent(); + } + + public boolean isOpen() { return in!=null; } + + /** Closes current input stream */ + public synchronized void close() { + try { + if (in!=null) { + Shell.trace("Closing audio stream..."); + in.close(); in=null; + } + } + catch (IOException ex) {} + } + + /** Opens the playlist starting with the first file. */ + public synchronized void open() throws Exception { rewind(); if (!isOpen()) openCurrent(); } + + /** Opens the current file. Next read will returns samples + * from head of given file. If setFormat() was called previously, then + * we will attempt to do format conversion. */ + private synchronized void openCurrent() throws IOException + { + try { + File file=curFile; + Shell.trace("\nFileSource:Opening audio file "+file); + + AudioInputStream s=AudioSystem.getAudioInputStream(file); + AudioFormat fmt1, af=s.getFormat(); + + Shell.trace(" format: "+af); + + // convert to target format if required + if (format!=null) { + if (!format.equals(af)) { + Shell.trace(" converting to "+format); + if (af.getChannels()>format.getChannels()) { + int frameSize = af.getChannels()*format.getSampleSizeInBits()/8; + Shell.trace(" channels mix down required."); + fmt1 = new AudioFormat( format.getEncoding(), format.getSampleRate(), + format.getSampleSizeInBits(), + af.getChannels(), frameSize, format.getFrameRate(), format.isBigEndian()); + + channelsToMix = af.getChannels(); + } else { + channelsToMix = 0; + fmt1=format; + } + Shell.trace(" converting via "+fmt1); + s=convertFormat(s,af,fmt1); + inFormat = fmt1; + } else { + Shell.trace(" no formation conversion required"); + channelsToMix = 0; + inFormat = af; + } + } else { + Shell.trace(" using stream native format"); + channelsToMix = 0; + inFormat = af; + } + in=s; + } + catch (Exception ex) { throw new IOException("Failed to open audio file"); } + } + + /** Returns number of bytes available in current file */ + public int available() { + try { + return in.available(); + } + catch (Exception ex) { return 0; } + } + + /** Returns a Task which copies samples as doubles into the given + * buffer between the given positions. */ + public int read(byte [] buf, int off, int len) throws IOException { + + // loop until len samples copied into dbuf + int rem=len, pos=off; + while (rem>0) { + int chunk = in.read(buf, pos, rem); + if (chunk > 0) { // append this chunk to output + pos+=chunk; rem-=chunk; + } else if (it!=null) next(); // next file if there is one + else if (!loop) throw new EOFException(); // not looping and no more files + else rewind(); // back to first file + } + return len; + } + + + private static AudioInputStream convertFormat(AudioInputStream sin, AudioFormat fin, AudioFormat fout) throws Exception + { + Shell.trace("\nconvertFormat:"); + Shell.trace(" | source: "+fin.toString()); + Shell.trace(" | target: "+fout.toString()); + + if (fin.equals(fout)) return sin; + else if (fin.getEncoding()==AudioFormat.Encoding.PCM_SIGNED) { + try { + Shell.trace(" | Trying direct (PCM) from "+fin.getEncoding().toString()); + return AudioSystem.getAudioInputStream(fout,sin); + } + catch (IllegalArgumentException ex) { Shell.trace("Direct conversion failed"); } + + AudioFormat fint = new AudioFormat( // PCM + fout.getSampleRate(), fout.getSampleSizeInBits(), + fin.getChannels(), true, fout.isBigEndian()); + Shell.trace(" | Trying PCM conversion via "+fint.toString()); + return AudioSystem.getAudioInputStream(fout,AudioSystem.getAudioInputStream(fint,sin)); + } else { + // First, check for MP3 - if so, cannot convert number of channels + if (fin.getChannels()==fout.getChannels() && fin.getSampleRate()==fout.getSampleRate()) { + Shell.trace(" | Trying decoding from "+fin.getEncoding().toString()); + return AudioSystem.getAudioInputStream(fout,sin); + } else { + AudioFormat fint = new AudioFormat( + fin.getSampleRate(), fout.getSampleSizeInBits(), + fin.getChannels(), true, fout.isBigEndian()); + Shell.trace(" | Trying recursive via "+fint.toString()); + return convertFormat(AudioSystem.getAudioInputStream(fint,sin),fint,fout); + } + } + } +} +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/samer/audio/StreamSource.java Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,202 @@ +/* + * StreamSource.java + * + * Copyright (c) 2000, Samer Abdallah, King's College London. + * All rights reserved. + * + * This software is provided AS iS and WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ + +package samer.audio; + +import samer.core.*; +import samer.core.types.*; +import samer.core.util.*; +import samer.tools.*; +import javax.sound.sampled.*; +import javax.swing.*; +import java.io.*; +import java.net.URL; +import java.util.*; + +/** + An AudioSource that read from an input stream. Can read any + format for which the appropriate JavaSound plug-in is installed on + your system, eg WAV, AU, MP3, OGG. The implementation of + AudioSource.reader() returns a Task which gets samples from the audio + files, going through the play list one by one. If the loop flag + is true, then samples are returned indefinitely by looping through the + playlist; otherwise, an EOFException is thrown if an attempt is made + to read beyond the end of the last file. + + Properties read from current environment: + <dl> + <dt>current<dd>Current file (String) + <dt>loop<dd>Loop playlist? (Boolean) [true] + </dl> + +*/ + +public class StreamSource implements AudioSource +{ + int channelsToMix; + AudioInputStream source; + InputStream in=null; + AudioFormat format=null; + byte[] byte_buf=null; + int chunk=0; + + /** + * Construct a StreamSource initialised with current file and loop initialised + * from the current Environment. No exception is thrown if the current file + */ + public StreamSource(AudioInputStream s) throws Exception { source=s; } + public StreamSource(InputStream s) throws Exception { source=AudioSystem.getAudioInputStream(s); } + public StreamSource(File file) throws Exception { source=AudioSystem.getAudioInputStream(file); } + public StreamSource(URL url) throws Exception { source=AudioSystem.getAudioInputStream(url); } + + public void dispose() { close(); } + + /** Returns current file */ + public void setTargetFormat(AudioFormat f) { format=f; } + + public AudioFormat getFormat() { return format; } + + public boolean isOpen() { return in!=null; } + + /** Closes current input stream */ + public synchronized void close() { + try { + if (in!=null) { + Shell.trace("Closing audio stream..."); + in.close(); in=null; byte_buf=null; + } + } + catch (IOException ex) {} + } + + /** Opens the playlist starting with the first file. */ + public synchronized void open() throws Exception { if (!isOpen()) openCurrent(); } + + /** Opens the current file. Next read will returns samples + * from head of given file. If setFormat() was called previously, then + * we will attempt to do format conversion. */ + private synchronized void openCurrent() throws Exception + { + AudioInputStream s=source; + AudioFormat fmt1, af=s.getFormat(); + + Shell.trace(" format: "+af); + + // convert to target format if required + if (format!=null) { + if (!format.equals(af)) { + Shell.trace(" converting to "+format); + if (af.getChannels()>format.getChannels()) { + Shell.trace(" channels mix down required."); + fmt1 = new AudioFormat( format.getEncoding(), format.getSampleRate(), + format.getSampleSizeInBits(), + af.getChannels(), format.getFrameSize(), format.getFrameRate(), format.isBigEndian()); + + channelsToMix = af.getChannels(); + } else { + channelsToMix = 0; + fmt1=format; + } + s=convertFormat(s,af,fmt1); + } + } + + // If we have a reader task, then update the byte buffer + if (chunk>0) setByteBuffer(); + + // Shell.trace("stream format: "+s.getFormat()); + in = new BufferedInputStream(s,64*1024); + } + + /** Returns number of bytes available in current file */ + public int available() throws Exception { return in.available(); } + + private void setChunkSize(int s) { chunk=s; } + private void setByteBuffer() { + byte_buf = new byte[2*chunk*(channelsToMix>0 ? channelsToMix : 1)]; + } + + /** Returns a Task which copies samples as doubles into the given + * buffer between the given positions. */ + public Task reader(final double [] dbuf, final int off, final int len) { + setChunkSize(len); + if (in!=null) setByteBuffer(); + + return new AnonymousTask() { + public void run() throws Exception { + int n = 0; + + synchronized (StreamSource.this) { + int blen = byte_buf.length; + while (n < blen) { + int count = in.read(byte_buf, n, blen - n); + if (count > 0) n+=count; + else throw new EOFException(); + } + } + if (channelsToMix>0) Util.shortToDoubleMixDown(byte_buf,dbuf,off,len,channelsToMix); + else Util.shortToDouble(byte_buf,dbuf,off,len); + } + }; + } + + /** Returns a Task which copies samples as floats into the given + * buffer between the given positions. */ + public Task reader(final float [] dbuf, final int off, final int len) { + setChunkSize(len); + if (in!=null) setByteBuffer(); + + return new AnonymousTask() { + public synchronized void run() throws Exception { + int n = 0; + + synchronized (StreamSource.this) { + int blen = byte_buf.length; + while (n < blen) { + int count = in.read(byte_buf, n, blen - n); + if (count > 0) n+=count; + else throw new EOFException(); + } + } + if (channelsToMix>0) Util.shortToFloatMixDown(byte_buf,dbuf,off,len,channelsToMix); + else Util.shortToFloat(byte_buf,dbuf,off,len); + } + }; + } + + private static AudioInputStream convertFormat(AudioInputStream sin, AudioFormat fin, AudioFormat fout) throws Exception + { + if (fin.equals(fout)) return sin; + else if (fin.getEncoding()==AudioFormat.Encoding.PCM_SIGNED) { + try { return AudioSystem.getAudioInputStream(fout,sin); } + catch (IllegalArgumentException ex) { Shell.trace("Direct conversion failed"); } + + AudioFormat fint = new AudioFormat( // PCM + fout.getSampleRate(), fout.getSampleSizeInBits(), + fin.getChannels(), true, fout.isBigEndian()); + Shell.trace("Trying PCM conversion via "+fint.toString()); + return AudioSystem.getAudioInputStream(fout,AudioSystem.getAudioInputStream(fint,sin)); + } else { + // First, check for MP3 - if so, cannot convert number of channels + if (fin.getChannels()==fout.getChannels() && fin.getSampleRate()==fout.getSampleRate()) { + Shell.trace("Trying direct decoding from "+fin.getEncoding().toString()); + return AudioSystem.getAudioInputStream(fout,sin); + } else { + AudioFormat fint = new AudioFormat( + fin.getSampleRate(), fout.getSampleSizeInBits(), + fin.getChannels(), true, fout.isBigEndian()); + Shell.trace("Trying conversion via "+fint.toString()); + return convertFormat(AudioSystem.getAudioInputStream(fint,sin),fint,fout); + } + } + } +} +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/samer/audio/StreamSource.java.old Fri Apr 05 16:26:00 2019 +0100 @@ -0,0 +1,113 @@ +/* + * FileSource.java + * + * Copyright (c) 2000, Samer Abdallah, King's College London. + * All rights reserved. + * + * This software is provided AS iS and WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ + +package samer.audio; + +import samer.core.*; +import samer.tools.*; +import javax.sound.sampled.*; +import java.io.*; + +/** + A lightweight AudioSource that reads from a single Stream. + Any format for which the appropriate JavaSound plug-in is installed on + your system, eg WAV, AU, MP3, OGG. The implementation of +*/ + +public class StreamSource implements AudioSource +{ + InputStream in=null; + AudioFormat format=null; + + /** + * Construct a FileSource initialised with current file and loop initialised + * from the current Environment. No exception is thrown if the current file + * cannot be opened, however, you must be sure to set it to a valid file + * (or to set a playlist) before trying to read any samples. + */ + public StreamSource(InputStream in) throws Exception { open(in); } + public StreamSource(InputStream in, AudioFormat f) throws Exception { format=f; open(in); } + public StreamSource(AudioFormat f) { format=f; } + + public void dispose() { close(); } + public void setTargetFormat(AudioFormat f) { format=f; } + + /** Returns number of bytes available in current file */ + public int available() throws Exception { return in.available(); } + + + /** Allows reading from any given InputStream, but does not affect + * current file or playlist. */ + public synchronized void open(InputStream s) throws Exception { + open(AudioSystem.getAudioInputStream(s)); + } + + public synchronized void open(AudioInputStream s) throws Exception + { + Shell.trace("stream format: "+s.getFormat()); + Shell.trace("file format: "+s.getFormat()); + + // in = new BufferedInputStream(s,16*1024); + // convert to target format if required + in=s; + if (format!=null) { + Shell.trace("Converting to "+format); + in=AudioSystem.getAudioInputStream(format,s); + } + } + + /** Closes current input stream */ + public synchronized void close() { + try { if (in!=null) in.close(); in=null; } + catch (IOException ex) {} + } + + /** Returns a Task which copies samples as doubles into the given + * buffer between the given positions. */ + public Task reader(final double [] dbuf, final int off, final int len) { + return new AnonymousTask() { + int blen=2*len; + byte [] bbuf = new byte[blen]; + + public void run() throws Exception { + int n = 0; + + while (n < blen) { + int count = in.read(bbuf, n, blen - n); + if (count > 0) n+=count; + else throw new EOFException(); + } + Util.shortToDouble(bbuf,dbuf,off,len); + } + }; + } + + /** Returns a Task which copies samples as floats into the given + * buffer between the given positions. */ + public Task reader(final float [] dbuf, final int off, final int len) { + return new AnonymousTask() { + int blen=2*len; + byte [] bbuf = new byte[blen]; + + public synchronized void run() throws Exception { + int n = 0; + + while (n < blen) { + int count = in.read(bbuf, n, blen - n); + if (count > 0) n+=count; + else throw new EOFException(); + } + Util.shortToFloat(bbuf,dbuf,off,len); + } + }; + } +} +
--- a/src/samer/audio/VLine.java Tue Jan 17 17:50:20 2012 +0000 +++ b/src/samer/audio/VLine.java Fri Apr 05 16:26:00 2019 +0100 @@ -104,6 +104,7 @@ setText(getLabel()); if (Shell.getBoolean("meter",true)) { + this.line = line; Shell.push("meter"); meter = new Meter(); meter.getMap().setDomain(0,line.getBufferSize());
--- a/src/samer/core_/CVS/Entries Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -/Agent.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/CompoundAgent.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/DoubleFormat.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/Environment.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/Node.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/NumberSink.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/NumberViewer.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/Registry.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/Saveable.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/Saver.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/Shell.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/Variable.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/Viewable.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/Viewer.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/X.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -D/shells//// -D/types//// -D/util//// -D/viewers////
--- a/src/samer/core_/CVS/Repository Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -/cvsroot/jslab/src/samer/core_
--- a/src/samer/core_/CVS/Root Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -:ext:samer@dspmac1.elec.qmul.ac.uk:/cvsroot
--- a/src/samer/core_/Shell.java Tue Jan 17 17:50:20 2012 +0000 +++ b/src/samer/core_/Shell.java Fri Apr 05 16:26:00 2019 +0100 @@ -431,7 +431,7 @@ { private PrintWriter writer=null; private PrintWriter stdout=new PrintWriter(System.out,true); // with autoflush - private PrintWriter stderr=new PrintWriter(System.err); // without autoflush + private PrintWriter stderr=new PrintWriter(System.err,true); // with autoflush // DefaultShell() { trace("creating DefaultShell"); }
--- a/src/samer/core_/shells/CVS/Entries Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -/AWTShell.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/DesktopShell.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -/SwingShell.java/1.1.1.1/Fri Dec 10 03:29:25 2004// -D
--- a/src/samer/core_/shells/CVS/Repository Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -/cvsroot/jslab/src/samer/core_/shells
--- a/src/samer/core_/shells/CVS/Root Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -:ext:samer@dspmac1.elec.qmul.ac.uk:/cvsroot
--- a/src/samer/core_/types/CVS/Entries Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -/DoubleModel.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/VBoolean.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/VColor.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/VDouble.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/VFile.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/VInteger.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/VParameter.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/VRectangle.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/VString.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -D
--- a/src/samer/core_/types/CVS/Repository Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -/cvsroot/jslab/src/samer/core_/types
--- a/src/samer/core_/types/CVS/Root Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -:ext:samer@dspmac1.elec.qmul.ac.uk:/cvsroot
--- a/src/samer/core_/util/CVS/Entries Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -/AgentAdapter.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/BaseViewer.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/ConsoleEnvironment.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/DefaultViewer.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/FileFilter.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/FilteredEnvironment.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/HashMap.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/IMap.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/LinearMap.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/LogMap.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/MouseRetarget.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/StackLayout.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/Tools.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/UserEnvironment.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/VLayout.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/VMap.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/VariableViewer.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -D/heavy//// -D/light//// -D/shell//// -D/swing//// -/Properties.java/1.2/Mon Oct 9 21:16:17 2006//
--- a/src/samer/core_/util/CVS/Repository Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -/cvsroot/jslab/src/samer/core_/util
--- a/src/samer/core_/util/CVS/Root Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -:ext:samer@dspmac1.elec.qmul.ac.uk:/cvsroot
--- a/src/samer/core_/util/heavy/CVS/Entries Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ -/Border.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/Borders.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/ButtonBar.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/CommandField.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/Dialog.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/Frame.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/JPanel.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/MenuBuilder.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/Meter.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/NumberViewer.java.not/1.1.1.1/Fri Dec 10 03:29:26 2004// -/PopupHandler.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/TextualNumberViewer.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/VCanvas.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/VPanel.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/Console.java/1.2/Mon Oct 9 21:16:17 2006// -D
--- a/src/samer/core_/util/heavy/CVS/Repository Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -/cvsroot/jslab/src/samer/core_/util/heavy
--- a/src/samer/core_/util/heavy/CVS/Root Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -:ext:samer@dspmac1.elec.qmul.ac.uk:/cvsroot
--- a/src/samer/core_/util/shell/CVS/Entries Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -/AgentManager.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/AppShellBase.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/ViewableManager.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -D
--- a/src/samer/core_/util/shell/CVS/Repository Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -/cvsroot/jslab/src/samer/core_/util/shell
--- a/src/samer/core_/util/shell/CVS/Root Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -:ext:samer@dspmac1.elec.qmul.ac.uk:/cvsroot
--- a/src/samer/core_/util/swing/CVS/Entries Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -/ButtonBar.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/CommandField.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/DarkMetalTheme.java/1.1.1.1/Fri Dec 10 03:29:26 2004// -/Dialog.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/DynamicPopupHandler.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Frame.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/InternalFrame.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/LED.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/MenuBuilder.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Meter.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/PopupHandler.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/SilkyMetalTheme.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/TextualNumberViewer.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/VPanel.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Console.java/1.2/Mon Oct 9 21:16:17 2006// -/VCanvas.java/1.1.1.1/Mon Aug 15 18:36:19 2005// -D
--- a/src/samer/core_/util/swing/CVS/Repository Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -/cvsroot/jslab/src/samer/core_/util/swing
--- a/src/samer/core_/util/swing/CVS/Root Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -:ext:samer@dspmac1.elec.qmul.ac.uk:/cvsroot
--- a/src/samer/core_/viewers/CVS/Entries Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -/BooleanViewer.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/ColorButton.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/ColorSwatch.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/ColorViewer.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/DoubleViewer.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/FileViewer.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/IntegerViewer.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/NumberViewer.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/ParameterViewer.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/StringViewer.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -D/swing////
--- a/src/samer/core_/viewers/CVS/Repository Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -/cvsroot/jslab/src/samer/core_/viewers
--- a/src/samer/core_/viewers/CVS/Root Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -:ext:samer@dspmac1.elec.qmul.ac.uk:/cvsroot
--- a/src/samer/core_/viewers/swing/CVS/Entries Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -/BooleanViewer.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/ColorButton.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/ColorChooserViewer.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/ColorViewer.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/DoubleViewer.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/FileChooserViewer.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/FileViewer.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/IntegerViewer.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/NumberViewer.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/ParameterViewer.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/StringViewer.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -D
--- a/src/samer/core_/viewers/swing/CVS/Repository Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -/cvsroot/jslab/src/samer/core_/viewers/swing
--- a/src/samer/core_/viewers/swing/CVS/Root Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -:ext:samer@dspmac1.elec.qmul.ac.uk:/cvsroot
--- a/src/samer/functions/CVS/Entries Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/Abs.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Add.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Atanh.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/BiLaplacian.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/BiLaplacianBlend.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/CauchyInfomax.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/CompoundFunction.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Exp.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/ExponentialSquashing.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Gamma.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/HalfSquare.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Hamming.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Hanning.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/HybridFunction.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Log.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/LogAbs.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/LogCauchy.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/LogCosh.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/LogGenCosh.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/LogGenExp.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/LogGenExp2.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/LogisiticInfomax.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/LogisticHyperplane.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Negate.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Power.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Quadratic.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/RaleighLogPrior.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Reciprocal.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Scale.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/ScaledFunction.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Sgn.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/SparseExponential.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Sqrt.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Square.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Step.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Tanh.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/ThresholdLog.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/WinnerTakeAll.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -D
--- a/src/samer/functions/CVS/Repository Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -/cvsroot/jslab/src/samer/functions
--- a/src/samer/functions/CVS/Root Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -:ext:samer@dspmac1.elec.qmul.ac.uk:/cvsroot
--- a/src/samer/j3d/CVS/Entries Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -/Axes.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/FPS.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/ImmediateRenderer.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/J3DViewer.java.not/1.1.1.1/Fri Dec 10 03:29:27 2004// -/J3DViewerImmediate.java.not/1.1.1.1/Fri Dec 10 03:29:27 2004// -/J3DViewerMorph.java.not/1.1.1.1/Fri Dec 10 03:29:27 2004// -/MatrixPointArray.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/MatrixPointArrayAlpha.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/MatrixPointArrayRef.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/MatrixPoints4D.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/MonoView.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/MorphPoints.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/PatchArray.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/PatchArrayAlpha.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Patches.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/PatchesAlpha.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Points3D.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Points3DAlpha.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Points3DRef.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Points4D.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Root.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/StereoView.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/Util.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/ViewBase.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/ViewGroup.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -D
--- a/src/samer/j3d/CVS/Repository Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -/cvsroot/jslab/src/samer/j3d
--- a/src/samer/j3d/CVS/Root Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -:ext:samer@dspmac1.elec.qmul.ac.uk:/cvsroot
--- a/src/samer/maths/CVS/Entries Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -/ClippedDivide.java/1.1.1.1/Fri Dec 10 03:29:27 2004// -/ComplexVector.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/Constant.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/Difference.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/Function.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/FunctionMap.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/FunctionOfGenerator.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/FunctionOfVector.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/FunctionPlotter.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/Generator.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/Identity.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/IntArrayEditor.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/IteratorImageSource.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/LineTrace.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/Linear.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/Mat.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/MatEditor.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/Mathx.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/Matrix.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/MatrixAgent.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/MatrixImage.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/MatrixImageSource.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/MatrixImageSourceF.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/MatrixPanel.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/MatrixPlotter.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/MatrixTImageSource.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/MatrixTImageSourceF.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/MatrixTimesVector.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/MatrixTransposeTimesVector.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/Neg.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/Ops.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/Parameter.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/Probe.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/Product.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/RowColumn.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/SparseMatrix.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/Sum.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/VFunction.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/VGenerator.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/VVector.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/Vec.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/VectorEditor.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/VectorFunctionOfVector.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/VectorPlotter.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/VectorPlusEqualsVector.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/VectorTimesEqualsScalar.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/VectorTrace.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/Zero.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -D/opt//// -D/random////
--- a/src/samer/maths/CVS/Repository Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -/cvsroot/jslab/src/samer/maths
--- a/src/samer/maths/CVS/Root Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -:ext:samer@dspmac1.elec.qmul.ac.uk:/cvsroot
--- a/src/samer/maths/opt/CVS/Entries Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -/AbsXFConvergence.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/Condition.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/ConjGrad.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/ConstrainedConjGrad.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/ConstrainedGillMurray.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/ConstrainedMinimiser.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/Constraints.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/CubicLineSearch.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/Datum.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/Functionx.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/GConvergence.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/GillMurray.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/MinimiserBase.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/PolynomialLineSearch.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/Positivity.java/1.1.1.1/Fri Dec 10 03:29:28 2004// -/State.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/SubspaceFunctionx.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/UnconstrainedConjGrad.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/UnconstrainedMinimiser.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/Util.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/XFConvergence.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/ZeroCrossingSparsity.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -D
--- a/src/samer/maths/opt/CVS/Repository Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -/cvsroot/jslab/src/samer/maths/opt
--- a/src/samer/maths/opt/CVS/Root Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -:ext:samer@dspmac1.elec.qmul.ac.uk:/cvsroot
--- a/src/samer/maths/random/CVS/Entries Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -/BaseRandom.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/Binary.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/BinaryVec.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/BipolarUniform.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/BoundedHyperbolic.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/BoundedUniform.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/Brownian.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/Cauchy.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/Exponential.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/Gaussian.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/GeneralisedExponential.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/GeneralisedLaplacian.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/Laplacian.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/Logistic.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/Mixture.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/MixtureVec.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/NormalisedGaussian.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/PosteriorSampler.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/PowerLaw.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/Raleigh.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/RectifiedCauchy.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/RectifiedGaussian.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/RectifiedLogistic.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/SparseMixture.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/Ternary.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/Uniform.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -D
--- a/src/samer/maths/random/CVS/Repository Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -/cvsroot/jslab/src/samer/maths/random
--- a/src/samer/maths/random/CVS/Root Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -:ext:samer@dspmac1.elec.qmul.ac.uk:/cvsroot
--- a/src/samer/mds/CVS/Entries Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -/CorrelationTask.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/CovarianceTask.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/DistanceTask.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/Euclidean.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/GeometricFilter.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/MDS.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/MDSBase.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/Manhatten.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/MatrixBall.java.not/1.1.1.1/Fri Dec 10 03:29:29 2004// -/MatrixPointViewer2.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/Minkowski.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/NewMDS.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/ProximityFilter.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -D
--- a/src/samer/mds/CVS/Repository Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -/cvsroot/jslab/src/samer/mds
--- a/src/samer/mds/CVS/Root Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -:ext:samer@dspmac1.elec.qmul.ac.uk:/cvsroot
--- a/src/samer/midi/CVS/Entries Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -/MidiRecorder.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/MidiRecorderBase.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/MidiSynth.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/MidiWithAftertouch.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -D
--- a/src/samer/midi/CVS/Repository Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -/cvsroot/jslab/src/samer/midi
--- a/src/samer/midi/CVS/Root Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -:ext:samer@dspmac1.elec.qmul.ac.uk:/cvsroot
--- a/src/samer/midi/MidiSynth.java Tue Jan 17 17:50:20 2012 +0000 +++ b/src/samer/midi/MidiSynth.java Fri Apr 05 16:26:00 2019 +0100 @@ -36,9 +36,6 @@ public class MidiSynth extends Viewable implements Agent, Task, Saveable { - VVector in; - Synthesizer synthesizer=null; - protected int n; protected double [] x; protected int [] nnums; @@ -49,7 +46,7 @@ protected VInteger offset; protected VBoolean pedal; - public MidiSynth(VVector input) + public MidiSynth(VVector input, Synthesizer synth) { super("midisynth"); @@ -61,9 +58,9 @@ addAgent(new Saver(this)); Shell.pop(); - in = input; - n = in.size(); - x = in.array(); + n = input.size(); + x = input.array(); + cc = synth.getChannels(); nnums = new int[n]; chans = new int[n]; @@ -85,26 +82,8 @@ }; } - public void open() throws Exception { - if (synthesizer!=null) { Shell.print("already open"); return; } - if ((synthesizer = MidiSystem.getSynthesizer()) == null) { - throw new Exception("getSynthesizer() failed"); - } - Shell.print("opening synthesizer"); - synthesizer.open(); - - cc = synthesizer.getChannels(); - Shell.print("got synth and channel:"+synthesizer+cc); - } - - public void close() { - if (synthesizer != null) { - Shell.print("closing synthesiser"); - synthesizer.close(); - synthesizer = null; - } - } - + public void open() { } + public void close() { } public void dispose() { close(); factor.dispose(); @@ -123,8 +102,6 @@ public void stopping() {} public void run() { - if (synthesizer==null) return; - for (int i=0; i<n; i++) { if (x[i]>0) { cc[chans[i]].noteOn(nnums[i]+offset.value,mapVelocity(x[i]));
--- a/src/samer/midi/MidiWithAftertouch.java Tue Jan 17 17:50:20 2012 +0000 +++ b/src/samer/midi/MidiWithAftertouch.java Fri Apr 05 16:26:00 2019 +0100 @@ -8,17 +8,9 @@ */ package samer.midi; -import samer.core.*; -import samer.core.types.*; -import samer.core.util.heavy.*; -import samer.core.util.*; -import samer.tools.*; import samer.maths.*; -import java.util.*; -import java.io.*; import javax.sound.midi.*; - /** When element crosses threshold upwards: note on When element drops below threshold: note off @@ -39,8 +31,6 @@ public void run() { - if (synthesizer==null) return; - for (int i=0; i<n; i++) { if (x[i]>0) { int vel=mapVelocity(x[i]);
--- a/src/samer/models/CVS/Entries Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -/AlignedGaussian.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/BatchedTrainer.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/Covariance.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/DiffScaler.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/GaussianStats.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/GaussianStatsOnline.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/GeneralisedExponential.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/ICA.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/ICAScalerSync.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/ICAWithScaler.java/1.1.1.1/Fri Dec 10 03:29:29 2004// -/IIDPrior.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/JointHistogramBase.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/MOGModel.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/MOGVector.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/MatrixTrainer.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/Mixture.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/Model.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/NoisyICA.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/Scaler.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/SignalHistogram.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/SmoothGeneralisedExponential.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/SparseICA.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/VarianceICA.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -D/notyet////
--- a/src/samer/models/CVS/Repository Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -/cvsroot/jslab/src/samer/models
--- a/src/samer/models/CVS/Root Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -:ext:samer@dspmac1.elec.qmul.ac.uk:/cvsroot
--- a/src/samer/models/notyet/CVS/Entries Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -/ModelGraph.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/PCA.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -D
--- a/src/samer/models/notyet/CVS/Repository Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -/cvsroot/jslab/src/samer/models/notyet
--- a/src/samer/models/notyet/CVS/Root Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -:ext:samer@dspmac1.elec.qmul.ac.uk:/cvsroot
--- a/src/samer/silk/CVS/Entries Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ -/JavaProcedure.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/SchemeList.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/SilkCompleter.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/SilkFunction.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/SilkObserver.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/SilkTask.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/Terminal.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -D
--- a/src/samer/silk/CVS/Repository Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -/cvsroot/jslab/src/samer/silk
--- a/src/samer/silk/CVS/Root Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -:ext:samer@dspmac1.elec.qmul.ac.uk:/cvsroot
--- a/src/samer/tools/CVS/Entries Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -/AnonymousTask.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/ArrayImageSource.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/ArrayVImageSource.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/ColorRamp.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/CompoundTask.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/ImageSourceBase.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/ImageTrace.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/ImageTraceBase.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/ImageVTrace.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/ImageViewer.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/NamedTask.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/NullTask.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/Plotter.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/RThread.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/RateSchedule.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/Renderer.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/SafeTask.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/ScatterPlot.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/SignalTrace.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/SubrateTask.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/SwitchTask.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/Task.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/TaskLoop.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/TaskTrigger.java.not/1.1.1.1/Fri Dec 10 03:29:30 2004// -/Trace.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/vec2.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -D
--- a/src/samer/tools/CVS/Repository Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -/cvsroot/jslab/src/samer/tools
--- a/src/samer/tools/CVS/Root Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -:ext:samer@dspmac1.elec.qmul.ac.uk:/cvsroot
--- a/src/samer/units/CVS/Entries Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -/Clicker.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/DoubleToStream.java/1.1.1.1/Fri Dec 10 03:29:30 2004// -/DoubleWriter.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/EnergyOperator.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/FFT.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/FFTVector.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/FIRFilter.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/Filter.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/FilterVector.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/FilteredGenerator.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/GenerateDouble.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/GenerateVector.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/Histogram.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/IIRFilter.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/JointHistogram.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/Latch.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/LineIn.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/LineOut.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/Matrices.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/MousePosition.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/NoisyLinearSource.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/OnsetMap.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/Oscillator.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/OverlapAndAdd.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/RescaledIFT.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/SignalWindow.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/SpectralFIR.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/Stacker.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/Stacker2.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/StreamToDouble.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/StreamToVec.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/SumFnVec.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/Trigger.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/VecToDouble.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/VecToStream.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/VecWriter.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -/Wavetable.java/1.1.1.1/Fri Dec 10 03:29:31 2004// -D
--- a/src/samer/units/CVS/Repository Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -/cvsroot/jslab/src/samer/units
--- a/src/samer/units/CVS/Root Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -:ext:samer@dspmac1.elec.qmul.ac.uk:/cvsroot
--- a/src/scheme/audio.scm Tue Jan 17 17:50:20 2012 +0000 +++ b/src/scheme/audio.scm Fri Apr 05 16:26:00 2019 +0100 @@ -23,6 +23,7 @@ ;;; construct DataLine.Info. args = (format [bufsize]) (define (_dli cl args) (apply javax.sound.sampled.DataLine$Info. (cons cl args))) +(define (_open x) (.open x) x) (define (target-info . args) (_dli javax.sound.sampled.TargetDataLine.class args)) (define (source-info . args) (_dli javax.sound.sampled.SourceDataLine.class args)) @@ -44,14 +45,14 @@ (define-method (linesrc) (linesrc (default-format))) (define-method (linesnk) (linesnk (default-format))) -(define-method (linesrc fmt) (.open (_src (line (target-info fmt)) fmt))) -(define-method (linesnk fmt) (.open (_snk (line (source-info fmt bf)) fmt))) -(define-method (linesrc mx fmt) (.open (_src (line mx (target-info fmt)) fmt))) -(define-method (linesnk mx fmt) (.open (_snk (line mx (source-info fmt)) fmt))) -(define-method (linesrc mx fmt bf) (.open (_sbs bf (_src (line mx (target-info fmt bf)) fmt)))) -(define-method (linesnk mx fmt bf) (.open (_sbs bf (_snk (line mx (source-info fmt bf)) fmt)))) -(define-method (linesrc-buf fmt bf) (.open (_sbs bf (_src (line (target-info fmt bf)) fmt)))) -(define-method (linesnk-buf fmt bf) (.open (_sbs bf (_snk (line (source-info fmt bf)) fmt)))) +(define-method (linesrc fmt) (_open (_src (line (target-info fmt)) fmt))) +(define-method (linesnk fmt) (_open (_snk (line (source-info fmt)) fmt))) +(define-method (linesrc mx fmt) (_open (_src (line mx (target-info fmt)) fmt))) +(define-method (linesnk mx fmt) (_open (_snk (line mx (source-info fmt)) fmt))) +(define-method (linesrc mx fmt bf) (_open (_sbs bf (_src (line mx (target-info fmt bf)) fmt)))) +(define-method (linesnk mx fmt bf) (_open (_sbs bf (_snk (line mx (source-info fmt bf)) fmt)))) +(define-method (linesrc-buf fmt bf) (_open (_sbs bf (_src (line (target-info fmt bf)) fmt)))) +(define-method (linesnk-buf fmt bf) (_open (_sbs bf (_snk (line (source-info fmt bf)) fmt)))) (define filesnk samer.audio.FileSink.) (define streamsrc samer.audio.StreamSource.) @@ -72,7 +73,7 @@ ;;; buffering audio input into frames with a certain hop size (define-method (linein size step) (linein (linesrc) size step)) -(define-method (linein (source samer.audio.AudioSource) size step) +(define-method (linein source size step) (define line (LineIn. source size step)) (put "LineIn" line) (addtask line)
--- a/src/scheme/midi.scm Tue Jan 17 17:50:20 2012 +0000 +++ b/src/scheme/midi.scm Fri Apr 05 16:26:00 2019 +0100 @@ -1,4 +1,5 @@ (import "samer.midi.*") +(import "javax.sound.midi.*") (define (tomidi in) (letrec (
--- a/src/scheme/readline.scm Tue Jan 17 17:50:20 2012 +0000 +++ b/src/scheme/readline.scm Fri Apr 05 16:26:00 2019 +0100 @@ -4,8 +4,9 @@ ; redirect input to readline reader ;(define (set-input-port port) (set! jsint.Scheme.input$ port)) -(define (readline-reader prompt) - (org.gnu.readline.ReadlineReader. prompt +(define jscheme-history ".jscheme_history") +(define (readline-reader prompt) + (org.gnu.readline.ReadlineReader. prompt (java.io.File. jscheme-history) org.gnu.readline.ReadlineLibrary.GnuReadline$)) (org.gnu.readline.Readline.initReadline "jscheme") @@ -14,14 +15,14 @@ (.setInput (jsint.Scheme.currentEvaluator) (jsint.InputPort. current-readline-reader)) (define (set-prompt prompt) (.setPrompt current-readline-reader prompt)) - + ; this seems to stop terminal getting confused after exit (.addShutdownHook (Runtime.getRuntime) - (Thread. (lambda () + (Thread. (lambda () (display "cleaning up readline.\n") + (org.gnu.readline.Readline.writeHistoryFile jscheme-history) (org.gnu.readline.Readline.cleanup)))) - + ; enable completion by looking up words in jscheme's symbol table (org.gnu.readline.Readline.setCompleter (samer.silk.SilkCompleter.)) -(set-prompt ">")
--- a/src/scheme/sockets.scm Tue Jan 17 17:50:20 2012 +0000 +++ b/src/scheme/sockets.scm Fri Apr 05 16:26:00 2019 +0100 @@ -1,9 +1,10 @@ +(load "streams.scm") + (define (make-server) (java.net.ServerSocket. 2000)) (define (accept s) (display "waiting for connection...\n") (.accept s)) (define (connect host) (display "connecting...\n") (java.net.Socket. host 2000)) (define (istream s) (.getInputStream s)) (define (ostream s) (.getOutputStream s)) -(load "streams.scm") (define-method (send (socket java.net.Socket) (x Vec)) (VecToStream. x (buffer (ostream socket))))
--- a/src/scheme/streams.scm Tue Jan 17 17:50:20 2012 +0000 +++ b/src/scheme/streams.scm Fri Apr 05 16:26:00 2019 +0100 @@ -1,3 +1,6 @@ +(import "samer.maths.Vec") +(import "samer.core.types.DoubleModel") + (define (ifstream fn) (java.io.FileInputStream. fn)) (define (ofstream fn) (java.io.FileOutputStream. fn)) (define (fwriter fn) (java.io.FileWriter. fn))
--- a/src/scheme/weird.scm Tue Jan 17 17:50:20 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -(define (sieve n pr) (if (divides n pr) pr (cons n pr))) -(define (div n m) (equal? 0 (remainder n m))) -(define (divides n factors) - (if (null? factors) #f - (if (div n (first factors)) #t - (divides n (rest factors))))) - -(define primeso - (let ((hashed (java.util.ArrayList.))) - (define (set n l) (.add hashed n l) l) - - (.add hashed `()) - (.add hashed `()) - (.add hashed `(2)) - - (lambda (n) - (if (< n (.size hashed)) - (.get hashed n) - (begin - (.ensureCapacity hashed (+ n 1)) - (set n (sieve n (primes (- n 1))))))))) - -(define (accum-primes n sofar limit) - (if (> n limit) sofar - (accum-primes (+ n 1) (sieve n sofar) limit))) - -(define (primes limit) (accum-primes 2 () limit)) - -; alternative is to make a big or list by mapping -; factors to a list of procedures: (m1 m2 ..) -> ((div m1) (div m2) ...) - -(define (prime? n) (equal? n (first (primes n)))) - -(define (prime-factors n) - -`(define (factors n) - (define prime-factors (prime-factors n)) - ; now make all products including 1 but excluding n - ; this is a binary enumeration, basically -) - -(define (proper-divisors n) - - -(define (abundant? n) - (< n (apply + (factors n)))) - - -(define (weird? n) - ; get factors - ; check abundancy - ; is n a sum of any of its factors? - (define sum (apply + proper-divisors)) - (if (<= sum n) #f ; ie not abundant - (begin - (define discrep (- n sum)) - ; can we make discrep by summing divisors <= discrep - ) - ) -) \ No newline at end of file